發表文章

Fragment點到下層物件點擊事件的解決方法

在最頂層的XML加 android:clickable="true" 即可

Android 控制部分文字『大小與變色』與『該文字點擊事件』

控制 部分文字『大小與變色』與『該文字點擊事件』 有時候公司的一些設計常會出現,有部分文字要大小不同,顏色不同的情況,而如果是在做註冊頁面的話,有時候還會遇到要設置點擊功能(例如本文範例的服務條款及隱私權政策) Java private void accpetSet() { String str1 = "點下完成即代表同意OO公司之"; String str2 = "服務條款"; String str3 = "及"; String str4 = "隱私權政策"; SpannableStringBuilder builder = new SpannableStringBuilder(str1 + str2 + str3 + str4); txt_accpet.setMovementMethod(LinkMovementMethod.getInstance()); builder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.colorBlue)), str1.length(), (str1 + str2).length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE); builder.setSpan(new TextClick(), str1.length(), (str1 + str2).length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE); builder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.colorBlue)), (str1 + str2 + str3).length(), (str1 + str2 + str3 + str4).length(), Spannable.SPAN_EXCLUSIVE_INCL...

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

將要傳送的參數包入onclick的方法

在onclick的指令下,要塞更多的資料到執行的function方法 方法一: 全部包入rel,然後使用如@來做分隔符號,接過去之後,再做分拆取得 方法二: 使用JavaScript的方法取得 '<td><a href="#" onclick=" CoinBuyLogButton (this)" Nickname= "' + Nickname + '" id="' + data .MemberBalances[i].Userid + '">' + CoinsBuy + '</a></td>' var Nickname = tag . getAttribute ( 'Nickname' ); var id = tag . getAttribute ( 'id' ); 方法三: 使用JQuery的方法取得 '<div class=" button aquamarine" style="padding-right: 20px;"> <span><a onclick=" popContent2 (this)" _type = "' +$obj.ReplayRecordType+ '" ; _title="' +$obj.ReplayRecordTitle+ '" ; _Content ="' +$obj. ReplayRecordContent + '">檢視</a></span></div>' ; var _type = $( data ). attr ( "_type" ); var _title = $( data ). attr ( "_title" );

VS C# Entity Framework 寫API 的一些方法註記

要將兩張表合併的方式 在SQL上面的用法是 select * from [dbo] . [TB_AREA] as a join [dbo] . [TB_CITY] as c on a . CityID = c . id 意思是 把TB_AREA表單 加入 TB_CITY 表單,做成 c表單,然後兩個表單的關聯是TB_AREA的CityID =TB_CITY的id 如我們要使用VS C# Entity Framework的話要使用如下的方程式 dbo.TB_TRAVELESSENTIALSDETAIL              .Join(dbo.TB_TRAVELESSENTIALS, ted => ted.TravelEssentialsID, te =>te.Id,(ted,te) => new  { ted,te}) 然後要取得時間的寫法是 (( DateTime )s.ted.TravelEssentialsDetailCreateTime).ToString( "yyyy/MM/dd" ) 下方為一小段範例程式碼                         var TEList = dbo.TB_TRAVELESSENTIALSDETAIL                             .Join(dbo.TB_TRAVELESSENTIALS, ted => ted.TravelEssentialsID, te =>te.Id,(ted,te) => new { ted,te})                             ...

iOS Safari 中點擊事件失效的解決辦法(轉貼)

iOS Safari 中點擊事件失效的解決辦法 問題描述 當使用委託給一個元素添加click事件時,如果事件是委託到 document 或 body 上,並且委託的元素是默認不可點擊的(如 div, span 等),此時 click 事件會失效。 可以使用下面的代碼在 iOS 中進行測試。 <!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < meta name = "viewport" content = "width=device-width" > < title > iOS click bug test </ title > < style > .container { } .target { display : block; text-align : center; margin : 100px 30px 0 ; padding : 10px 0 ; border : 1px solid #ccc ; } </ style > </ head > < body > < div class = "container" > < div class = "target" > Click Me! </ div > </ div > < script src = "//code.jquery.com/jquery-2.1.4.min.js" > </ script > < scrip...

滑鼠點擊變色,其餘恢復原本顏色(轉)

这个是用javascript控制的。非常简单。复制到body里面试下。 <style> a.select{color:#F00};/*选中的样式*/ </style> <script> function left_btn(n) { var a_num=document.getElementById("left_btn_box").getElementsByTagName("a"); for(i=0;i<a_num.length;i++) { a_num[i].className=i==n?"select":""; } } </script> <div id="left_btn_box"> <a class="select" onclick="left_btn(0)" href="#">按钮1</a> <a onclick="left_btn(1)" href="#">按钮2</a> <a onclick="left_btn(2)" href="#">按钮3</a> </div> 參考網址: http://zhidao.baidu.com/question/265450594.html

限定只能輸入數字,且輸入滿後自動跳轉下個欄位

限定只能輸入數字,而且像是輸入信用卡一樣,輸入滿字元就自動跳轉 輸入西元年滿四個數字,自動跳轉(focus)到下一個欄位(ID) 自動跳轉 onkeyup="if(this.value.length==字數)document.getElementById('ID').focus(); 限定輸入數字(注意一下,在『,』後面是兩個『'』不是一個『"』) onkeyup="value=value.replace(/[^\d]/g,'') " EX: <input id="birthYear" type="text" class="input_line ipxxs" placeholder="西元年" maxlength="4"   onkeyup="if(this.value.length==4)document.getElementById('birthMonth').focus();value=value.replace(/[^\d]/g,'') "> <span style="float: left;">-</span> <input id="birthMonth" type="text" class="input_line ipxxs" placeholder="西元月" maxlength="2"   onkeyup="if(this.value.length==2)document.getElementById('birthDay').focus();value=value.replace(/[^\d]/g,'') "> 參考限定輸入類型 http://dennis1985.pixnet.net/blog/post/121634578-html-text...

CSS 完全置中的寫法

CSS 完全置中的寫法 position: fixed;     z-index: 2000;     background: rgba(0, 0, 0, 0.7);     display: block;     top: 0px;     left: 0px;     bottom: 0px;     overflow: auto;     width: 100%;

有關多選與單選(轉載)

$( ".grpCbx" ).click(function() { $( ".grpCbx" ).not( this ).removeAttr( "checked" ); }); 將其他check清空,使用專屬jquery的 .not(this) 來處理 原出處 http://blog.darkthread.net/post-2009-05-29-something-about-js-event.aspx

ajax回傳完畢前的讀取畫面、css置中等功能

要完全置中(上下左右) < style > . dialogbox { top : 0 ; left : 0 ; bottom : 0 ; right : 0 ; margin : auto ; overflow : auto ; } </ style > 在ajax的運用中使用,用途為若api未回傳資料回來,就插入畫面擋住不讓用戶一直點擊 CSS div . loadingdiv { height : 100 %; /*100% 覆蓋網頁內容 , 避免 user 在 loading 時進行其他操作 */ width : 100 %; position : fixed ; z-index : 99999 ; /* 須大於網頁內容 */ top : 0 ; left : 0 ; display : block ; background : #000 ; opacity : 0.6 ; text-align : center ; } div . loadingdiv img { position : relative ; vertical-align : middle ; text-align : center ; margin : 0 auto ; margin-top : 50 vh ; } Ajax 主要是在beforeSend跟complete這兩個function 若開始執行 show,若完成就hide。 AjaxCall : function ( urlStr , object , callback ) { console. log ([ urlStr , object ]); $ . ajax ({ url: urlStr , type: "GET" , data: object , dataType: "json" , suc...

Jquery 的Each作法

以前都是用for迴圈再做東西,但是後來發現有一些同事都是使用each來作業 便在今天試著使用了一下each來做api串接 一維的for基本型態 for ( var i = 0 ; i < FateDataRange_Array .length; i++) {} 一維的each作法 $. each (FateDataRange_Array, function ( i , object ){ console. log ( i + ' = ' + object ); }); 二維的for基本型態 for ( var i = 0 ; i < data .GetCountryListResult.KVLlists.length; i++) { data .GetCountryListResult.KVLlists[i]. key data .GetCountryListResult.KVLlists[i]. val } 二維的each作法 $. each ( data .GetCountryListResult.KVLlists, function ( i , object ) { console. log ( i + ' = ' + object . key + ' = ' + object . val ); console. log ( data .GetCountryListResult.KVLlists.length);//長度 }); 參考資料: http://g2room.com/index.php/archives/62 http://www.g2room.com/jquery/example/base/each.html

jQuery獲取Select選擇的Text和Value(轉)

jQuery獲取Select選擇的Text和Value(轉)     jQuery獲取Select選擇的Text和Value: 語法解釋: 1. $("#select_id").change(function(){//code...}); //為Select添加事件,當選擇其中一項時觸發 2. var checkText=$("#select_id").find("option:selected").text(); //獲取Select選擇的Text 3. var checkValue=$("#select_id").val() ; //獲取Select選擇的Value 4. var checkIndex=$("#select_id ").get(0).selectedIndex; //獲取Select選擇的索引值 5. var maxIndex=$("#select_id option:last" ).attr("index"); //獲取Select最大的索引值 jQuery設置Select選擇的Text和Value: 語法解釋: 1. $("#select_id ").get(0).selectedIndex=1; //設置Select索引值為1的項選中 2. $("#select_id ").val(4); //設置Select的Value值為4的項選中 3. $("#select_id option[text='jQuery' ]").attr("selected", true); //設置Select的Text值為jQuery的項選中 jQuery添加/刪除Select的Option項: 語法解釋: 1. $("#select_id").append("<option value='Value'>Text</option>"); //為Select追加一個Option(下拉項) 2. $("#se...

使用jQuery對 select 的操作(本文為網路找到的參考文)

[jQuery] 使用 jQuery 對 select 的操作 1. 取得選擇項目的文字與值 /*----- 單選 -----*/ // 取得被選擇項目的文字 $ ( "#select" ). find ( ":selected" ). text (); // 取得被選擇項目的值 $ ( "#select" ). find ( ":selected" ). val (); /*----- 多選 -----*/ // 使用迴圈取得所有被選擇的項目 $ ( "#select" ). find ( ":selected" ). each ( function () { alert ( this . text ); // 文字 alert ( this .value); // 值 }); 2. 增加項目 $ ( "#select" ). append ( $ ( "<option></option>" ). attr ( "value" , " 值 " ). text ( " 文字 " )); 3. 移除選擇的項目 // 移除選擇的項目 $ ( "#select" ). find ( ":selected" ). remove (); // 移除全部的項目 $ ( "#select option " ). remove (); 4. 移除選擇項目後,防止捲軸移到最上面 // 先取得要移除項目的 index var selectIndex = $ ( "#select" ). find ( ":selected" ). index (); // 移除選擇的項目 $ ( "#select" ). find ( ":selected" ). remove (); // 判斷移除項目後,原先的 inde...

彈跳視窗iframe的運用

要簡單的使用手機形式的iframe彈出視窗 一般要使用的話,都需要寫很多語法,在這邊可以使用 fancybox這個jQuery的外掛 使用時,記得加入class="iframe",加入之後,要在在畫面上設定如下 $ ( '.iframe' ). fancybox ({ width : '100%' , height : '70%' , titlePosition : 'outside' }); 注意的是,如果畫面是動態生成的,記得在動態畫面生成之後,立刻加入這行。 一開始使用的時候,發現怎麼按都不會出現彈跳視窗,但是在畫面上寫死的時候,就會work 後來想到應該是順序的問題(HTML上寫死的畫面已經載入,動態生成算是後來才追加的),因此如同作多國語系的時候一樣, 在畫面生成之後加入即可動作。 而如果在ifrmae的畫面中要刷新後方的父頁面(例如在子視窗編輯評論,編輯完成後回到父視窗) 可以加入以下兩行 關閉該子視窗 parent . jQuery . fancybox . close (); (填入原本父視窗的網址)  即可做到關閉子視窗同時刷新父視窗 window . parent . location = "evaluation.html" ; PS. 如果沒有加入parent而直接使用window.location = "OOOO.html";的話,會變成刷新子視窗