Android有用的代码片段.doc_第1页
Android有用的代码片段.doc_第2页
Android有用的代码片段.doc_第3页
Android有用的代码片段.doc_第4页
Android有用的代码片段.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android有用的代码片段一、 获取系统版本号:javaview plaincopy1. PackageInfoinfo=this.getPackageManager().getPackageInfo(this.getPackageName(),0);2. intversionCode=nfo.versionCode3. stringversionName=info.versionNam 二、获取系统信息:javaview plaincopy1. StringarchiveFilePath=sdcard/download/Law.apk;/安装包路径2. PackageManagerpm=getPackageManager();3. PackageInfoinfo=pm.getPackageArchiveInfo(archiveFilePath,PackageManager.GET_ACTIVITIES);4. if(info!=null)5. ApplicationInfoappInfo=info.applicationInfo;6. StringappName=pm.getApplicationLabel(appInfo).toString();7. StringpackageName=appInfo.packageName;/得到安装包名称8. Stringversion=info.versionName;/得到版本信息9. Toast.makeText(test4.this,packageName:+packageName+;version:+version,Toast.LENGTH_LONG).show();10. Drawableicon=pm.getApplicationIcon(appInfo);/得到图标信息11. TextViewtv=(TextView)findViewById(R.id.tv);/显示图标12. tv.setBackgroundDrawable(icon); 三、获取安装路径和已安装程序列表javaview plaincopy1. (1)android中获取当前程序路径2. getApplicationContext().getFilesDir().getAbsolutePath()3. (2)android取已安装的程序列表4. ListpackageInfoList=getPackageManager().getInstalledPackages(0); 四、获取图片、应用名、包名javaview plaincopy1. PackageManagerpManager=MessageSendActivity.this.getPackageManager();2. ListappList=Utils.getAllApps(MessageSendActivity.this);3. for(inti=0;iappList.size();i+)4. PackageInfopinfo=appList.get(i);5. ShareItemInfoshareItem=newShareItemInfo();6. /setIcon7. shareItem.setIcon(pManager.getApplicationIcon(pinfo.applicationInfo);8. /setApplicationNameshareItem.setLabel(pManager.getApplicationLabel(pinfo.applicationInfo).toString();9. /setPackageNameshareItem.setPackageName(pinfo.applicationInfo.packageName);10. 五、解决listview上 Item上有按钮时 item本身不能点击的问题:javaview plaincopy1. 1.在item试图上面添加代码:android:descendantFocusability=blocksDescendants2. 2.在listview里添加代码android:focusable=true 六、不让文本框输入中文:htmlview plaincopy1. 在xml文件里面htmlview plaincopy1. android:digits=1234567890qwertyuiopasdfghjklzxcvbnm-=;,./!#$%*()_+:?&2. 这样就不会输入中文了。3. 七、获取屏幕宽高javaview plaincopy1. DisplayMetricsdisplayMetrics=newDisplayMetrics();2. this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);3. intheight=displayMetrics.heightPixels;4. intwidth=displayMetrics.widthPixels;5. 八、将TabWidget显示在屏幕下方javaview plaincopy1. 设置TabWidget的属性android:layout_alignParentBottom=true为了让tabHost显示在下方,要将RadioGroup的layout_gravity设置为bottom,再将FrameLayout的 layout_weight设置为1,这样就可以将RadioGroup撑到最下方。style=style/main_tab_bottom里面定义了样式文件 九、获取线程ID和线程名称:javaview plaincopy1. Log.v(,Thread.currentThread().getId()+Thread.currentThread().getName();2. 十、android中调用其它android应用javaview plaincopy1. ComponentNamecomp=newComponentName(com.Test,com.login.Main);2. intent=newIntent();3. intent.setComponent(comp);4. intent.setAction(ent.action.VIEW);5. startActivity(intent);6. 十一、禁止软键盘弹出javaview plaincopy1. EditText有焦点(focusable为true)阻止输入法弹出editText.setInputType(InputType.TYPE_NULL);/关闭软键盘2. 当EidtText无焦点(focusable=false)时阻止输入法弹出3. 4. InputMethodManagerimm=(InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);5. imm.hideSoftInputFromWindow(editText.getWindowToken(),0);6. 【Android】EditText标签调用键盘在xml文件中EditText标签有一个属性android:editable=false和android:numeric=integerandroid:numeric=integer表示只允许输入数字,此属性可以限制用户只能输入数字内容。android:editable表示是否可以输入内容TRUE表示可以输入,false表示不允许输入内容;当为android:editable=false时,点击输入框,虚拟键盘是显示不出来的,不过当设置了 android:editable=属性时,不管是false还是true,在其后加入android:numeric=integer属性时,是可以输入数字内容了;这里没搞明白是怎么回事,也许是numeric把前面的属性覆盖掉了。当android:editable=false时,在java类里如果再规定EditText.setEnabled(true)时,虚拟键盘还是不会显示的。 十二、模拟器的各种规格与分辨率对照:htmlview plaincopy1. 单位:像素2. WVGA854:854*4803. WVGA800:800*4804. HVGA:480*3205. QVGA:320*2406. WQVGA432:432*2407. WQVGA400:400*240 十三、调用Android其他Context的Activityjavaview plaincopy1. Contextc=createPackageContext(chroya.demo,Context.CONTEXT_INCLUDE_CODE|Context.CONTEXT_IGNORE_SECURITY);2. /载入这个类3. Classclazz=c.getClassLoader().loadClass(chroya.demo.Main);4. /新建一个实例5. Objectowner=clazz.newInstance();6. /获取print方法,传入参数并执行7. Objectobj=clazz.getMethod(print,String.class).invoke(owner,Hello);这个方法有两个参数:1、packageName 包名,要得到Context的包名2、 flags 标志位,有CONTEXT_INCLUDE_CODE和CONTEXT_IGNORE_SECURITY两个选项。 CONTEXT_INCLUDE_CODE的意思是包括代码,也就是说可以执行这个包里面的代码。CONTEXT_IGNORE_SECURITY的意思 是忽略安全警告,如果不加这个标志的话,有些功能是用不了的,会出现安全警告。 十四、android4.0Dialog风格小技巧4.0上如果还用Theme.Dialog,只能说很土,跟整体UI风格差别很大请使用android:theme=android:style/Theme.Holo.DialogWhenLarge 十五、程序中安装apk javaview plaincopy1. Intentintent=newIntent();2. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);3. intent.setAction(android.content.Intent.ACTION_VIEW);4. intent.setDataAndType(Uri.fromFile(“APK”),application/vnd.android.package-archive);5. startActivity(intent);其中“apk”为你要安装的那个文件。 十六、获取设备型号、SDK版本及系统版本javaview plaincopy1. Stringdevice_model=Build.MODEL;/设备型号2. Stringversion_sdk=Build.VERSION.SDK;/设备SDK版本3. Stringversion_release=Build.VERSION.RELEASE;/设备的系统版本 十七、图片分析功能javaview plaincopy1. publicvoidSharePhoto(StringphotoUri,finalActivityactivity)2. IntentshareIntent=newIntent(Intent.ACTION_SEND);3. Filefile=newFile(photoUri);4. shareIntent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file);5. shareIntent.setType(image/jpeg);6. StartActivity(Intent.createChooser(shareIntent,activity.getTitle();7. 十八、linux关机命令在Windows下,按着电源键4秒强制关机,在Linux下强烈不建议这么做。Windows由于是单用户、“假多”任务的情况,所以即使你的计算机关机,也不会对别人造成影响。不过在Linux中,由于每个程序都是在后台执行的,因此,在你看不到的屏幕背后可能有很多人同时在你的主机上工作。而且,若不正常关机可能会造成文件系统的损毁。所以,正常情况下,要关机时需要注意下面几件事情:(1)查看系统的使用状态。要看目前有谁在线,可以用who命令。要看网络的联机状态,可以用netstat-a命令。要看后台执行那个的程序可以执行ps-aux命令。(2)通知在线用户的关机时刻这个时候可以使用shutdown命令javaview plaincopy1. Shutdown命令:2. 语法:shutdown-t秒-arkhncfF时间警告消息3. -t:后面加描述表示过几秒之后关机。4. -k:不是真的关机,仅仅发出警告消息。5. -r:将系统服务停掉之后重启。6. -h:将系统服务停掉之后立即关机。7. -f:关机并开机之后,强制跳过fsck的磁盘检查。8. -F:系统重启之后,强制进行fsck的磁盘检查。9. -c:取消已经进行的shutdown命令内容。10. 11. 另外,重启关机命令有reboot、halt、poweroff。其实在默认情况下,都完成一样的工作。12. halt先调用shutdown,而shutdown最后调用halt。不过,shutdown可以根据目前已经启动的服务来逐次关闭服务后才关机;而halt能够在不理会目前系统情况下,进行硬件关机的特殊功能。13. 14. 除了这些,还有一个关机命令是init015. init是切换执行等级的命令。Linux共有7种执行等级,比较重要的是下面4种等级:16. runlevel0:关机17. runlevel3:纯命令行模式18. runlevel5:含有图形界面模式19. runlevel6:重启 十九、让自己的应用不被kill掉可以在frameworksbaseservicesjavacomandroidserveramActivityManagerService.java这个类的forceStopPackage中加一个条件:javaview plaincopy1. publicvoidforceStopPackage(finalStringpackageName)2. if(checkCallingPermission(android.Manifest.permission.FORCE_STOP_PACKAGES)3. !=PackageManager.PERMISSION_GRANTED)4. Stringmsg=PermissionDenial:forceStopPackage()frompid=5. +Binder.getCallingPid()6. +,uid=+Binder.getCallingUid()7. +requires+android.Manifest.permission.FORCE_STOP_PACKAGES;8. Slog.w(TAG,msg);9. thrownewSecurityException(msg);10. 11. longcallingId=Binder.clearCallingIdentity();12. try13. IPackageManagerpm=ActivityThread.getPackageManager();14. intpkgUid=-1;15. synchronized(this)16. try17. pkgUid=pm.getPackageUid(packageName);18. catch(RemoteExceptione)19. 20. if(pkgUid=-1)21. Slog.w(TAG,InvalidpackageName:+packageName);22. return;23. 24. /begin:加入一个判断条件25. if(packageName.equals(你的进程名)26. return;27. 28. /end:加入一个判断条件forceStopPackageLocked(packageName,pkgUid);29. 30. finally31. Binder.restoreCallingIdentity(callingId);32. 33. 这样的话在任务管理器里可以保证KISS不掉的;还有在这个方法上还有个方法clearApplicationUserData中保证如果是该进程就不让调用forceStopPackage()方法。另:其他方法:1,首先在你的service的onDestory方法里面写上启动你自己的代码,为什么要写这个?因为如果用户是在设置-应用程序-正在运行服务这里面杀掉你service的话会调用到onDestory方法的,这里就可以启动了,2:监听屏幕关闭广播,屏幕已关闭,就启动服务。3:监听屏幕解锁广播,一样的道理,这样,基本上,你的service就达到永不停止了。对用户来说有点变态,但很多软件都这样。二十、EditText获取焦点:javaview plaincopy1. EditText.requestFoucus()二十一、获取手机屏幕分辨率javaview plaincopy1. DisplayMetricsdm=newDisplayMereics();2. 3. getWindowManager().getDefaultDisplay().getMetrics(dm);4. 5. floatwidth=dm.widthPixels*dm.density;6. 7. floatheight=dm.heightPixels*dm.density在这里问什么要乘以dm.density 了,是因为通过dm.widthPixels的到的结果始终是320,不是真实的屏幕分辨率,所以要乘以dm.density得到真实的分辨率。 二十二、在Activity里面播放背景音乐javaview plaincopy1. publicvoidonCreate(BundlesavedInstanceState)2. super.onCreate(savedInstanceState);3. setContentView(R.layout.mainlay);4. mediaPlayer=MediaPlayer.create(this,R.raw.mu);5. mediaPlayer.setLooping(true);6. mediaPlayer.start();7. 8. 二十三、让程序的界面不随机器的重力感应而翻转 第一种方法,在manifast文件里面htmlview plaincopy1. 3. 第二种,在代码里面javaview plaincopy1. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 二十四、使activity全屏显示javaview plaincopy1. requestWindowFeature(Window.FEATURE_NO_TITLE);2. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,3. WindowManager.LayoutParams.FLAG_FULLSCREEN); 二十五、在RelativeLayout中使selector要注意点 关于selector的使用方法,可以参考/aomandeshangxiao/article/details/6759576这篇文章,今天,遇到在RelativeLayout中添加background为selector后没有反应的问题,寻摸了很长时间,一直没有找到原因,其实只要加上一句代码就完全可以解决:javaview plaincopy1. RelativeLayout里面加上android:clickable=true这样,RelativLayout就会出现在selector里面定义的效果。 二十六、显示或隐藏虚拟键盘javaview plaincopy1. 显示:2. InputMethodManagerimm=(InputMethodManager)(getSystemService(Context.INPUT_METHOD_SERVICE);3. imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);4. 5. 隐藏:6. InputMethodManagerimm=(InputMethodManager)(getSystemService(Context.INPUT_METHOD_SERVICE);7. imm.hideSoftInputFromWindow(m_edit.getWindowToken(),0);二十七、退出程序时清除通知中信息 javaview plaincopy1. NotificationManagernm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);2. nm.cancelAll(); 二十八、创建快捷方式javaview plaincopy1. Intentintent=newIntent();2. /设置快捷方式的图标3. intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(this,R.drawable.img);4. /设置快捷方法的名称5. intent.putExtra(Intent.EXTRA_SHORTCUT_NAME,点击启动哥的程序);/设置点击快键图标的响应操作javaview plaincopy1. intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,newIntent(this,MainActivity.class);2. /传递Intent对象给系统3. setResult(RESULT_OK,intent);4. finish(); 二十九、获取文件中的类名:javaview plaincopy1. Stringpath=context.getPackageManager().getApplicationInfo(2. context.getPackageName(),0).sourceDir;3. DexFiledexfile=newDexFile(path);4. Enumerationentries=dexfile.entries();5. while(entries.hasMoreElements()6. Stringname=(String)entries.nextElement();7. .8. 三十. TextView中的getTextSize返回值是以像素(px)为单位的,而setTextSize()是以sp为单位的.所以如果直接用返回的值来设置会出错,解决办法是:用setTextSize()的另外一种形式,可以指定单位:javaview plaincopy1. TypedValue.COMPLEX_UNIT_PX:Pixels2. TypedValue.COMPLEX_UNIT_SP:ScaledPixels3. TypedValue.COMPLEX_UNIT_DIP:DeviceIndependentPixels三十一. 在继承自View时,绘制bitmap时,需要将图片放到新建的drawable-xdpi中,否则容易出现绘制大小发生改变三十二. 在文字中加下划线: textView.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);三十三. scrollView是继承自frameLayout,所以在使用LayoutParams时需要用frameLayout的三十四、android阴影字体设置htmlview plaincopy1. android:shadowColor 阴影颜色android:shadowDx 阴影的水平偏移量android:shadowDy 阴影的垂直偏移量android:shadowRadius 阴影的范围为了统一风格和代码的复用,通常可以把这个样式抽取放入到style.xml文件中htmlview plaincopy1. 2. 3. 4. #ff0000ff5. 106. 57. 58. 9. htmlview plaincopy1. 三十五、android实现手机震动功能javaview plaincopy1. importandroid.app.Activity;2. importandroid.app.Service;3. importandroid.os.Vibrator;4. 5. publicclassTipHelper6. publicstaticvoidVibrate(finalActivityactivity,longmilliseconds)7. Vibratorvib=(Vibrator)activity.getSystemService(Service.VIBRATOR_SERVICE);8. vib.vibrate(milliseconds);9. 10. publicstaticvoidVibrate(finalActivityactivity,longpattern,booleanisRepeat)11. Vibratorvib=(Vibrator)activity.getSystemService(Service.VIBRATOR_SERVICE);12. vib.vibrate(pattern,isRepeat?1:-1);13. 14. 还需要在AndroidManifest.xml 中添加震动权限:htmlview plaincopy1. 通过上面操作,我们可以使用TipHelper所定义的函数了。两个Vibrate函数的参数简单介绍如下:final Activity activity :调用该方法的Activity实例long milliseconds :震动的时长,单位是毫秒long pattern :自定义震动模式 。数组中数字的含义依次是静止时长,震动时长,静止时长,震动时长。时长的单位是毫秒boolean isRepeat: 是否反复震动,如果是true,反复震动,如果是false,只震动一次三十六、常用的正则表达式 w-+(.w-+)*w-+(.w-+)+$/email地址 a-zA-z+:/(w+(-w+)*)(.(w+(-w+)*)*(?S*)?$/url (d2|d4)-(0(1-91)|(11|2)-(0-2(1-91)|(30|1)$/年-月-日 (0(1-91)|(11|2)/(0-2(1-91)|(30|1)/(d2|d4)$ /月/日/年 (w-.+)(0-91,3.0-91,3.0-91,3.)|(w-+.)+)(a-zA-Z2,4|0-91,3)(?)$ /Emil (+?0-92,4-0-93,4-)|(0-93,4-)?(0-97,8)(-0-9+)?$ /电话号码 (d1,2|1dd|20-4d|250-5).(d1,2|1dd|20-4d|250-5).(d1,2|1dd|20-4d|250-5).(d1,2|1dd|20-4d|250-5)$ /IP地址 (s*)|(s*$) / 首尾空格 a-zA-Za-zA-Z0-9_4,15$ / 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线) 1-9*1-90-9*$ / 腾讯QQ号三十七、输入框不挤压activity布局:在manifest文件activity下 加:htmlview plaincopy1. android:windowSoftInputMode=adjustPan三十八、listview中item中button可点击:htmlview plaincopy1. android:descendantFocusability=blocksDescendants三十九、获取移动设备的IP地址:javaview plaincopy1. publicclassTools2. publicstaticStringgetLocalIpAddress()3. try4. for(Enumerationen=NetworkInterface.getNetworkInterfaces();en.hasMoreElements();)5. NetworkInterfaceintf=en.nextElement();6. for(EnumerationenumIpAddr=intf.getInetAddresses();enumIpAddr.hasMoreElements();)7. InetAddressinetAddress=enumIpAddr.nextElement();8. if(!inetAddress.isLoopbackAddress()9. returninetAddress.getHostAddress().toString();10. 11. 12. 13. catch(SocketExceptionex)14. Log.e(出错啦,ex.toString();15. 16. returnnull;17

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论