1 PendingIntent
//getBroadcast, getActivity, getService //PendingIntent 很有用.
2 Application
除了实现代码之外, 要在xml 里写上
<application
android:name="com.cableex.app.XXApp"
3 Thread
3.1 创建线程方法 //也能直接集成Thread写.
new Thread(new new Runnable() {
public void run() {
//do sth
}
}).start();
3.2 线程中更新UI
new Thread(new Runnable() {
public void run() {
//...
mTextView.post(new Runnable() {
@Override
public void run() {
mTextView.setText("text");
}
});
}
}).start();
3.3 线程中更新UI
new Thread(new Runnable() {
public void run() {
//...
mHandler.post(new Runnable() {
@Override
public void run() {
mTextView.setText("text");
}
});
}
}).start();
3.4 异步
private class DoAsyncTask extends AsyncTask<Void, Integer, Void> {
protected Void doInBackground(Void... params) {
for(int i=0; i < 1000; i++) {
publishProgress(i); //这行用于和onProgressUpdate通信???
}
return null;
}
protected void onProgressUpdate(Integer... progress) {
//do stn
}
}
3.5 Handler & Message //创建Message时 , 使用mHandler.obtainMessage();
//代码省略.
4 ProgressBar 横向
<ProgressBar
style="@android:style/Widget.ProgressBar.Horizontal />
5 隐藏键盘
View view = fragmentActivity.getWindow().peekDecorView();
if (view != null) {
InputMethodManager inputmanger = (InputMethodManager) fragmentActivity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputmanger.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
6 圆形背景
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android= "http://schemas.android.com/apk/res/android"
android:shape= "oval"
android:useLevel= "false" >
<solid android:color= "@color/red" />
<stroke
android:width= "1dp"
android:color= "@color/white" />
<size android:width= "20dp"
android:height= "20dp" />
</shape>
7 View可见后的处理
有时候需要知道显示View的尺寸,但是View是从隐藏状态变为可见状态的, 这时候如果直接在setVisible(Visible) 后加上获取尺寸,结果会为0, 那么就用下面的方法解决:
mFaceRoot = (EmojiKeyboard) getActivity().findViewById(R.id.face_ll);
//faceroot gone -> visible , getHigh
ViewTreeObserver vto = mFaceRoot.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
// TODO Auto-generated method stub
if(mFaceRootHeight == 0 && mFaceRoot.getMeasuredHeight() != 0) {
mFaceRootHeight = mFaceRoot.getMeasuredHeight(); //这里获取View的尺寸
Intent _i = new Intent("sendFaceRootHigh");
getActivity().sendBroadcast(_i); //发广播
}
return true; //return false 没显示了.
}
});
http://www.cnblogs.com/wt616/archive/2012/05/11/2496180.html //参考
8 获取屏幕尺寸
转 http://blog.youkuaiyun.com/null1989/article/details/9963421
//If you want the the display dimensions in pixels you can use getSize:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
//If you're not in an Activity you can get the default Display via WINDOW_SERVICE:
WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
//Before getSize was introduced (in API level 13), you could use the getWidth and getHeight methods that are now deprecated:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
9 Timer and TimerTas
2. Timer and TimerTask
//参考 http://blog.youkuaiyun.com/hudashi/article/details/6930304
//Timer 有自己的线程运行, 每次运行都需要用新的.
Timer timer = new Timer(true);
TimerTask task = new TimerTask(){
public void run() {
//mTimer.cancel();
L.e("on time");
Message message = mHandler.obtainMessage();
message.what = 1;
mHandler.sendMessage(message);
}
};
10 ContentProvider limit
转:http://blog.youkuaiyun.com/forever_crying/article/details/8667324
- String limit = item_favorites.Columns.MODIFIED + " desc limit 20 offset 0";
- private void queryItemFavoriteList() {
- String limit = item_favorites.Columns.MODIFIED + " desc limit 20 offset 0";
- contentProviderHandler.startQuery(
- TOKEN_QUERY_ITEMFAVORITE,//Handler的msgWhat
- null,
- item_favorites.CONTENT_URI, //uri
- item_favorites.PROJECTION, //需要查询的字段
- null,
- null,
- // item_favorites.Columns.MODIFIED.getName() + " DESC");//按最近的收藏时间排序
- limit);
- }
11 获取ContentProvider 记录 count
/**
* 可以放到通用类里面的吧???
*/
private int getMsgCount() {
int _count = 0;
ContentResolver _contentResolver= getActivity().getContentResolver();
//as is used for column get name
final String asCount = "count";
final String count = String.format("COUNT(%s) as %s", ChatConstants._ID, asCount);
final String[] projection = {ChatConstants._ID, count};
final String selection = ChatProvider.ChatConstants.APP_JID + " = ?";
final String[] selectionArgs = {mAppJabberID};
Cursor cursor = _contentResolver.query(ChatProvider.CONTENT_URI, projection, selection, selectionArgs, null);
cursor.moveToFirst();
_count = cursor.getInt(cursor.getColumnIndex(asCount));
cursor.close();
return _count;
}
12 unregister Observer
//当observer 不用时,或者Activity, Fragment 退出时,记得 unregister observer, 若不unregister 这个observer会被多次调用. 因为register没有unregister
//register 和 unregister需要成对出现
13 java.io file 操作:
file->ioStream->outStreamWriter&inStreanReader
14 通过ID获取 fragment
IM _im = (IM)getSupportFragmentManager().findFragmentById(R.id.im_fragment);
15 gravity 或属性, 属性间不能有空格 : android:gravity="bottom|center_horizontal"