2012年10月31日 星期三

(Android Note) listview 移置最後一行

1. Code


listview.postDelayed(new Runnable() {
    @Override
    public void run() {
    listview.setSelection(data.size()); //設定移到第幾個item
    }
}, 0);

2012年10月25日 星期四

(Android Note) Timer 使用方法


1. Code

(1) schedule 用法
schedule(TimerTask task, long delay) // 只執行一次,long delay 延遲時間(單位毫秒)
schedule(TimerTask task, long delay, long period) //重複執行 ,long period 週期多久執行(單位毫秒)

(2)
public class TimerState extends Activity{
Timer mTimer;
public int num;
@Override
public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.timerstate);
       num  = 0;
       mTimer = new Timer();
       mTimer.schedule( new startTimer() , 0, 1000 ); //第二個參數 0 代表無延遲時間, 第三個參數 單位毫秒
       //mTimer.cancel();//暫停
}

//使用schedule方法,必須要有物件繼承imerTask,方可使用
public class startTimer extends TimerTask{
@Override
public void run() {
// TODO Auto-generated method stub
num++;
Log.e("num", ""+num);
}
}
}

(Android Note) EditText 編輯觸發事件

1. Code 


public class EditTextEvent extends Activity{
EditText eteET; 
@Override
public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.edittextevent);
       
       eteET = (EditText)findViewById(R.id.eteET);
       eteET.addTextChangedListener(eteETListener); //監聽改變文字事件
}

public TextWatcher eteETListener = new TextWatcher(){

@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
Toast.makeText(EditTextEvent.this, "afterTextChanged--"+arg0.toString(), Toast.LENGTH_SHORT).show();//顯示修改後字串內容
}

@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
Toast.makeText(EditTextEvent.this, "beforeTextChanged--"+arg0.toString(), Toast.LENGTH_SHORT).show();//顯示修改前字串內容
}

@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
Toast.makeText(EditTextEvent.this, "onTextChanged0--"+arg0.toString(), Toast.LENGTH_SHORT).show();//顯示修改後字串內容
Toast.makeText(EditTextEvent.this, "onTextChanged1--"+arg1, Toast.LENGTH_SHORT).show();//顯示目前第幾個位置,從0開始
Toast.makeText(EditTextEvent.this, "onTextChanged2--"+arg2, Toast.LENGTH_SHORT).show();//none
Toast.makeText(EditTextEvent.this, "onTextChanged3--"+arg3, Toast.LENGTH_SHORT).show();//none
}
 
};
}

(Android Note) 取得手機語系

1. Code

(1) Locale.getDefault().getLanguage()
==>return en, zh ....等

(2) Locale.getDefault().getDisplayLanguage()
==>return English, 中文....等

2012年10月19日 星期五

(Android Note) 編譯時,出現Conversion to Dalvik format failed: Unable to execute dex: null

1. 說明

        常發生編譯時,出現 Conversion to Dalvik format failed: Unable to execute dex: null 訊息,主要是因為加入 JAR 檔時,以 Add External JARs....  加入;後來搜尋資料,發現以 Add Library/User Library 比較不會有error訊息。

2. 加入User Library 步驟


1. Right-click the project in Eclipse and select "Build Path -> Add Libraries...".
2. Select User Library from the list and click Next.
3. Click the "User Libraries..." button.
4. Click "New..." in the User Libraries dialog.
5. Give the user library a name and select the System library checkbox and click OK.
6. Highlight the newly added user library in the list and click the "Add JARs..." button and add the desired jar files.
7. Click OK on the User Libraries dialog.
8. Make sure the new user library is checked in the Add Library dialog.

2012年10月18日 星期四

(Android Note) 實現全屏方式

1. 在AndroidManifest.xml 文件中,設定Activity為全屏模式。

android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 

2. 程式實現全屏

2.1 隱藏狀態欄

requestWindowFeature(Window.FEATURE_NO_TITLE); 

2.2 隱藏標題欄

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 

2.3 隱藏工具欄

此處搜尋過,無法強制隱藏工具欄。


PS: 以程式實現全屏,必須'放在 setContentView 前才有效果。

(Android Note) 讀取無線網卡mac位置

1. 添加權限


在AndroidManifest.xml加入存取無線網卡狀態權限。
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 允許讀取WIFI狀態 -->


2.code 


//讀取無線網卡mac位置
public String getLocalWiFiMacAddress() {
WifiManager wm = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wi = wm.getConnectionInfo();
return wi.getMacAddress(); //回傳(XX:XX:XX:XX:XX)
}

2012年10月4日 星期四

(Android Note) webview Javascript使用方法


1. code

String str = "<html><head></head><body>" +
    "<button onClick='javascript:js.setJava(\"HELLO\")' >執行java的function做處理</button>" +
    "<div id='output'>output:</div>" +
        "<script>document.write(js.getJava());</script>" +
    "</body></html>";
    
    wv = (WebView)findViewById(R.id.webView1);
    wv.addJavascriptInterface(this, "js"); 
    wv.getSettings().setJavaScriptEnabled(true); 
    wv.loadDataWithBaseURL("about:blank",str, "text/html", "utf-8", null); 



 public void setJava(String value){
Log.e("HELLO", value);
}
 public String getJava(){
        return "HELLO";
}

2. 說明

  •  javascript:js.setJava(\"HELLO\"); //呼叫 java中的程式function
  • <script>document.write(js.getJava());</script> //從java中的function取得值
  • wv.addJavascriptInterface(this, "js"); // 設定webview和javascript溝通的橋梁,別名js
  •  wv.getSettings().setJavaScriptEnabled(true); //是否允許webveiw執行javascript代碼
  • wv.loadDataWithBaseURL("about:blank",str, "text/html", "utf-8", null); //帶入字串
  • wv.loadUrl("http://XXX/aaa.php"); //帶入網址
  • wv.loadUrl(file:///android_asset/aaa.html); //帶入檔案,檔案位置必須要放置assets/www目錄下才可。至於大多人說放置assets就可以使用,在下是執行都會錯誤




(Android Note) listview 背景用法

1. Code

1.1 點選 listview 時,去除背景黑色底色

android:cacheColorHint="@android:color/transparent"

1.2 自動產生背景色


1.2.1 先在 drawable 資料夾內產生 dlistview.xml 檔案

內容:



<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 沒有焦點時的背景圖片 -->
<item android:state_window_focused="false" android:drawable="@drawable/tools_listviewbackground" />
<!-- 非觸摸試下獲得焦點並點選時的背景圖片 -->
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/tools_listviewbackground" />
<!-- 觸摸試下獲得焦點並點選時的背景圖片 -->
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/answer3_1" />
<!-- 選中時的背景圖片 --> 
<item android:state_selected="true" android:drawable="@drawable/answer4_1" />
<!-- 獲得焦點時的背景圖片 -->
<item android:state_focused="false" android:drawable="@drawable/answer4_2" />
</selector>

//android:state_selected是被點選
//android:state_focused是獲得焦點
//android:state_pressed是點擊
//android:state_enabled是否可以執行


1.2.2 在java中加入以下
listview.setSelector(R.drawable.dlistview); //把xml加入到背景選擇器

之後listview所產生的行為,會依照所定義xml格式所表現。