創作

2014年12月8日 星期一

Android紀錄

顯示Android鍵盤(上推效果):
final View view = getWindow().peekDecorView();
if(view != null && view.getWindowToken()!=null){
   InputMethodManager imm =(InputMethodManager) getSystemService (INPUT_METHOD_SERVICE);   
imm.toggleSoftInputFromWindow(view.getWindowToken(),0,0);
}
隱藏Android鍵盤(下收效果):
final View view = getWindow().peekDecorView();
if(view != null && view.getWindowToken()!=null){
   InputMethodManager imm =(InputMethodManager) getSystemService (INPUT_METHOD_SERVICE);   

imm.hideSoftInputFromWindow(view.getWindowToken(),0);
}
ImagButton & ImagView 背景透明 (layout Xml)
android:background="@null"

取消ListView點擊時的預設背景色:
android:listSelector="#00000000"


String 轉成 String[] (Split)注意事項:
參考網站1
1.如果有用到 "." 或者是 "|" ,請改為 "\\." 或者 "\\|" ,".|"為作用符號。
2.如果有多個符號分割 "abc @ 123 & 中文",則可以用"|做分割"

String str = "abc@123&chinese";
String[] strAry = str.split("@|&"); // [abc,123,chinese]

PNG圖檔在行動裝置失真解決方式:
在 onCreat()中,增加以下程式碼(將預設顏色格式,換成帶透明32位元格式)
getWindow().setFormat(PixelFormat.RGBA_8888);


Invalidate和postInvalidate:
Invalidate = UI線程自身中使用
postInvalidate = 後者在非UI線程中使用。
TextView限制行數,以及過長使用...表示
android:maxLines="2"
android:ellipsize="end"


限制函數為單一執行(參考網站)
synchronized public void method1() {
     ...
}

//---------------------------------------------------------------------------------------------
遞回掃描元件 from id:
private View getViewById(ViewGroup viewGroup ,int id ){
 View getView = null;
 for (int i = 0 ; i<viewGroup.getChildCount() ; i++){
  if (viewGroup.getChildAt(i) instanceof LinearLayout || 
    viewGroup.getChildAt(i) instanceof RelativeLayout || 
    viewGroup.getChildAt(i) instanceof AbsoluteLayout ||
    viewGroup.getChildAt(i) instanceof ListView ){
   
   if (((ViewGroup)viewGroup.getChildAt(i)).findViewById(id)==null){
    getView = getViewById(((ViewGroup)viewGroup.getChildAt(i)),id); 
   }else{
    getView = ((ViewGroup)viewGroup.getChildAt(i)).findViewById(id);
   }    
  }else{
   int getID = viewGroup.getChildAt(i).getId() ;
   Log.println(Log.DEBUG, TAG, "getID:"+getID+"/"+id);
   if (getID == id){
    getView = viewGroup.getChildAt(i);
   } 
  }   
 }
 return getView;
}

原先以為 Activity 加入Fragment後,查詢元件要用遞回去查子元件,或是指定Fragment.findViewbyID。
後來發現並不用那麼麻煩,只要當前畫面上有出現的元件,就可以直接用Activity去findViewByid。
這遞回就留著改變狀態或初始化用。

沒有留言:

張貼留言