發表文章

目前顯示的是 2017的文章

Android 在Fragment下控制輸入鍵盤

在Fragment下控制實體返回鍵 在EditTextOverWrite(客制的EditText) 狀態下,會有鍵盤彈出,在這個時候硬體控制權會被系統搶走,因此要加判斷 若該頁面沒有EditText,則無須理會IsKeyboardHidden以及其function Java部分 private EditTextOverWrite editEmailLoginAccount,editEmailLoginPassword; editEmailLoginAccount = (EditTextOverWrite) view.findViewById(R.id.editEmailLoginAccount); editEmailLoginPassword = (EditTextOverWrite) view.findViewById(R.id.editEmailLoginPassword); editEmailLoginAccount.setOnKeyboardHidden(onKeyboardHidden); editEmailLoginPassword.setOnKeyboardHidden(onKeyboardHidden); view.setFocusableInTouchMode(true); view.requestFocus(); view.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && KeyEvent.ACTION_UP == event.getAction()) { if (IsKeyboardHidden) { IsKeyboardHidden = false; }else { i

Android 返回按鍵的運用

在寫Android 程式的時候,因為使用的是fragment,所以常常會遇到對於返回鍵設定上的問題,原本舊的寫法是在系統端攔截返回鍵(用於沒有fragment返回時不會關掉App),並針對每一個可以返回的頁面來進行設定 但是這種方法曠日廢時,所以就開始上網找別人寫的返回鍵的控制方法,偶然讓我找到了一個很適合我們公司寫法的套件 原始寫法詳情可以看這一篇 两步搞定Fragment的返回键 http://www.jianshu.com/p/fff1ef649fc0 原本以為也是要寫不少東西,但是意外的在匯入他的方法,再稍加改寫後,就達到了我想要的成果 『有返回頁面的時候,返回。當沒有返回頁面的時候,提示再按一次就關閉App』 在gradle加入該方法 compile 'com.github.ikidou:FragmentBackHandler:2.1' 並MainActivity加入下面 /** * 上一次点击返回的时间 */ private long lastBackTime; private long lastBackPress; @Override public void onBackPressed() { if (!BackHandlerHelper.handleBackPress(this)) { if (System.currentTimeMillis() - lastBackPress < 1000) { super.onBackPressed(); } else { lastBackPress = System.currentTimeMillis(); Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show(); } } } 即可達到我想做的

多執行緒的使用

基本上多執行緒已經搞了一段時間,仍然是偶有失誤 這裡試著記錄下來這次任務的寫法 需求:開一個執行緒,持續去執行某行程式 private Handler mThreadHandler; private HandlerThread mThread; private void bleTimeCheck() { mThread = new HandlerThread("name"); mThread.start(); mThreadHandler = new Handler(mThread.getLooper()); mThreadHandler.postDelayed(r1, 3000); } private Runnable r1 = new Runnable() { public void run() { // TODO Auto-generated method stub Calendar c1 = Calendar.getInstance(); Log.e("0704.1 Time", "" + c1.getTimeInMillis()); mThreadHandler.postDelayed(r1, 3000); } }; 使用這個寫法,可以順利的讓執行緒每隔三小持續執行裡面run()裡面的東西 其實這次主要是 import的時候選錯class ,結果卡超久 所以上面這段程式複製使用會出現紅字的話,那非常大的機會是import選錯class,重新import即可 在撰寫過程中主要是參考這個網址 http://j796160836.pixnet.net/blog/post/29895257

Android 延遲執行

因為手上的App有個倒數關閉的功能,因此一開始在找延遲執行後關閉的寫法,但是很奇怪的一些延遲執行的做法在我的App中卻沒有效果,後來終於找到可以在App中運作的寫法 Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { //過五秒後要做的事情 CastScreenService.stop(); android.os.Process.killProcess(android.os.Process.myPid()); }}, 5000); 裡面的寫法是,五秒後將此App完全關閉。 至此本來應該就要完成了,但是後來因為我打算把這幾秒的時間顯示在上面,嘗試的要寫for迴圈,卻發現會因為要設定final的關係,迴圈的i值會被固定,便又去找了倒數計時的function,因此讓我找到了下列的寫法 new CountDownTimer(10000, 1000) { public void onTick(long millisUntilFinished) { Txt_Info2.setText("本程式於" + millisUntilFinished / 1000 + "秒後自動關閉"); } public void onFinish() { CastScreenService.stop(); android.os.Process.killProcess(android.os.Process.myPid()); }}.start(); 這個Android內建的CountDownTimer(執行多少毫秒,每次多久毫秒執行) 寫法完美的解決了我原本的需求,倒數幾秒後,自動執行,而每秒亦可顯示在打算顯示的文字上 CountDownTimer(執行幾秒*1000,每次多少秒執行*1000)  因此上面的寫法會是 執行10秒,每秒執行一次onTick,10秒後執行onFinish。 至此就完美的解決了我的需求

Android 取消Button自帶陰影 (Style已經被用掉的狀況下仍然可用)

因為設計上的需求,在製作Android按鈕的時候,常常因為Button自帶的陰影效果而被要求修改 所以自然有了取消陰影的需求 大部分網路上都是這種做法 style= "?android:attr/borderlessButtonStyle" 但是因為有些Button是會進行客製化(邊框間距、圓角等),所以Style這個欄位會被用掉,因此上面的方法就沒辦法使用了,那麼可以使用這個方法 < style name= "Button_Join" parent= "@style/Widget.AppCompat.Button.Borderless" > < item name= "android:background" > @color/color_ff9234 </ item > < item name= "android:textColor" > @color/color_f6f6f6 </ item > </ style > 在Style 的名稱後面加上這一行  parent= "@style/Widget.AppCompat.Button.Borderless" 這樣就可以了

webView 旋轉會destroy activity的問題解法(轉)

webView 旋轉會destroy activity的問題解法(轉) 利用webView顯示url後,如果旋轉螢幕,webView的內容就會不見,這是因為旋轉螢幕會將原ACTIVITY destroy 後再重新create,造成部份變數、設定等會消失,參考網路上解法如下: 只要在 AndroidManifest.xml 中的activity 部份加入紅色部份即可。 < activity android :name= ".MainActivity" android :configChanges= "screenSize|orientation" > 原文出處 http://blograycheng.blogspot.tw/2016/01/webview-destroy-activity.html