第一篇:Android手機刷機知識的總結
本教程只是對Android手機刷機知識的普遍總結,所有的Android手機都可以參考。現(xiàn)在的刷機方法很多,而且不一樣的手機刷機方法不一樣。本教程只做參考。
1、什么是root?
root相當于Windows中的管理員權限,root權限默認是不允許用戶使用的,因為用戶可能會誤操作或者運行到惡意軟件而通過root權限破壞手機文件系統(tǒng)。
2、那么為什么要root呢?
root過的Nexus One可以做更多的事情,翻wall更方便,運行Ubuntu,刷機等等。
3、如何看是否成功root了?
去Android Market找一個Terminal Emulator下載下來,進入Terminal Emulator以后鍵入su回車,如果命令提示開頭從$變成了#則代表root成功
備用方法:鍵入su后回車,接著鍵入whoami回車,如果顯示uid 0則代表root成功
4、什么是“解鎖bootloader”?
bootloader一旦解鎖將不再被保修,但是可以允許你更方便的安裝第三方系統(tǒng)
5、解鎖bootloader后的現(xiàn)象是什么?
開機后屏幕下方會有一個開鎖的標志
6、什么是Recovery?
直譯過來“恢復”,就是一個僅有刷機(和其他輔助刷機的功能)的一個程序,一般情況下刷機都是通過 Recovery完成,目前常用的Recovery有Clockwork Recovery和Amon RA,我個人建議使用Amon RA1.8.0.1或以上的版本,操作簡單。
7、什么是Radio?
負責處理通訊信號的一系列軟件,新版的Radio一般能帶來更少的電池消耗、更強的信號、更好的通話質量和網(wǎng)絡速度。Android2.2需要4.06以上的radio才可以正常工作,Cyanogen Mod5.0.8雖然不是Android2.2但是也需要4.0.6的Radio才能工作.8、什么是Kernel?
內(nèi)核,Android系統(tǒng)基于Linux,Linux的運行就要靠內(nèi)核來做所有底層的數(shù)據(jù)交換和調(diào)度。新版的Kernel一般能帶來系統(tǒng)速度的提升和新功能,還有就是不同的電源管理方案可能節(jié)省電池。不是所有的Kernel都能用在所有的系統(tǒng)上,比如 Pershot做的Kernel就只能適用于CM和Enomther的系統(tǒng)。
9、內(nèi)核電源管理AVS和SVS的區(qū)別?
Nexus One的CPU自身支持一種調(diào)整電壓的方式,就是根據(jù)CPU的運行情況動態(tài)調(diào)整所需的電壓,這種模式就是AVS。但是Nexus One原版的系統(tǒng)并不支持這個功能,因為這個功能并不是經(jīng)過嚴格測試的。目前最常見的AVS內(nèi)核就是IntersectRaven制作的了,現(xiàn)在AVS內(nèi)核在大多數(shù)Nexus One上是比較穩(wěn)定的。
默認的電源管理是SVS,也就是靜態(tài)電壓設置,根據(jù)CPU的工作頻率跟負載來靜態(tài)的調(diào)節(jié)電壓。
一般來講AVS比SVS更節(jié)省電池
一般刷機的步驟順序:
1、解鎖Bootloader
2、刷第三方Recovery
3、通過Recovery,先刷 Radio(注意版本,Android2.2系統(tǒng)必須用4.06或以上的Radio,最新版是5.12)
4、通過Recovery,刷系統(tǒng)
5、(如果系統(tǒng)并不自帶Google的軟件)刷Google Apps Addon(主要適用于Cyanogen Mod)
6、(可選)通過 Recovery,刷內(nèi)核
radio、系統(tǒng)、google apps跟內(nèi)核的順序一定不要隨意調(diào)整,否則容易造成系統(tǒng)無法啟動的情況
第二篇:Android手機刷機知識小總結
Android手機刷機知識小總結
本教程只是對Android手機刷機知識的普遍總結,所有的Android手機都可以參考。現(xiàn)在的刷機方法很多,而且不一樣的手機刷機方法不一樣。本教程只做參考。
1、什么是root?
root相當于Windows中的管理員權限,root權限默認是不允許用戶使用的,因為用戶可能會誤操作或者運行到惡意軟件而通過root權限破壞手機文件系統(tǒng)。
2、那么為什么要root呢?
root過的Nexus One可以做更多的事情,翻wall更方便,運行Ubuntu,刷機等等。
3、如何看是否成功root了?
去Android Market找一個Terminal Emulator下載下來,進入Terminal Emulator以后鍵入su回車,如果命令提示開頭從$變成了#則代表root成功
備用方法:鍵入su后回車,接著鍵入whoami回車,如果顯示uid 0則代表root成功
4、什么是“解鎖bootloader”?
bootloader一旦解鎖將不再被保修,但是可以允許你更方便的安裝第三方系統(tǒng)
5、解鎖bootloader后的現(xiàn)象是什么?
開機后屏幕下方會有一個開鎖的標志
6、什么是Recovery?
直譯過來“恢復”,就是一個僅有刷機(和其他輔助刷機的功能)的一個程序,一般情況下刷機都是通過 Recovery完成,目前常用的Recovery有Clockwork Recovery和Amon RA,我個人建議使用Amon RA1.8.0.1或以上的版本,操作簡單。
7、什么是Radio?
負責處理通訊信號的一系列軟件,新版的Radio一般能帶來更少的電池消耗、更強的信號、更好的通話質量和網(wǎng)絡速度。Android2.2需要4.06以上的radio才可以正常工作,Cyanogen Mod5.0.8雖然不是Android2.2但是也需要4.0.6的Radio才能工作.8、什么是Kernel?
內(nèi)核,Android系統(tǒng)基于Linux,Linux的運行就要靠內(nèi)核來做所有底層的數(shù)據(jù)交換和調(diào)度。新版的Kernel一般能帶來系統(tǒng)速度的提升和新功能,還有就是不同的電源管理方案可能節(jié)省電池。不是所有的Kernel都能用在所有的系統(tǒng)上,比如 Pershot做的Kernel就只能適用于CM和Enomther的系統(tǒng)。
9、內(nèi)核電源管理AVS和SVS的區(qū)別?
Nexus One的CPU自身支持一種調(diào)整電壓的方式,就是根據(jù)CPU的運行情況動態(tài)調(diào)整所需的電壓,這種模式就是AVS。但是Nexus One原版的系統(tǒng)并不支持這個功能,因為這個功能并不是經(jīng)過嚴格測試的。目前最常見的AVS內(nèi)核就是IntersectRaven制作的了,現(xiàn)在AVS內(nèi)核在大多數(shù)Nexus One上是比較穩(wěn)定的。
默認的電源管理是SVS,也就是靜態(tài)電壓設置,根據(jù)CPU的工作頻率跟負載來靜態(tài)的調(diào)節(jié)電壓。
一般來講AVS比SVS更節(jié)省電池 一般刷機的步驟順序:
1、解鎖Bootloader
2、刷第三方Recovery
3、通過Recovery,先刷 Radio(注意版本,Android2.2系統(tǒng)必須用4.06或以上的Radio,最新版是5.12)
4、通過Recovery,刷系統(tǒng)
5、(如果系統(tǒng)并不自帶Google的軟件)刷Google Apps Addon(主要適用于Cyanogen Mod)
6、(可選)通過 Recovery,刷內(nèi)核
radio、系統(tǒng)、google apps跟內(nèi)核的順序一定不要隨意調(diào)整,否則容易造成系統(tǒng)無法啟動的情況
第三篇:優(yōu)刷手機pos機是什么
優(yōu)刷(yopay)手機移動pos機是什么:
隨著移動互聯(lián)網(wǎng)時代的來臨,手機正在逐步取代電腦成為媒體終端、娛樂終端、交易終端,而便捷高效的手機移動支付工具更呼之欲出,優(yōu)刷刷卡器就在此時應運而生。
優(yōu)刷手機移動pos機是一款手機移動pos機,其實就是一個手機刷卡器又叫刷卡頭,可以通過這個簡單的手機pos機來實現(xiàn)你的金融服務,比如說:可以刷信用卡、可以轉賬匯款、信用卡還款、話費充值、支付寶充值、訂火車票、訂飛機票、還可以支付訂單、像水電煤繳費呀,本市優(yōu)惠之類的都有。你說選擇手機pos機你選對了么?
優(yōu)刷(yopay)產(chǎn)品核心特征:
1)、硬件加密機制
刷卡器內(nèi)部有專用安全芯片,用于存儲密鑰及加密敏感數(shù)據(jù),安全芯片與刷卡器主芯片互相獨立,保證密鑰存儲及數(shù)據(jù)及加密安全
2)、支持PSAM卡加密認證機制
3)、一機一密
每個刷卡器一個主密鑰,互相不同,互不影響,徹底杜絕密鑰泄露風險
4)、一次一密
每次交易都產(chǎn)生一個工作密鑰用于加密敏感數(shù)據(jù),工作密鑰由主密鑰進行保護,每筆交易都不相同,杜絕惡意程序偽造交易的風險。
5)、密碼保護
密碼采用專用安全鍵盤輸入,安全鍵盤每次使用的時候重新初始化鍵盤布局,防止惡意監(jiān)聽;
采用按鍵無狀態(tài)模式(是當用戶按下軟鍵盤中的某個按鍵,并不繪制按下和釋放的形狀態(tài))避免惡意程序對系統(tǒng)鍵盤的截取或者對屏幕進行截屏和錄屏;用戶輸入的密碼采用非對稱加密傳輸。
6)、SSL安全傳輸
客戶端與后臺采用ssl加密安全通道通訊,保證數(shù)據(jù)傳輸安全。
相對于現(xiàn)在如今的網(wǎng)銀金融服務,安全性是可以看得到的,網(wǎng)銀沒有什么加密,很容易感染木馬病毒,但是我們優(yōu)刷手機pos機是防止木馬病毒的侵害的。優(yōu)刷手機pos機全國招代理
第四篇:刷行天下手機pos機行業(yè)領導者
移動支付發(fā)展趨勢vs
大家知道移動支付一直是銀行卡新興支付非常引人注目的支付工具,最近兩年在中國以及亞洲地區(qū)移動支付的發(fā)展成為銀行卡產(chǎn)業(yè)支付模式和渠道創(chuàng)新的熱點問題。在未來的三年或者五年,移動支付對整個支付業(yè)會產(chǎn)生什么樣的影響?那么移動支付的發(fā)展趨勢又是怎樣的呢?在手機支付、移動支付的交流大會上北京展翔中聯(lián)科技發(fā)展有限公司()總裁孫啟超先生做了“移動支付的發(fā)展趨勢及展望”報告,深切的剖析移動支付的實質以及對手機支付、移動支付的展望。在大會中孫總說道:“伴隨著銀行借記卡以及信用卡逐漸普及、商業(yè)交易的隨時隨地性,以及移動網(wǎng)絡的發(fā)展,傳統(tǒng)的支付方式已經(jīng)不能滿足人們生活中的支付需求。在不久的將來,手機支付將會成為人們生活中的主要支付方式?,F(xiàn)在的支付手段要求第一位的是安全性的,第二是需要很方便,第三是需要個人化,準確的知道這次是誰支付的。另外對金融系統(tǒng)來講,希望在資金的調(diào)度和拆借上有很快的周轉性,所以手機支付基本上滿足了這些所有要求。而且巴塞爾協(xié)定決定報出號碼是申請帳戶,報出密碼是身份認證,這些功能可以通過任何一個信息網(wǎng)絡主張我的協(xié)議權,手機支付是最好滿足了這些,因為它把身份認證和帳戶管理集成在一起,變得非常簡單。在移動支付時代已經(jīng)到來的今天,我們北京展翔中聯(lián)科技發(fā)展有限公司()研發(fā)出刷行天下手機pos機(),將pos刷卡收費、借記卡轉賬、信用卡還款、公共事業(yè)繳費、機票火車票購買等功能集于一機,為你提供最前衛(wèi)、最便捷的支付方式”。在此次大會結束前孫總將刷行天下手機pos機所有功能一一展示,并得到了出席大會的各大金融行業(yè)領導的一致認可。
在此,我們相信在孫總的領導下,北京展翔中聯(lián)科技發(fā)展有限公司()研發(fā)的刷行天下手機pos機()將會為我們提供一個快捷、安全、隨心、隨意的支付環(huán)境。
第五篇:手機Android系統(tǒng)常用控件總結
找工作,上長沙英才網(wǎng)
手機Android系統(tǒng)常用控件總結
Notepad++編寫 可以負責粘貼到其中去 看得更清楚。(內(nèi)容包括了Android中的大部分常用控件及其事件的監(jiān)聽)第一章
1.1 Android中src文件夾包含項目的所有包及其資源文件,res文件夾包含了項目中所有的資源。比如:程序圖標(drawable),布局文件(layout),常量(value),音頻文件(raw)R.java是在創(chuàng)建項目是自動生成的只讀文件,不可更改此文件。R文件其作用:是定義項目中所有資源的索引文件。
1.2 AndroidManfest.xml 如下:
package=“Android.Summary” //引用程序包名 android:versionCode=“1” android:versionName=“1.0”> 找工作,上長沙英才網(wǎng)
1.3 String.xml如下:
Resources r = this.getContext().getResources();//通過Context的getResource()實例化一個Resources對象
String app_name =((String)r.getString(R.string.app_name));//然后通過getString()方法取得指定的索引的字符串。項目中所有常量都可以在String.xml文件中定義
String hello =((String)r.getString(R.string.hello));
1.4 main.xml如下:
找工作,上長沙英才網(wǎng)
android:orientation=“vertical” //版面配置的方式。此為自上到下為垂直配置,“horizontal”為水平配置 android:layout_width=“fill_parent” //定義當前視圖在屏幕上所占的寬度,“fill_parent”為填充整個屏幕寬度 /*android:layout_weight=“50”*/ //用于給一個布局中多個視圖的重要度賦值 android:layout_height=“fill_parent” //定義當前視圖在屏幕上所占的高度,...........................高度 > android:text=“@string/hello” //在視圖上顯示的內(nèi)容,此處引用了@String中的hello字符串 />
1.5 src下的java 如下: package Android.Summary;
import android.app.Activity;import android.os.Bundle;
public class SummaryActivity extends Activity { //繼承自Activity /** Called when the activity is first created.*/ @Override
找工作,上長沙英才網(wǎng)
public void onCreate(Bundle savedInstanceState){ //重寫onCreate()方法
super.onCreate(savedInstanceState);setContentView(R.layout.main);//設置要顯示的布局 } } 第二章
2.1 Android應用程序由四個模塊組成:Activity,Service,Intent,ContentProvider(注意:一個應用程序不一定包含全部的四個模塊).在使用時必須在AandroidManfest中進行聲明。
Activity可以理解為用戶看到屏幕,主要用于處理應用程序的整體性工作。如: a.監(jiān)聽系統(tǒng)事件,觸屏事件,為用戶顯示指定的View,啟動其他Activity等。b.所有應用的Activity都繼承于android.app.Activity,該類是Android提供的基層類。
c.一個Activity通常就是一個單獨的屏幕。d.每一個活動都被實現(xiàn)為一個獨立的類。e.大多數(shù)的應用程序都是由多個Activity組成。
Intent Aandroid中主要用Intent類實現(xiàn)從一個Activity跳轉到另一個Activity。在Intent的描述結構中,有兩個重要的部分:動作和對應的數(shù)據(jù)。
典型的動作有MAIN,VIEW,PICK,EDIT.而動作對應的數(shù)據(jù)則以URI的形式表示。例如:要查一個人的聯(lián)系方式,需要創(chuàng)建一個動作類型View的Intent ,以及一個表示這個人的URI.Intent的使用:
button1.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ Intent intent = new Intent();//創(chuàng)建一個Intent對象
intent.setClass(Activity01.this,Activity02.class);//指明要啟動的另一Activity02 startActivity(intent);//啟動一個新的Activity
找工作,上長沙英才網(wǎng)
Activity01.this.finish();//關閉當前Activity01 } });這里需要注意在Android中對新啟動的Activity進行聲明。聲明方式:
IntentReceiver 如果希望Android應用能夠對外部事件(如電話打入時,數(shù)據(jù)網(wǎng)絡可用時,)做出響應,可用使用IntentReceiver.雖然IntentReceiver在如上事件發(fā)生
時會使用NotificationManager通知用戶,但它并不能生產(chǎn)UI。IntentReceiver可以在AndroidManifest.xml中注冊,也可在代碼中使用Context.registerReceiver 進行注冊。當IntentReceiver被觸發(fā)時,系統(tǒng)會在需要的時候啟動應用。各種應用還可以通過ContentReceiver()將他們自己的IntentReceiver廣播出去。???????
Content Provider 作用:主要用于不同應用程序中的數(shù)據(jù)的傳遞。Content Provider 是一個特殊的存儲數(shù)據(jù)的類型。Android自身提供現(xiàn)成的Content Provider:Contacts ,Browser,CallLog,Settings,MediaStore 應用可用通過唯一的ContentResolver界面來使用具體的Conten Provider,然后可以用ContentResolver提供的方法來使用你需要的Content Provider 其中,ContentResolver提供的方法有query(),insert(),update()等。URI----String形式的Content Provider的完整路徑。
下面這個這個例子通過ContentProvider獲取電話本中的數(shù)據(jù),然后顯示到TextView中去。
public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){
找工作,上長沙英才網(wǎng)
TextView textView = new TextView(this);//得到TextView對象 String string = “";super.onCreate(savedInstanceState);
ContentResolver resolver = getContentResolver();//得到ContentResolver對象 Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);//取得電話本中開始一項的光標,通過query方法查詢出符合標準的電話本記錄 //向下移動光標
while(cursor.moveToNext()){ //取得聯(lián)系人名字
int name_index = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);String name = cursor.getString(name_index);//取得電話號碼
int number_index = cursor.getColumnIndex(PhoneLookup.NUMBER);String number = cursor.getString(number_index);
string +=(name+”:“+number+”n“);} cursor.close();textView.setText(string);//設置TextView顯示的內(nèi)容
setContentView(textView);//顯示到屏幕上 其實TextView也是View的一種 } } 注意:在使用這些模塊中用到了讀取聯(lián)系人的API,所以必須在AndroidManifest.xml中聲明
聲明方式為:
找工作,上長沙英才網(wǎng)
Service 后臺服務,沒有界面
啟動service方法: a.Context.startService()b.Context.bindService()//與上一種方法不同處 如果這個Service沒有處于啟動狀態(tài),則將其啟動
下面這個例子以Activity中的倆個控件來控制播放一首Mp3.(例中:需要在res文件夾中創(chuàng)建一個raw文件夾 然后放入一首MP3)
public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);
//從main.xml布局中獲得Button對象
Button button_start =(Button)findViewById(R.id.start);Button button_stop =(Button)findViewById(R.id.stop);//設置按鈕(Button)監(jiān)聽
button_start.setOnClickListener(start);button_stop.setOnClickListener(stop);} //開始按鈕
private OnClickListener start = new OnClickListener(){ public void onClick(View v){ //開啟Service startService(new Intent(”com.yarin.Android.MUSIC“));} };//停止按鈕
找工作,上長沙英才網(wǎng)
private OnClickListener stop = new OnClickListener(){ public void onClick(View v){ //停止Service stopService(new Intent(”com.yarin.Android.MUSIC“));} };}
public class MusicService extends Service{ //MediaPlayer對象
private MediaPlayer player;
public IBinder onBind(Intent arg0){ return null;} public void onStart(Intent intent, int startId){ super.onStart(intent, startId);//這里可以理解為裝載音樂文件
player = MediaPlayer.create(this, R.raw.test);//開始播放 player.start();}
public void onDestroy(){ super.onDestroy();//停止音樂-停止Service player.stop();} }
AndroidManifest.xml文件中
找工作,上長沙英才網(wǎng)
2.2 Aandrod的生命周期
public class Activity02 extends Activity{ private static final String TAG = ”Activity02“;
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main2);Log.v(TAG, ”onCreate“);} public void onStart(){ super.onStart();Log.v(TAG, ”onStart“);} public void onResume(){ super.onResume();Log.v(TAG, ”onResume“);} public void onPause(){ super.onPause();Log.v(TAG, ”onPause“);} public void onStop(){ super.onStop();Log.v(TAG, ”onStop“);
找工作,上長沙英才網(wǎng)
} public void onDestroy(){ super.onDestroy();Log.v(TAG, ”onDestroy“);} public void onRestart(){ super.onRestart();Log.v(TAG, ”onReStart“);} } 這些方法都是系統(tǒng)自動調(diào)用的。
第三章 3.1 事件處理
* 控件事件通過設置其控件的監(jiān)聽器來監(jiān)聽并處理事件 * 按鍵按下事件:通過重寫onKeyDown方法 * 按鍵彈起事件:通過重寫onKeyUp方法 * 觸筆點擊事件:通過實現(xiàn)onTouchEvent方法 * 示例中使用了Toast控件:
* Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
public class Activity01 extends Activity{
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);//獲得Button對象
Button button_ok =(Button)findViewById(R.id.ok);
找工作,上長沙英才網(wǎng)
button_ok.setOnClickListener(new Button.OnClickListener(){------------------------//設置Button控件監(jiān)聽器
public void onClick(View v){ //這里處理事件
DisplayToast(”點擊了OK按鈕“);} });}
/* 按鍵按下所觸發(fā)的事件*/ public boolean onKeyDown(int keyCode, KeyEvent event){ switch(keyCode){ case KeyEvent.KEYCODE_DPAD_CENTER: DisplayToast(”按下:中鍵“);break;case KeyEvent.KEYCODE_DPAD_UP: DisplayToast(”按下:上方向鍵“);break;case KeyEvent.KEYCODE_DPAD_DOWN: DisplayToast(”按下:下方向鍵“);break;case KeyEvent.KEYCODE_DPAD_LEFT: DisplayToast(”按下:左方向鍵“);break;case KeyEvent.KEYCODE_DPAD_RIGHT: DisplayToast(”按下:右方向鍵“);break;} return super.onKeyDown(keyCode, event);}
找工作,上長沙英才網(wǎng)
/* 按鍵彈起所觸發(fā)的事件*/ public boolean onKeyUp(int keyCode, KeyEvent event){ switch(keyCode){ case KeyEvent.KEYCODE_DPAD_CENTER: DisplayToast(”彈起:中鍵“);break;case KeyEvent.KEYCODE_DPAD_UP: DisplayToast(”彈起:上方向鍵“);break;case KeyEvent.KEYCODE_DPAD_DOWN: DisplayToast(”彈起:下方向鍵“);break;case KeyEvent.KEYCODE_DPAD_LEFT: DisplayToast(”彈起:左方向鍵“);break;case KeyEvent.KEYCODE_DPAD_RIGHT: DisplayToast(”彈起:右方向鍵“);break;} return super.onKeyUp(keyCode, event);} //用于響應按鍵重復點擊,官方API指出onKeyMultiple方法總是返回false,即它沒有handle,因此必須重寫才能實現(xiàn)-------------------此方法沒用過具體情況怎么樣不是很清楚?
public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event){
return super.onKeyMultiple(keyCode, repeatCount, event);}
/* 觸筆事件*/
找工作,上長沙英才網(wǎng)
public boolean onTouchEvent(MotionEvent event){ int iAction = event.getAction();//利用getAction得到所執(zhí)行的動作 if(iAction == MotionEvent.ACTION_CANCEL || iAction == MotionEvent.ACTION_DOWN || iAction == MotionEvent.ACTION_MOVE){ return false;} //得到觸筆點擊的位置 int x =(int)event.getX();int y =(int)event.getY();//將獲得的坐標轉成String類型的方法 DisplayToast(”觸筆點擊坐標:(“+Integer.toString(x)+”,“+Integer.toString(y)+”)“);
return super.onTouchEvent(event);}
/* 顯示Toast */ public void DisplayToast(String str){ Toast.makeText(this, str, Toast.LENGTH_SHORT).show();} } 我們分析了一些常用事件處理方式。每一個鍵都對應一個鍵值。當然也可根據(jù)需要來改變一些鍵的功能,需要我們自己構建KeyEvent對象------------------有待進一步學習
構造KeyEvent對象的幾種方法: KeyEvent(int action,int code);KeyEvent(long DownTime,long EventTime,int action,int code,int repeat);KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState);
找工作,上長沙英才網(wǎng)
KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode);KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode,int flags);KeyEvent(KeyEvent origEvent,long EventTime,int newRepart);例:
public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);} public boolean onKeyDown(int keyCode, KeyEvent event){ //這里構建KeyEvent對象,其功能為返回鍵的功能 //因此我們按任意鍵都會執(zhí)行返回鍵功能
KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
//這里傳入的參數(shù)就是我們自己構建的KeyEvent對象key return super.onKeyDown(key.getKeyCode(), key);} } 3.2 常用控件 Button xml設計
代碼設計Button button = new Button(this);
找工作,上長沙英才網(wǎng)
button.setText(”我是Button“);button.setWidth(123);//設置寬度 button.setHeight(123);//設置高度
button.setTextColor(Color.BLUE);//設置文字顏色 button.setTextSize(123);//設置字體大小
button.setBackgroundColor(Color.BLUE);//設置控件背景色
監(jiān)聽器
button.setOnClickListener(new Button.OnClickListener(){//設置按鈕的事件監(jiān)聽
public void onClick(View v){ //處理按鈕事件產(chǎn)生一個Toast.利用button.getText()得到按鈕顯示的內(nèi)容
Toast toast = Toast.makeText(Activity01.this, ”你點擊了““+button.getText()+””按鈕!“, Toast.LENGTH_LONG);//設置toast顯示的位置
toast.setGravity(Gravity.TOP, 0, 150);//顯示該Toast toast.show();} });-TextView 一個用來顯示文本的控件 xml設計 找工作,上長沙英才網(wǎng) android:text=”你好“/> android:paddingLeft=”50px“ android:paddingTop=”5px“ android:paddingBottom=”5px“ android:textSize=”30sp“ android:singleLine=”true“ android:layout_below=”@id/imageView_handler“//在什么下 android:gravity =”left“ //用于設置View中內(nèi)容相對于View組件的對齊方式,android:layout_gravity//用于設置View組件相對于Container的對齊方式。 android:paddingLeft=”30px“ // 按鈕上設置的內(nèi)容離按鈕左邊邊界30個像素 android:layout_marginLeft=”30px“ //整個按鈕離左邊設置的內(nèi)容30個像素 android:layout_weight=”1“//控件權重 即占的比例 默認值為0 android:gravity=”center_horizontal“//水平居中 android:padding=”3dip“ 代碼設計TextView textView = new TextView(this);//聲明對象 textView.setTextColor(Color.RED);//設置字體顏色 textView.setTextSize(20);//設置字體大小 textView.setBackgroundColor(Color.BLUE);//控件背景色 textView.setText(”你好“)//顯示的文字 textView.setHeight textView.setWidth textView.setVisibility(GONE/VISIBLE);//設置為不可見/可見 textView.setGravity(Gravity.CENTER);//設置文字權重 找工作,上長沙英才網(wǎng) 監(jiān)聽器TextView textView = new TextView(this);//得到對象 textview.setOnClickListener(new TextView.OnClickListener(){------------TextView監(jiān)聽器 public void onClick(View v){ } });---ImageButton 帶圖標的按鈕 xml設計 代碼中設計 imageButton.setImageDrawable(getResources().getDrawable(R.drawable.image2));//在代碼中設計使用的圖片(得到對象后) 監(jiān)聽器 imageButton.setOnClickListener(new Button.OnClickListener(){--------------ImageButton監(jiān)聽器 @Override public void onClick(View v){ //創(chuàng)建對話框 Dialog dialog = new AlertDialog.Builder(ImageButton_Dialog.this) 找工作,上長沙英才網(wǎng) .setTitle(”ImageButton2“).setMessage(”跳轉到系統(tǒng)圖片“).setPositiveButton(”確定“, new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which){ // TODO Auto-generated method stub imageButton2.setImageDrawable(getResources().getDrawable(android.R.drawable.sym_action_call));} }).create();dialog.show();} });---EditText xml設計 代碼設計EditText editText = new EditText(this);//得到EditText對象 editText.setTextSize(20);//設置字體大小 找工作,上長沙英才網(wǎng) editText.setHint(”請輸入賬號“);//設置當m_EditText中為空時提示的內(nèi)容 監(jiān)聽器 editText.setOnKeyListener(new EditText.OnKeyListener(){----------EditText監(jiān)聽器 @Override public boolean onKey(View arg0, int arg1, KeyEvent arg2){ // 得到文字,將其顯示到TextView中 m_TextView.setText(”文本框中內(nèi)容是:“ + m_EditText.getText().toString());return false;} });--------------------CheckBox 多項選擇 需要對沒有按鈕設置監(jiān)聽器 xml設計 checkBox1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){//對每個選項設置事件監(jiān)聽-------------------CheckBox監(jiān)聽器 @Override 找工作,上長沙英才網(wǎng) public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){ if(m_CheckBox1.isChecked()){ DisplayToast(”你選擇了:“+m_CheckBox1.getText());} } });----------------------Spinner 下拉列表 下面一個例子將可選內(nèi)容通過ArrayAdapter和下拉列表連接起來。設置監(jiān)聽器 通過setVisibility方法設置當前顯示項 main.xml 找工作,上長沙英才網(wǎng) /> public class Activity01 extends Activity{ private static final String[] string = { ”O(jiān)型“, ”A型“, ”B型“, ”AB型“, ”其他“ }; private TextView m_TextView;private Spinner m_Spinner;private ArrayAdapter @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main); m_TextView =(TextView)findViewById(R.id.TextView1);m_Spinner =(Spinner)findViewById(R.id.Spinner1); //將可選內(nèi)容與ArrayAdapter連接 adapter = new ArrayAdapter //設置下拉列表的風格 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //將adapter添加到m_Spinner中 m_Spinner.setAdapter(adapter); //添加Spinner事件監(jiān)聽 找工作,上長沙英才網(wǎng) m_Spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){--------------------------Spinner監(jiān)聽器 @Override public void onItemSelected(AdapterView> arg0, View arg1, int arg2, long arg3){ m_TextView.setText(”你的血型是:“ + string[arg2]);//設置顯示當前選擇的項 arg0.setVisibility(View.VISIBLE);} @Override public void onNothingSelected(AdapterView> arg0){ // TODO Auto-generated method stub });} } }---------RadioGroup , RadioButton 單選選擇控件 一個單選選擇由兩部分組成,分別是前面的選擇按鈕和后面的內(nèi)容。按鈕通過RadioButton來實現(xiàn),答案通過RadioGroup來實現(xiàn) 如果確定是選擇哪一項那就要設置監(jiān)聽器setOnCheckedChangeListener.下面有一例子:本例中使用到了String.xml文件來定義常量。string.xml 找工作,上長沙英才網(wǎng) main.xml 找工作,上長沙英才網(wǎng) android:layout_width=”wrap_content“ android:layout_height=”wrap_content“ android:text=”@string/RadioButton1“ /> public class Activity01 extends Activity{ TextView m_TextView;RadioGroup m_RadioGroup;RadioButton m_Radio1, m_Radio2, m_Radio3, m_Radio4; @Override 找工作,上長沙英才網(wǎng) public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main); m_RadioGroup =(RadioGroup)findViewById(R.id.RadioGroup01);//獲得RadioGroup對象 m_Radio1 =(RadioButton)findViewById(R.id.RadioButton1);//獲得4個RadioButton對象 m_Radio2 =(RadioButton)findViewById(R.id.RadioButton2);m_Radio3 =(RadioButton)findViewById(R.id.RadioButton3);m_Radio4 =(RadioButton)findViewById(R.id.RadioButton4); /* 設置事件監(jiān)聽 */ m_RadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){---------------------------RadioGroup監(jiān)聽器 @Override public void onCheckedChanged(RadioGroup group, int checkedId){ if(checkedId == m_Radio2.getId()){ DisplayToast(”正確答案:“ + m_Radio2.getText()+ ”,恭喜你,回答正確!“);}else{ DisplayToast(”請注意,回答錯誤!“);} } });} public void DisplayToast(String str)//顯示Toast{ Toast toast = Toast.makeText(this, str, Toast.LENGTH_LONG);//設置toast顯示的位置 找工作,上長沙英才網(wǎng) toast.setGravity(Gravity.TOP, 0, 220);//顯示該Toast toast.show();} }--------------AutoCompletTextView 和MultiAutoCompleteTextView 作用:自動提示 下面例中用到了ArrayAdapter autoCompletTextView.xml //如何實現(xiàn)如果輸入的字符不在其范圍內(nèi)的也能得到提示 是繼承TextWatcher? 找工作,上長沙英才網(wǎng) public class Control_Auto extends Activity { //implements TextWatcher{} public TextView textView_auto; private static final String[] string ={”ni hao“,”ni hao “,”ni hao ma“,”ni zheng de hao ma“,”nshis“}; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.autocompletetextview); //將可選內(nèi)容與適配器ArrayAdapter連接 ArrayAdapter MultiAutoCompleteTextView multiAutoCompletTextView =(MultiAutoCompleteTextView)findViewById(R.id.multiAutoCompleteTextView);AutoCompleteTextView autoCompleteTextView =(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView); autoCompleteTextView.setAdapter(adapter);//將adapter添加到AutoCompletTextView中去 multiAutoCompletTextView.setAdapter(adapter);//將adapter添加到MultAutoCompleteTextView中去 multiAutoCompletTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());} } 找工作,上長沙英才網(wǎng) /* //autoCompleteTextView.addTextChangedListener(this);---此為設置監(jiān)聽? * 例子中沒有涉及到的屬性(可在布局文件中設置): AutoCompleteTextView是EditText的子類,所以你可以對它的對象進行諸如外觀/字體/顏色等屬性值的設置。 completionThreshold:它的值決定了你在AutoCompleteTextView至少輸入幾個字符,它才會具有自動提示的功能。另,默認最多提示20條。 dropDownAnchor:它的值是一個View的ID,指定后,AutoCompleteTextView會在這個View下彈出自動提示。 dropDownSelector:應該是設置自動提示的背景色之類的。 dropDownWidth:設置自動提示列表的寬度。 你可以通過setAdapter()來給AutoCompleteTextView添加一個包含候選值列表的適配器(adapter)。--------此處沒實現(xiàn)過? 然而,由于用戶可以輸入一些不在候選值列表的數(shù)據(jù),AutoCompleteTextView不支 持selection listener。不過,你可以注冊一個TextWacther用于當用戶輸入文本發(fā)生變化時發(fā)出通知。 -------------------------DatePicker,TimePicker 日期和時間 下例中首先需要在布局文件中定義DatePicker和TimePicker,然后通過Canlendar類獲得系統(tǒng)時間,接著通過init方法將日期傳給DatePicker, 并設置OnDateChangedListener來監(jiān)聽日期改變,當時間被改變時需要設置setOnTimeChangedListener監(jiān)聽來設置時間。datepicker_timepicker.xml 找工作,上長沙英才網(wǎng) > 找工作,上長沙英才網(wǎng) public class Date_Time extends Activity{//如何實現(xiàn)日期隨系統(tǒng)不斷變化?要聯(lián)網(wǎng)才能實現(xiàn)?如何變換DatePicker和TimePicker樣式(如顏色,圖片等)? Calendar calendar;TextView textView_date_time;Button button_date_time1;Button button_date_time2;DatePicker datePicker;TimePicker timePicker;public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.datepicker_timepicker);calendar = Calendar.getInstance();//得到日歷對象 textView_date_time =(TextView)findViewById(R.id.textView_date_time1);button_date_time1 =(Button)findViewById(R.id.button_date_time1);button_date_time2 =(Button)findViewById(R.id.button_date_time2);datePicker =(DatePicker)findViewById(R.id.datePicker);timePicker =(TimePicker)findViewById(R.id.timerPicker); button_date_time1.setWidth(50);button_date_time1.setHeight(60);button_date_time1.setTextColor(Color.BLUE); timePicker.setIs24HourView(true);//設置為24小時制 //將日歷初始化為當前系統(tǒng)日期,并設置監(jiān)聽器 datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),-------------DatePicker監(jiān)聽器 找工作,上長沙英才網(wǎng) calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener(){//OnDateChangedListener監(jiān)聽日期的變化 @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth){ //設置日期 calendar.set(1987,10,15);} }); timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener(){------------TimePicker監(jiān)聽器 @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute){ //設置時間 //calendar.set(1987,10,29,23,23,23);//年 月 日 小時 分鐘 秒 textView_date_time.setText(”當前時間:“+hourOfDay+” : “+minute);} }); button_date_time1.setOnClickListener(new Button.OnClickListener(){//日期的監(jiān)聽---------------------------Button控件中設置DatePicker監(jiān)聽器 找工作,上長沙英才網(wǎng) @Override public void onClick(View v){ new DatePickerDialog(Date_Time.this,new DatePickerDialog.OnDateSetListener(){ @Override public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth){ //設置日歷 textView_date_time.setText(”農(nóng)歷“+year+” 年“+monthOfYear+” 月“+dayOfMonth+” 日“);} },calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();} }); button_date_time2.setOnClickListener(new Button.OnClickListener(){//時間的監(jiān)聽器----------------------------Button控件中設置TimePicker監(jiān)聽器 @Override public void onClick(View v){new TimePickerDialog(Date_Time.this, new TimePickerDialog.OnTimeSetListener(){ @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute){ //設置時間 找工作,上長沙英才網(wǎng) textView_date_time.setText(”北京時間:“+hourOfDay+” : “+minute);} },calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true).show();}});} } ---------------Menu 操作應用程序的菜單選項 第一個例子:通過XML文件來實現(xiàn) menu_com.xml
public class Menu_Xml extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.此為所以顯示的界面id);} public boolean onCreateOptionsMenu(Menu menu){//創(chuàng)建menu MenuInflater inflater = getMenuInflater();//設置menu界面
inflater.inflate(R.layout.menu_com, menu);
找工作,上長沙英才網(wǎng)
return true;} public boolean onOptionsItemSelected(MenuItem item){//處理菜單事件 switch(item.getItemId()){ case R.id.about: Menu_Xml.this.finish();case R.id.skip: Intent intent = new Intent();intent.setClass(Menu_Xml.this, Menu_add.class);//跳轉到Menu_add中去
startActivity(intent);Menu_Xml.this.finish();} return true;} } =============== 第二個例子:在代碼中生成Menu 此例中包含倆個方法 注意區(qū)分注釋掉的為另一種增加Menu的方法
public class Menu_add extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.toast);} public boolean onCreateOptionsMenu(Menu menu){//創(chuàng)立menu /*為Menu添加內(nèi)容參數(shù):Menu.add()方法第一個參數(shù)表示給這個新增的菜單項分配一個分組號;
* 第二個參數(shù)表示給這個新增的菜單項分配一個唯一標識id;第三個參數(shù)為菜單項的序號;
找工作,上長沙英才網(wǎng)
* 第四個參數(shù)為菜單項的標題。
我們可以通過調(diào)用Menu.setItemShown()或者Menu.setGroupShown()方法來顯示或隱藏一些菜單項。
這里要注意的一個地方是:菜單項的顯示順序是按代碼中添加的順序來的,也就是說Menu.add()方法
只能在菜單的最后面新增一個菜單項。另外,第一個參數(shù)的分組標識,不會改變菜單項的顯示順序。
方法一:
//menu.add(0,0,0,R.string.menu1);方法一 //menu.add(0,1,1,R.string.menu2);方法二:
SubMenu subMenu = menu.addSubMenu(1, 1, 2, ”選項“);//此方法和menu方法類似
subMenu.add(13,13,13, ”到Content_Menu“);subMenu.add(13,24,24,”到Menu_Xml“);
return true;} public boolean onOptionsItemSelected(MenuItem item){//處理Menu事件 switch(item.getItemId()){//getItemId()得到菜單項的ID,即上面的第二個參數(shù) case 13: Intent intent1 = new Intent();intent1.setClass(Menu_add.this, Context_Menu.class);startActivity(intent1);Menu_add.this.finish();case 23: Intent intent = new Intent();intent.setClass(Menu_add.this, Menu_Xml.class);//跳轉到其他界面中去
找工作,上長沙英才網(wǎng)
startActivity(intent);Menu_add.this.finish();break;} return true;} } ============== 第三個例子:Context Menu的創(chuàng)建:
概述:Android 的上下文菜單類似于PC 上的右鍵菜單。當為一個視圖注冊了上下文菜單之后,長按(2 秒左右)這個視圖對象就會彈出一個浮動菜單,即上下文菜單。任何視圖都可以
注冊上下文菜單,不過,最常見的是用于列表視圖ListView的item。
注意:Android 的上下文菜單不支持圖標或快捷鍵。
創(chuàng)建一個上下文菜單的步驟:
1.覆蓋Activity 的onCreateContenxtMenu()方法,調(diào)用Menu 的add 方法添加菜單項(MenuItem)。
2.覆蓋Activity 的onContextItemSelected()方法,響應上下文菜單菜單項的單擊事件。
3.調(diào)用registerForContextMenu()方法,為視圖注冊上下文菜單。menu_com2.xml
找工作,上長沙英才網(wǎng)
public class Context_Menu extends Activity{ public TextView textView_context_Menu;public Button buttont_context_Menu;
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.menu_com2);textView_context_Menu =(TextView)findViewById(R.id.textView_context_Menu);buttont_context_Menu =(Button)findViewById(R.id.button_context_Menu);
registerForContextMenu(textView_context_Menu);registerForContextMenu(buttont_context_Menu);//這里的registerForContextMenu()也可以用下面的語句替代 //getContentView().setOnCreateContextMenuListener(this);}
找工作,上長沙英才網(wǎng)
//創(chuàng)建Context Menu public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){ if(v==textView_context_Menu){ menu.setHeaderTitle(”這個是什么?“);menu.add(0,0,0,”蘋果“);menu.add(0,1,1,”獼猴桃“);}else if(v==buttont_context_Menu){ menu.setHeaderTitle(”我知道是什么了!“);menu.add(2,2,2,”不是蘋果“);menu.add(2,3,3,”就是獼猴桃“);} super.onCreateContextMenu(menu, v, menuInfo);} //菜單單擊響應 @Override public boolean onContextItemSelected(MenuItem item){ //獲取當前被選擇的菜單項的信息 switch(item.getItemId()){ case 1: Toast toast=Toast.makeText(Context_Menu.this, ”你點擊了“+textView_context_Menu.getText(), Toast.LENGTH_LONG);toast.setGravity(Gravity.TOP, 100, 300);toast.show();break;case 3: Toast toast1=Toast.makeText(Context_Menu.this, ”你點擊了“+buttont_context_Menu.getText(), Toast.LENGTH_LONG);toast1.setGravity(Gravity.TOP, 100, 300);toast1.show();break;
找工作,上長沙英才網(wǎng)
} return true;} } ============== 第四個例子:動態(tài)Menu 此為動態(tài)Menu的實現(xiàn),采用的是代碼布局(非XML布局)。此種Memu用在什么情況下,具體該怎么做?
public class Trends_Menu extends Activity{ LinearLayout linearLayout;TextView textView;public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);linearLayout = new LinearLayout(this);linearLayout.setBackgroundColor(android.graphics.Color.BLUE);//設置背景色
linearLayout.setOrientation(linearLayout.VERTICAL);//設置布局方向
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);textView= new TextView(this);//創(chuàng)建TextView對象 textView.setBackgroundColor(Color.YELLOW);//設置背景顏色 textView.setText(”Trends_Men“);textView.setTextSize(50);//textView.setHeight(50);//textView.setWidth(100);textView.setTextColor(Color.RED);//設置字體顏色
找工作,上長沙英才網(wǎng)
linearLayout.addView(textView,params);//將textView添加到linearLayout中去
setContentView(linearLayout);//設置ui布局 } public boolean onPrepareOptionsMenu(Menu menu){ String string = textView.getText().toString();if(string.equals(”Trends_Menu“)){ menu.clear();//清掉菜單
MenuItem item = menu.add(0,1,1,”to Menu“);item.setIcon(android.R.drawable.alert_dark_frame);//android自帶的圖標 } if(string.equals(”Menu“)){ menu.clear();MenuItem item = menu.add(1,2,2,”to Trends_Menu“);item.setIcon(android.R.drawable.alert_light_frame);} menu.add(0,2,2,”Now is“+string);return super.onPrepareOptionsMenu(menu);} }
-------------ListView 一個用來顯示列表的控件 xml設計
代碼設計
第一個例子:
public class ListView3 extends ListActivity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);
找工作,上長沙英才網(wǎng)
String[] string={”華中科技“,”天龍大廈“,”科技園“,”天天樂園“};//string 是用來要存放的數(shù)據(jù)
//android.R.layout.simple_expandable_list_item_1為XML的配置文件, 用來設置列表中每一行的窗口 setListAdapter(new ArrayAdapter
* 在配置文件中要注意的是android:list 是系統(tǒng)自定義的不是隨便可以取的,否則會出現(xiàn)找不到ListView ==================== 第二個例子: textView_chrild.xml 找工作,上長沙英才網(wǎng) android:layout_height=”fill_parent“ android:paddingLeft=”50px“ android:paddingTop=”5px“ android:paddingBottom=”5px“ android:text=”no date“ android:textSize=”30sp“ />
找工作,上長沙英才網(wǎng)
找工作,上長沙英才網(wǎng)
map1.put(”list1“, ”map1“);map2.put(”list1“, ”map2“);list1.add(map1);list1.add(map2);//定義一個List,該List對象為第一個一級條目 提供數(shù)據(jù) List
//定義一個List,該List對象用來存儲所有二級條目對象 List>> list0 = new ArrayList
>>();list0.add(list21);list0.add(list31);
SimpleExpandableListAdapter simple = new SimpleExpandableListAdapter(找工作,上長沙英才網(wǎng)
this,//context list1,//一級條目數(shù)據(jù)
R.layout.expandable_group,//用來設置一級條目樣式的布局文件 new String[]{”list1“}, //指定一級條目數(shù)據(jù)的Key new int[]{R.id.textView_group},//指定一級條目數(shù)據(jù)顯示的控件id list0, //二級條目數(shù)據(jù)
R.layout.expandable_chrild,//用來設置二級條目樣式的布局文件 new String[]{”list“}, //指定二級條目數(shù)據(jù)的Key new int[]{R.id.textView_chrild});//指定二級條目數(shù)據(jù)顯示的控件id
setListAdapter(simple);//將SimpleExpandableListAdapter對象設置給當前的Activity } } ============================= 第三個例子:自定義ListView public class ImageTextView extends LinearLayout{ public TextView textView;public ImageView imageView;
public ImageTextView(Context context, String string,Drawable drawable){----* 注意這里并沒用在xml定義控件
super(context);// TODO Auto-generated constructor stub this.setOrientation(VERTICAL);//設置為水平布局 imageView = new ImageView(context);imageView.setImageDrawable(drawable);imageView.setPadding(2, 5, 5, 0);//設置位置
addView(imageView,new LinearLayout.LayoutParams(40,30));
找工作,上長沙英才網(wǎng)
textView = new TextView(context);textView.setText(”title“);textView.setTextSize(20);addView(textView,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,30));
textView = new TextView(context);textView.setText(”title“);textView.setTextSize(20);addView(textView,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,30));} * 這是一個線性布局的View,其中包含一個TextView 和一個ImageView.* 且為垂直布局 }-----------------------public class ListCombinAdapter extends BaseAdapter{------------繼承BaseAdapter 且必須重寫五個函數(shù) private Context wcontext;private List
public ListCombinAdapter(Context context){ this.wcontext=context;list = new ArrayList
找工作,上長沙英才網(wǎng)
} @Override public Object getItem(int position){ return list.get(position);//得到對象在List數(shù)組中的位置 } @Override public long getItemId(int position){ return(long)position;} public long getPosition(Object item){ return list.indexOf(item);//得到對象在list中的索引 } @Override public View getView(int position, View convertView, ViewGroup parent){//得到一個顯示在屏幕上的View ImageTextView imageTextView;if(convertView == null){//判斷原來的View是否存在 如果不存在利用ImageTextView創(chuàng)建一個View imageTextView = new ImageTextView(wcontext,(String)list.get(position).textView.getText(),list.get(position).imageView.getDrawable());}else{ imageTextView =(ImageTextView)convertView;//強制轉型 imageTextView.textView = list.get(position).textView;imageTextView.imageView = list.get(position).imageView;} return imageTextView;} public void addItem(String text,Drawable drawable){ list.add(new ImageTextView(wcontext,text,drawable));//將創(chuàng)建好的ImageTextView對象加入到list中去
找工作,上長沙英才網(wǎng)
} }----------------------public class ListView4Activity extends ListActivity {//定制自己的adapter @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);//setContentView(R.layout.main);//不需要此項
ListCombinAdapter listCombinAdapter = new ListCombinAdapter(this);listCombinAdapter.addItem(”不知道此處的字符串起什么作用“,getResources().getDrawable(R.drawable.image2));listCombinAdapter.addItem(”不知道此處的字符串起什么作用“, getResources().getDrawable(R.drawable.image3));setListAdapter(listCombinAdapter);} } ===================== 第四個例子: simpleadapter2.xml 找工作,上長沙英才網(wǎng) android:orientation=”horizontal“> 找工作,上長沙英才網(wǎng) android:gravity=”right“ android:textSize=”10pt“ />
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);ArrayList