Android 开发经验Tips(4)

每次更新一打开发小技巧O(∩_∩)O~

1. 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion

理想上,在稳定状态下三者的关系应该更像这样:

minSdkVersion (lowest possible) <= 
    targetSdkVersion == compileSdkVersion (latest SDK)

用较低的 minSdkVersion 来覆盖最大的人群,用最新的 SDK 设置 target 和 compile 来获得最好的外观和行为。

2. notification.setLatestEventInfo在6.0被弃用的替代方法

Notification.Builder builder = new Notification.Builder(mContext);
        builder.setContentTitle(title);
        builder.setContentText(text);
        builder.setSmallIcon(R.drawable.icon);
        builder.setContentIntent(pendingIntent);
        builder.setWhen(System.currentTimeMillis());
        builder.setVibrate(vibrate);
        Notification notification = builder.getNotification();
        notification.flags = Notification.FLAG_AUTO_CANCEL;
        notification.defaults |= Notification.DEFAULT_VIBRATE;
...

3. FloatMath.sqrt()找不到

改为 (float)Math.sqrt()

4. LocalBroadcastManager

Android v4 兼容包提供android.support.v4.content.LocalBroadcastManager工具类,帮助大家在自己的进程内进行局部广播发送与注册,使用它比直接通过sendBroadcast(Intent)发送系统全局广播有以下几点好处。
1因广播数据在本应用范围内传播,你不用担心隐私数据泄露的问题。
2不用担心别的应用伪造广播,造成安全隐患。
3相比在系统内发送全局广播,它更高效。

广播注册:

LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(getActivity());
   IntentFilter filter = new IntentFilter();
   filter.addAction(ACTION);
   myBroadcastReciver = new MyBroadcastReciver();
   localBroadcastManager.registerReceiver(myBroadcastReciver, filter);

广播发送:

   Intent intent = new Intent();
   intent.setAction(SaleLeftFragment.ACTION);
   intent.putExtra(TAG, data);
   LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);

使用注意,请关注以下几点:
1).LocalBroadcastManager注册广播只能通过代码注册的方式。
2).LocalBroadcastManager注册广播后,一定要记得取消监听。
3).重点的重点,使用LocalBroadcastManager注册的广播,您在发送广播的时候务必使用LocalBroadcastManager.sendBroadcast(intent);否则您接收不到广播。

5. 设置dialog全屏的方法

        // 设置全屏
        WindowManager.LayoutParams p = this.getWindow().getAttributes();
        // 设置为屏幕宽高
        p.width = UtilPhoneParam.screenWidth;
        p.height = UtilPhoneParam.screenHeight;
        this.getWindow().setAttributes(p);

6. 使用RelativeLayout 水平居中等分

            

                

7. 在代码中修改Shape的solid属性的color值

GradientDrawable drawable =(GradientDrawable)view.getBackground();
drawable.setColor(getResources().getColor(color));

8. 使用shape来设置列表分割线




注意列表背景色background的设置

9. 依赖排除

排除com.kevin:crop:1.0.2中的v7包,使用项目app中引入的v7

    compile('com.kevin:crop:1.0.2') {
        exclude group: 'com.android.support', module: 'appcompat-v7'
    }

10. 设置某个方向上TextView的drawable

tvText.setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(R.drawable.icon),null,null,null);

11. android:clipToPadding的使用

主要用途:常常用于paddingTop,假设 内部有个属性设置了paddingTop,但是滑动的时候paddingTop的空间无法一起滑动则使用该属性
如设置

Android:clipToPadding=false

可以使列表的paddingTop跟随着一起滑动。

12. Android应用中返回键的监听及处理

  1. super.onBackPressed()会自动调用finish()方法,关闭 当前Activity,若要屏蔽Back键盘,注释该行代码即可
        @Override  
        public void onBackPressed() {  
            super.onBackPressed();  
            System.out.println("按下了back键   onBackPressed()");         
        }  
          
  1. onKeyDown 返回值表示:是否能完全处理该事件在此处返回false,所以会继续传播该事件.在具体项目中此处的返回值视情况而定.
@Override  
        public boolean onKeyDown(int keyCode, KeyEvent event) {  
            if ((keyCode == KeyEvent.KEYCODE_BACK)) {  
                 System.out.println("按下了back键   onKeyDown()");   
                 return false;  
            }else {  
                return super.onKeyDown(keyCode, event);  
            }  
              
        }  

其他相关文章

Android 开发经验Tips(1) http://www.jianshu.com/p/c2c8ccd53636
Android 开发经验Tips(2) http://www.jianshu.com/p/21bc9c2a6563
Android 开发经验Tips(3) http://www.jianshu.com/p/79c417568075

你可能感兴趣的:(Android 开发经验Tips(4))