关于安卓的20个小知识

1、判断sd卡是否存在
 
 boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
 
2、TextView部分文字设置颜色
 
 TextView tv = new TextView(this);
 //添加css样式
 tv.setText(Html.fromHtml("<font color="#ff0000">红色</font>其它颜色"));
 
3、替换数据库某字段中某些字符的方法:
 
 update table set spell=replace(spell,'ɡ','g')
 
4、单选按钮默认选中:
 
 mRadioGroup.check(mRadioButton_1.getId());
 
下拉列表默认选中:
 
 for(int j = 0;j < cities.length;j ++){
     if(months[j].equals("武汉")){
         mSpinner_m.setSelection(j);
     }
 }
 
5、TextView中嵌套图片:
 
 Drawable draw = getResources().getDrawable(R.drawable.ji_dot_nor);
 textView.setCompoundDrawablesWithIntrinsicBounds(null, draw, null, null);  
 
6、ListView去掉下拉条:
 
方法一:在xml属性中设置
 
 android:scrollbars="none"
 方法二:在代码中设置:
 
 listView.setVerticalScrollBarEnabled(false);
 
7、设置Activity的风格:
 
 //将Activity设置成半透明的效果
 android:theme="@android:style/Theme.Translucent"  
 //将Activity设置成对话框的样式  
 android:theme="@android:style/Theme.Dialog"  <span style="font-family: Arial, Helvetica, sans-serif; white-space: normal; ">  <wbr>  <wbr> </wbr></wbr></span>
 
8、创建一个背景模糊的Widow,且将对话框放在前景
 
 Window window = dialog.getWindow();
 window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);  
 
9、list滚动时出现黑色底的问题:
 
解决方法:
 方法一:
 在XML中设置android:cacheColorHint="#00000000"
 
方法二:
 在代码中设置listView.setCacheColorHint(0);
 
10、编辑框中指定输入的类型,设置属性digits即可:
 
例:只允许输入数字
 android:digits="0123456789"  或  android:digits="integer"   或  android:digits="num"
 
11、利用反射机制,获取drawable文件夹下的图片名称:
 
 Field[] fields = R.drawable.class.getDeclaredFields();
 for(Field field:fields){
     if(!"icon".equals(field.getName())){
         sb.append(field.getName() + "\t");
     }
 }
 mTextView.setText(sb.toString());
 
12、缓冲流播放MP3:
 
 MediaPlayer player = new MediaPlayer();
 try {
     player.setDataSource(WebMusic.this, Uri.parse("http://stream15.a8.com/a8space/2010/12/30/2010123002225125942.mp3"));
     player.prepare();
     player.start();
 } catch (IllegalArgumentException e) {
     e.printStackTrace();
 } catch (SecurityException e) {
     e.printStackTrace();
 } catch (IllegalStateException e) {
     e.printStackTrace();
 } catch (IOException e) {
     e.printStackTrace();
 }
 
13、下面的代码可以用来点亮屏幕:
 
 PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);
 mWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.SCREEN_DIM_WAKE_LOCK, "SimpleTimer");
 mWakelock.acquire();
 ...............
 mWakelock.release();
 
下面的代码用来屏幕解锁:
 
 KeyguardManager keyguardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
 KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("");
 BkeyguardLock.disableKeyguard();
 
使用这两段代码,需要在AndroidManifest文件中加入以下权限:
 
 <uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission>
 <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
 
14、android 跑马灯效果做如下设置即可:
 
 android:scrollHorizontally="true"    
 android:marqueeRepeatLimit="marquee_forever"    
 android:ellipsize="marquee"    
 android:focusable="true"    
 android:focusableInTouchMode="true"    
 android:singleLine="true"
 
15、拦截短信:
     当android系统接收到短信时,会发送一个广播BroadcastReceiver,这个广播是以有序广播的形式发送的。
     所谓的有序广播就是广播发出后,接收者是按照设置的优先级一个一个接着接收,前面的接收者可以选择是否终止这条广播以使后面的接收者接收不到,而普遍广播发送 后所有的接收者都能同时接到,但是不能终止这条广播,也不能将它的处理结果传递给下个接收者。
     sms拦截就是通过实现一个BroadcastReceiver并将其的优先级设置的比系统sms接收者高。
     android:priority就是设置优先级的,设置为100即可:
 
  <receiver android:name="InterceptSMS">
     <intent-filter android:priority="100">
         <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
     </intent-filter>
 </receiver>
 
16、如果在文件夹下选择视频文件时,想调用自己的播放器,需要在Manifest.xml中设置过滤器,设置如下:
 
  <intent-filter>
     <action android:name="android.intent.action.VIEW" />
     <category android:name="android.intent.category.DEFAULT"/>
     <data android:mimeType="video/*"/>
 </intent-filter>
 
如果想在浏览器中调用自己的播放器,设置如下:
 
 <intent-filter>
     <action android:name="android.intent.action.VIEW" />
     <category android:name="android.intent.category.DEFAULT"/>
     <category android:name="android.intent.category.BROWSABLE" />
     <data android:mimeType="video/*" android:scheme="http"/>
 </intent-filter>
 
 
 
如果两者都要实现的话,就必须配两个过滤器。
 
17、显示图片时,用mImageView.setScaleType(ImageView.ScaleType.FIT_XY); 可以填充整个区域。
 
18、保持屏幕长开:
 
 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
 
开启、关闭屏幕时发送的广播:
 
 <receiver android:name=".MyBroadcastReceiver" android:enabled="true">                 
     <intent-filter>                       
         <action android:name="android.intent.action.ACTION_SCREEN_ON"></action>                           
         <action android:name="android.intent.action.ACTION_SCREEN_OFF"></action>                 
     </intent-filter>          
 </receiver>
 
19、判断一个intent是否可用:
 
 public static boolean isIntentAvailable(Context context, String action) {
     final PackageManager packageManager = context.getPackageManager();
     final Intent intent = new Intent(action);
     List<ResolveInfo> list = packageManager.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);
     return list.size() > 0;
 }  
 
 上述代码判断action的intent是否可用
 (备注,也可以得到相应intent的应用程序信息)
 
 我们可以根据scanAvailable 来判断是否让用户操作来发送该intent:
 
 boolean bool = isIntentAvailable(gallery.this,ACTION);
 if(bool){
     Intent intent = new Intent(ACTION);
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     startActivity(intent);
 }
 
20、获取所有桌面应用的图标:
 
 private List<Drawable> getImage(){
     PackageManager packageManager = this.getPackageManager();
     Intent intent = new Intent(Intent.ACTION_MAIN);
     intent.addCategory(Intent.CATEGORY_LAUNCHER);
     List<ResolveInfo> infos = packageManager.queryIntentActivities(intent, 0);
     for(ResolveInfo info : infos){
         ActivityInfo ai = info.activityInfo;
         Drawable icon = ai.loadIcon(packageManager);
         list.add(icon);
     }
     return list;
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值