Android 一些常识知识

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


[java]  view plain copy
  1. String limit = item_favorites.Columns.MODIFIED + " desc limit 20 offset 0"; 
  2. private void queryItemFavoriteList() {  
  3.         String limit = item_favorites.Columns.MODIFIED + " desc limit 20 offset 0";   
  4.         contentProviderHandler.startQuery(  
  5.                 TOKEN_QUERY_ITEMFAVORITE,//Handler的msgWhat  
  6.                 null,  
  7.                 item_favorites.CONTENT_URI, //uri  
  8.                 item_favorites.PROJECTION, //需要查询的字段  
  9.                 null,  
  10.                 null,   
  11. //              item_favorites.Columns.MODIFIED.getName() + " DESC");//按最近的收藏时间排序  
  12.                 limit);  
  13.     }  

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"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值