每次更新一打开发小技巧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应用中返回键的监听及处理
- super.onBackPressed()会自动调用finish()方法,关闭 当前Activity,若要屏蔽Back键盘,注释该行代码即可
@Override
public void onBackPressed() {
super.onBackPressed();
System.out.println("按下了back键 onBackPressed()");
}
- 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