一. gridview去除item点击效果的方法:
1.代码中--> mGridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
2.xml中--> android:listSelector="@null"
二.判断是全新安装还是更新
if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) { if (!intent.getBooleanExtra(Intent.EXTRA_REPLACING, false){
// 全新安装
}
三.Dialog属性设置
// 设置点击外部区域退出dialog
setCanceledOnTouchOutside(true);
//设置显示在底部
Window window = getWindow();
window.setGravity(Gravity.BOTTOM); //设置dialog宽度为屏幕宽度
window.getDecorView().setPadding(0, 0, 0, 0);
WindowManager.LayoutParams lp = window.getAttributes();
lp.width = WindowManager.LayoutParams.FILL_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
window.setAttributes(lp);
但是Dialog的显示依赖于Activity,所以不能在其它应用的界面上弹出Dialog.如果需要在任何情况下都能弹出悬浮框可以通过下面两种方法实现:
1. 通过WindowManager的addView, removeView, dispatchKeyEvent和onInterceptTouchEvent方法可以实现Dialog所有功能. 其中dispatchKeyEvent方法用来监听返回键等按键的按下事件, onInterceptTouchEvent可以实现点击悬浮窗其它地方隐藏的功能.
2. 使用一个背景是透明的Activity,在Activity中弹出Dialog
不管从功能的扩展和性能的高低上,我比较推荐第一种方法.
四.获取屏幕宽高
android获取屏幕的高度和宽度用到WindowManager这个类,两种方法:
1 、WindowManager wm = (WindowManager) getContext()
.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
2 、WindowManager wm = this .getWindowManager();
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight(); 五.ServiceService:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。
既然这样,那么我们为什么要用 Service 呢?其实这跟 android 的系统机制有关,我们先拿Thread 来说。Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用。另一方面,你没有办法在不同的 Activity 中对同一 Thread 进行控制。
举个例子:如果你的 Thread 需要不停地隔一段时间就要连接服务器做某种同步的话,该 Thread 需要在 Activity 没有start的时候也在运行。这个时候当你 start 一个 Activity 就没有办法在该 Activity 里面控制之前创建的 Thread。因此你便需要创建并启动一个 Service ,在 Service 里面创建、运行并控制该 Thread,这样便解决了该问题(因为任何 Activity 都可以控制同一 Service,而系统也只会创建一个对应 Service 的实例)。
因此你可以把 Service 想象成一种消息服务,而你可以在任何有 Context 的地方调用Context.startService、Context.stopService、Context.bindService,Context.unbindService,来控制它,你也可以在 Service 里注册 BroadcastReceiver,在其他地方通过发送 broadcast 来控制它,当然这些都是 Thread 做不到的。
六.LoadMode
&&android:taskAffinity
standard; singleTop; singleTask; singleInstance;
android:taskAffinity:当前activity是放在哪个任务栈里面