Android开发小技巧

1、android 跑马灯效果做如下设置即可:
android:scrollHorizontally="true"    
android:marqueeRepeatLimit="marquee_forever"    
android:ellipsize="marquee"    
android:focusable="true"    
android:focusableInTouchMode="true"    
android:singleLine="true"

2、创建一个背景模糊的Widow,且将对话框放在前景

Window window = dialog.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);  


3、判断sd卡是否存在

boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);


4、获取所有桌面应用的图标:

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;
}

5、获取UI控件的宽、高:

在前面几个周期函数中都无法获取宽度和高度值,但在事件中或用定时器可以获取,如下:

public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
         
     text = (TextView) findViewById(R.id.text);
     btn = (Button) findViewById(R.id.btn);       
     btn.setOnClickListener(new Button.OnClickListener(){
         @Override
         public void onClick(View v) {
             int width = text.getWidth();
             int height = text.getHeight();
             Log.i("Log: ", "----------->"+width + " | " + height);
         }
     });
}

6、保持屏幕长开:
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>

7、判断某一服务是否在运行:

//serviceName:即包名+服务的名称
//return:某一服务正在运行,返回true,否则返回false
public  boolean isRunning(Context c,String serviceName){
     ActivityManager myAM=(ActivityManager)c.getSystemService(Context.ACTIVITY_SERVICE); 
     ArrayList<RunningServiceInfo> runningServices = (ArrayList<RunningServiceInfo>)myAM.getRunningServices(40);
     //获取最多40个当前正在运行的服务,放进ArrList里
     for(int i = 0 ; i<runningServices.size();i++){  //循环枚举对比
         if(runningServices.get(i).service.getClassName().toString().equals(serviceName)){
             return true;
         }
     }
     return false;
}


8、拦截短信:
     当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>

9、如果在文件夹下选择视频文件时,想调用自己的播放器,需要在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>
如果两者都要实现的话,就必须配两个过滤器。


10、下面的代码可以用来点亮屏幕:

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>


11、 让EditText不自动获取焦点:

 <activity
          ……
          ……android:windowSoftInputMode="stateAlwaysHidden|adjustResize" >
</activity>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值