1、设置窗口格式为半透明

getWindow().setFormat(PixelFormat.TRANSLUCENT);

2、Android中在非UI线程里更新View的不同方法:

* Activity.runOnUiThread( Runnable )
* View.post( Runnable )
* View.postDelayed( Runnable, long )
* Hanlder

3、取得屏幕大小

方法A:

WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
hAndW[0] = display.getWidth();
hAndW[1] = display.getHeight();

方法B:

DisplayMetrics dm = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm);

hAndW[0] = dm.widthPixels;
hAndW[1] = dm.heightPixels;

4、取得内存大小

ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo();

activityManager.getMemoryInfo(outInfo);

//可用内存

outInfo.availMem

//是否在低内存状态

outInfo.lowMemory

取得ScrollView的实际高度

scrollview.getHeight()
scrollview.getMeasuredHeight()
scrollview.compute()
scrollview.getLayoutParams().height


5、监听App安装/卸载事件

A.Define a class derived from class BroadcastReceiver;
B.Register broadcast receiver;
MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();

IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_INSTALL);
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addAction(Intent.ACTION_PACKAGE_ADDED);
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addAction(Intent.ACTION_PACKAGE_RESTARTED);
...
filter.addDataScheme("package"); //This line is very important. Otherwise, broadcast can't be received.

registerReceiver(myReceiver, filter);

Notes: The package name is Intent.mData. Intent.mData is not available in SDK 1.0, but it can be retrieved by calling Intent.getDataString();

6、取得IP地址

A.Connect via WIFI
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
B.Connect via GPRS
public String getLocalIpAddress(){
try{
for(Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();){
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();){
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()){
return inetAddress.getHostAddress().toString();
}
}
}
}catch (SocketException ex){
Log.e(S.TAG, ex.toString());
}
return null;
}

7、Monitor File System Event: Open/Create..
android.os.FileObserver

8、Monitor Media Event: mount/unmount..

A.Define a class derived from class BroadcastReceiver;
B.Register broadcast receiver;
MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();

IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
filter.addAction(Intent.ACTION_MEDIA_EJECT);
...
filter.addDataScheme("file"); //This is important. Otherwise, broadcast can't be received

registerReceiver(myReceiver, filter);

About other broadcast actions for media, and extra data bind to the intent, please refer to http://developer.android.com/reference/android/content/Intent.html (please search ACTION_MEDIA_ on this web page)
Notes: The path of mounted media is Intent.mData. Intent.mData is not available in SDK 1.0, but it be retrieved by calling Intent.getDataString();

9、ListView 后面adapter数据已更改,但是ListView没有收到Notification

首先,必须将 更新adapter数据的代码放在:Handler.post(Runnable)方法中执行;

然后,如果Adapter数据的来源如果是cursor(CursorAdapter)的话 可以cursor.requery一下,如果是别的可以强制调用一下notifyChange, notifyChange 会调用 invalidate 进行重绘;

更多相关文章

  1. Android 驱动之旅 第四章:在Android 系统中编写JNI 方法在应用程
  2. 一种绕过Android P对非SDK接口限制的简单方法
  3. Android获取SD卡路径/内存的几种方法
  4. 【Android增量升级系列_02】 浅谈Android增量更新服务端的实现方
  5. Android音频口数据通信开发;通过静态分析工具了解IPA实现 -- iOS/
  6. Android 内存浅析【一】【管理、机制、分析】
  7. android 可用内存的阀值
  8. Facebook推出强大Android图片库Fresco 自动释放内存 图片缓存 内

随机推荐

  1. Android自定义控件中常见的方法
  2. Android应用开发相关下载资源
  3. Android(安卓)Studio错误:Connect to 127.
  4. android保存log信息
  5. ]Android(安卓)ADT SDK API 说明
  6. android实现录屏功能
  7. Android中如何获取应用版本号
  8. Android(安卓)隐藏APP图标
  9. Android万能分辨率适应法
  10. Android(安卓)在定义string的xml文件中插