android 开发小贴士3

android:animateLayoutChanges
一直以为 Lollipop Dialer 接通画面里面那些酷炫的动画(文字部分)是很复杂的做出来的,后来发现其实只有一行。
视频 演示:https://dl.pushbulletusercontent.com/N75Bx03taJzFVjjLkMpzzyqGKT8m5PpH/cm_trltexxLMY48Gyilun07312015153119.mp4
只需要加好 android:animateLayoutChanges=”true” 然后 setVisibility 就可以了

清除画布上的内容:canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
在自定义View的onDetachedFromWindow方法中清理与View相关的资源;
Fragment在onAttach方法中接收回调:

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mPageSelectedListener = (PageSelectedListener) activity;
mMenuBtnOnclickListener = (MenuBtnOnClickListener) activity;
mCommitBtnOnClickListener = (CommitBtnOnClickListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + “must implements listener”);
}
}
使用ClipDrawable实现进度条功能;
自定义view中的getContext(),再也不需要专门创建一个mContext全局对象了;
自定义手写view的时候,在手指移动的过程中通过MotionEvent | Android Developers对象的getHistorySize()获得缓存的历史点,绘制出来的曲线要平滑很多。
复写Activity的onUserLeaveHint方法,确保用户离开界面时能够立即暂停界面中的一些任务,关于onUserLeaveHint的更多作用可以谷歌:android - Google 搜索
值得借鉴的点击两次退出应用的实现:Android关于双击退出应用的问题
没那么麻烦,直接用toast的getView().getParent() 判断是不是空就ok了。API 16 测试通过

public class MainActivity extends Activity {

private Toast toast;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toast = Toast.makeText(getApplicationContext(), "确定退出?", 0);

}
public void onBackPressed() {
    quitToast();
}
/*
public boolean onKeyDown(int keyCode, KeyEvent event) {
    System.out.println(keyCode + "...." + event.getKeyCode());
    if(keyCode == KeyEvent.KEYCODE_BACK){
        quitToast();
    }
    return super.onKeyDown(keyCode, event);
}
*/
private void quitToast() {
    if(null == toast.getView().getParent()){
        toast.show();
    }else{
        System.exit(0);
    }
}

}

TimingLogger,SDK自带打印时间戳工具,简直神器。

摘自官方文档:
A utility class to help log timings splits throughout a method call. Typical usage is:

TimingLogger timings = new TimingLogger(TAG, “methodA”);

AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。这个类在AsyncTask中用到了。
etUserVisibleHint getUserVisibleHint 判断fragment是否可见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值