格式化

廣告

文章分類

[Android SDK特色教學] ( 34 ) Android程式範例 ( 29 ) Android app開發基本概念 ( 22 ) JAVA教學範例 ( 13 ) JAVA基本概念 ( 3 )

廣告2

顯示具有 Android app開發基本概念 標籤的文章。 顯示所有文章
顯示具有 Android app開發基本概念 標籤的文章。 顯示所有文章

2013年9月26日 星期四

[Android app開發基本概念] listview 無法點擊/無法響應事件/無法獲得焦點

[Android app開發基本概念] listview 無法點擊/無法響應事件/無法獲得焦點

在Android應用設計與實現中我們通常都會使用到ListView這個控件,系統有一些預設的Adapter可以使用,例如SimpleAdapter和ArrayAdapter,但是總是會有一些情況我們需要通過自定義ListView來實現一些效果,那麼在這個時候,我們通常會碰到自定義ListView無法選中整個ListViewItem的情況,也就是無法響應ListView的onItemClickListener中的onItemClick()方法,究竟是為什麼呢?

2013年9月19日 星期四

[Android app開發基本概念] 利用PHP連接Mysql資料庫

android mysql json查詢

[Android app開發基本概念] 利用PHP連接Mysql資料庫

示範從android開HttpClient請求post一個id參數到php網頁,然後php網頁收到對id作條件搜尋,將結果編碼成JSON回傳,android收到返回資料後利用JSONArray將其解碼,將資料呈現在listview


其實好像也能用JDBC連,不過貌似比較不耐操!?

本篇所使用的環境套件為 Mysql、Apache、PHP,在此除了利用PHP向資料庫要資料外並將取回的資料轉成JSON格式,接著利用HTTP協定傳遞給Android程式,之後將詳細介紹中間的執行步驟及該注意的事項。

2013年8月5日 星期一

[Android app開發基本概念] SQLite使用儒約日比較日期字串區間

我測試了無數的結果顯示,只有使用儒約日來比較是最完美無缺的!
可能是我的問題吧,我使用了datetime()含式來比較比沒有返回應該的結果。
我也是用了最簡單的BETWEEN來比較某期間的日期,也是沒有返回正確的結果。

2013年7月29日 星期一

[Android app開發基本概念] 偵測網路是否連線狀態

在Android手機中判斷是否連網可以通過 ConnectivityManager 類別的getActiveNetworkInfo()方法判斷,首先獲取網路通訊類的實例 :
ConnectivityManager cm =(ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);


再來可以使用cm.getActiveNetworkInfo().isAvailable(); 來返回是否有效,如果為True則表示當前Android手機已經連網,可能是WiFi或GPRS、HSDPA等等,具體的可以通過ConnectivityManager 類別的getActiveNetworkInfo()方法判斷詳細的接入方式需要注意的是有關調用需要加入以下許可權,同時在一些網路超時的時候也可以檢查下網路連接是否存在,以免浪費手機上的電力資源。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

2013年7月21日 星期日

[Android app開發基本概念] https post連線請求建立方法教學


Https與Http類似,只不過Https一般是通過post請求服務器,但是Https與http不同的是Https與服務器會話是處於連接狀態。http則發送請求後連接就會斷開。

另外使用HttpsURLConnection時需要實現HostnameVerifier 和 X509TrustManager,這兩個實現是必須的,要不會報安全驗證異常。然後初始化X509TrustManager中的SSLContext, 為javax.net.ssl.HttpsURLConnection設置默認的SocketFactory和HostnameVerifier。

之後最好要用UrlEncodedFormEntity()方法告訴伺服器 ,你傳進的那些參數值字串的編碼為何。預設的編碼是 ISO-8859-1,不傳的話會把你的傳入的UTF-8中文搞亂了。

 先自己重寫一個SSLSocketFactory類別:

[Android app開發基本概念] ListView中getChildAt()的使用範例


在很多時候ListView列表數據不需要全部刷新,只需刷新有數據變化的那一條,這時可以用getChildAt(index)獲取某個指定position的view,並對該view進行刷新。

注意:在ListView中,使用getChildAt(index)的取值,只能是當前可見區域(列表可滾動)的子項!
  • 即取值範圍在 >= ListView.getFirstVisiblePosition() &&  <= ListView.getLastVisiblePosition();
  1. 所以如果想獲取其他的部分將會出現返回Null值空指針問題;
  2. getChildCount跟getCount獲取的值將會不一樣(數量多時);
  3. 如果想更新某一行數據,需要配合ListView的滾動狀態使用,一般不滾動時才加載更新數據
範例程式:

2012年2月19日 星期日

[Android app開發基本概念] Drawable圖片格式的選擇

常見的3中圖片格式及其差別:
  • JPEG—照片的標準格式,不支持透明。
  • GIF—被限制在256色因此對於大塊純色和簡單圖像非常好。它支持透明但是會產生鋸齒邊緣。
  • PNG—.jpg和.gif的漂亮結合,具有.jpg圖片的質量和.gif的透明度,而且沒有鋸齒。
android佔時還不支持GIF,所以常用的圖片格式只有.JPG和.PNG兩種。
我們需要關心的主要因素是:圖片的大小、  圖片的質量。



關於這兩點它們之間的區別在於:
文件大小—這比較顯著的區別。一般.png的大小是幾百k,而.jpg只有小小的幾十k。
顏色和對比度—.jpg的顏色更豐富,更飽和。 .png看起來則沒有那麼豐富。
  • 小尺寸,色彩數少,或者需要用到透明的時候,使用PNG。
  • 大尺寸,色彩漸變色多的用JPG。

根據不同的應用需求給出建議是:
  1. 使用JPG
  2. 如果你不需要保存圖片的透明背景;如果你的圖片需要保存圖像質量,色彩以及飽和度。

使用PNG

  1. 當你的圖片需要透明時
  2. 當使用純繪圖圖片時。.png格式渲染照片效果沒有那麼好。

2012年2月11日 星期六

[Android app開發基本概念] 抓取手機上時間資訊


可以獲得當前的年月時分秒
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String date = sDateFormat.format(new java.util.Date()); 

如果只想獲淂當前的年月,則可以這樣寫(只獲取時間或秒都一樣改寫):
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM"); 
String date=sdf.format(new java.util.Date()); 

利用Calendar獲取
Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.grt(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
hour = c.get(Calendar.HOUR_OF_DAY);
minute = c.get(Calendar.MINUTE);


利用Time獲取
Time t=new Time(); // or Time t=new Time("GMT+8"); 加上Time Zone資料。
t.setToNow(); // 取得系統時間。
int year = t.year;
int month = t.month;
int date = t.monthDay;
int hour = t.hour; // 0-23
int minute = t.minute;
int second = t.second;