第一篇:手機(jī)Android系統(tǒng)常用控件總結(jié)
找工作,上長(zhǎng)沙英才網(wǎng)
手機(jī)Android系統(tǒng)常用控件總結(jié)
Notepad++編寫 可以負(fù)責(zé)粘貼到其中去 看得更清楚。(內(nèi)容包括了Android中的大部分常用控件及其事件的監(jiān)聽(tīng))第一章
1.1 Android中src文件夾包含項(xiàng)目的所有包及其資源文件,res文件夾包含了項(xiàng)目中所有的資源。比如:程序圖標(biāo)(drawable),布局文件(layout),常量(value),音頻文件(raw)R.java是在創(chuàng)建項(xiàng)目是自動(dòng)生成的只讀文件,不可更改此文件。R文件其作用:是定義項(xiàng)目中所有資源的索引文件。
1.2 AndroidManfest.xml 如下:
package=“Android.Summary” //引用程序包名 android:versionCode=“1” android:versionName=“1.0”> 找工作,上長(zhǎng)沙英才網(wǎng)
1.3 String.xml如下:
Resources r = this.getContext().getResources();//通過(guò)Context的getResource()實(shí)例化一個(gè)Resources對(duì)象
String app_name =((String)r.getString(R.string.app_name));//然后通過(guò)getString()方法取得指定的索引的字符串。項(xiàng)目中所有常量都可以在String.xml文件中定義
String hello =((String)r.getString(R.string.hello));
1.4 main.xml如下:
找工作,上長(zhǎng)沙英才網(wǎng)
android:orientation=“vertical” //版面配置的方式。此為自上到下為垂直配置,“horizontal”為水平配置 android:layout_width=“fill_parent” //定義當(dāng)前視圖在屏幕上所占的寬度,“fill_parent”為填充整個(gè)屏幕寬度 /*android:layout_weight=“50”*/ //用于給一個(gè)布局中多個(gè)視圖的重要度賦值 android:layout_height=“fill_parent” //定義當(dāng)前視圖在屏幕上所占的高度,...........................高度 > 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
找工作,上長(zhǎng)沙英才網(wǎng)
public void onCreate(Bundle savedInstanceState){ //重寫onCreate()方法
super.onCreate(savedInstanceState);setContentView(R.layout.main);//設(shè)置要顯示的布局 } } 第二章
2.1 Android應(yīng)用程序由四個(gè)模塊組成:Activity,Service,Intent,ContentProvider(注意:一個(gè)應(yīng)用程序不一定包含全部的四個(gè)模塊).在使用時(shí)必須在AandroidManfest中進(jìn)行聲明。
Activity可以理解為用戶看到屏幕,主要用于處理應(yīng)用程序的整體性工作。如: a.監(jiān)聽(tīng)系統(tǒng)事件,觸屏事件,為用戶顯示指定的View,啟動(dòng)其他Activity等。b.所有應(yīng)用的Activity都繼承于android.app.Activity,該類是Android提供的基層類。
c.一個(gè)Activity通常就是一個(gè)單獨(dú)的屏幕。d.每一個(gè)活動(dòng)都被實(shí)現(xiàn)為一個(gè)獨(dú)立的類。e.大多數(shù)的應(yīng)用程序都是由多個(gè)Activity組成。
Intent Aandroid中主要用Intent類實(shí)現(xiàn)從一個(gè)Activity跳轉(zhuǎn)到另一個(gè)Activity。在Intent的描述結(jié)構(gòu)中,有兩個(gè)重要的部分:動(dòng)作和對(duì)應(yīng)的數(shù)據(jù)。
典型的動(dòng)作有MAIN,VIEW,PICK,EDIT.而動(dòng)作對(duì)應(yīng)的數(shù)據(jù)則以URI的形式表示。例如:要查一個(gè)人的聯(lián)系方式,需要?jiǎng)?chuàng)建一個(gè)動(dòng)作類型View的Intent ,以及一個(gè)表示這個(gè)人的URI.Intent的使用:
button1.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ Intent intent = new Intent();//創(chuàng)建一個(gè)Intent對(duì)象
intent.setClass(Activity01.this,Activity02.class);//指明要啟動(dòng)的另一Activity02 startActivity(intent);//啟動(dòng)一個(gè)新的Activity
找工作,上長(zhǎng)沙英才網(wǎng)
Activity01.this.finish();//關(guān)閉當(dāng)前Activity01 } });這里需要注意在Android中對(duì)新啟動(dòng)的Activity進(jìn)行聲明。聲明方式:
IntentReceiver 如果希望Android應(yīng)用能夠?qū)ν獠渴录ㄈ珉娫挻蛉霑r(shí),數(shù)據(jù)網(wǎng)絡(luò)可用時(shí),)做出響應(yīng),可用使用IntentReceiver.雖然IntentReceiver在如上事件發(fā)生
時(shí)會(huì)使用NotificationManager通知用戶,但它并不能生產(chǎn)UI。IntentReceiver可以在AndroidManifest.xml中注冊(cè),也可在代碼中使用Context.registerReceiver 進(jìn)行注冊(cè)。當(dāng)IntentReceiver被觸發(fā)時(shí),系統(tǒng)會(huì)在需要的時(shí)候啟動(dòng)應(yīng)用。各種應(yīng)用還可以通過(guò)ContentReceiver()將他們自己的IntentReceiver廣播出去。???????
Content Provider 作用:主要用于不同應(yīng)用程序中的數(shù)據(jù)的傳遞。Content Provider 是一個(gè)特殊的存儲(chǔ)數(shù)據(jù)的類型。Android自身提供現(xiàn)成的Content Provider:Contacts ,Browser,CallLog,Settings,MediaStore 應(yīng)用可用通過(guò)唯一的ContentResolver界面來(lái)使用具體的Conten Provider,然后可以用ContentResolver提供的方法來(lái)使用你需要的Content Provider 其中,ContentResolver提供的方法有query(),insert(),update()等。URI----String形式的Content Provider的完整路徑。
下面這個(gè)這個(gè)例子通過(guò)ContentProvider獲取電話本中的數(shù)據(jù),然后顯示到TextView中去。
public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){
找工作,上長(zhǎng)沙英才網(wǎng)
TextView textView = new TextView(this);//得到TextView對(duì)象 String string = “";super.onCreate(savedInstanceState);
ContentResolver resolver = getContentResolver();//得到ContentResolver對(duì)象 Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);//取得電話本中開(kāi)始一項(xiàng)的光標(biāo),通過(guò)query方法查詢出符合標(biāo)準(zhǔn)的電話本記錄 //向下移動(dòng)光標(biāo)
while(cursor.moveToNext()){ //取得聯(lián)系人名字
int name_index = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);String name = cursor.getString(name_index);//取得電話號(hào)碼
int number_index = cursor.getColumnIndex(PhoneLookup.NUMBER);String number = cursor.getString(number_index);
string +=(name+”:“+number+”n“);} cursor.close();textView.setText(string);//設(shè)置TextView顯示的內(nèi)容
setContentView(textView);//顯示到屏幕上 其實(shí)TextView也是View的一種 } } 注意:在使用這些模塊中用到了讀取聯(lián)系人的API,所以必須在AndroidManifest.xml中聲明
聲明方式為:
找工作,上長(zhǎng)沙英才網(wǎng)
Service 后臺(tái)服務(wù),沒(méi)有界面
啟動(dòng)service方法: a.Context.startService()b.Context.bindService()//與上一種方法不同處 如果這個(gè)Service沒(méi)有處于啟動(dòng)狀態(tài),則將其啟動(dòng)
下面這個(gè)例子以Activity中的倆個(gè)控件來(lái)控制播放一首Mp3.(例中:需要在res文件夾中創(chuàng)建一個(gè)raw文件夾 然后放入一首MP3)
public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);
//從main.xml布局中獲得Button對(duì)象
Button button_start =(Button)findViewById(R.id.start);Button button_stop =(Button)findViewById(R.id.stop);//設(shè)置按鈕(Button)監(jiān)聽(tīng)
button_start.setOnClickListener(start);button_stop.setOnClickListener(stop);} //開(kāi)始按鈕
private OnClickListener start = new OnClickListener(){ public void onClick(View v){ //開(kāi)啟Service startService(new Intent(”com.yarin.Android.MUSIC“));} };//停止按鈕
找工作,上長(zhǎng)沙英才網(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對(duì)象
private MediaPlayer player;
public IBinder onBind(Intent arg0){ return null;} public void onStart(Intent intent, int startId){ super.onStart(intent, startId);//這里可以理解為裝載音樂(lè)文件
player = MediaPlayer.create(this, R.raw.test);//開(kāi)始播放 player.start();}
public void onDestroy(){ super.onDestroy();//停止音樂(lè)-停止Service player.stop();} }
AndroidManifest.xml文件中
找工作,上長(zhǎng)沙英才網(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“);
找工作,上長(zhǎng)沙英才網(wǎng)
} public void onDestroy(){ super.onDestroy();Log.v(TAG, ”onDestroy“);} public void onRestart(){ super.onRestart();Log.v(TAG, ”onReStart“);} } 這些方法都是系統(tǒng)自動(dòng)調(diào)用的。
第三章 3.1 事件處理
* 控件事件通過(guò)設(shè)置其控件的監(jiān)聽(tīng)器來(lái)監(jiān)聽(tīng)并處理事件 * 按鍵按下事件:通過(guò)重寫onKeyDown方法 * 按鍵彈起事件:通過(guò)重寫onKeyUp方法 * 觸筆點(diǎn)擊事件:通過(guò)實(shí)現(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對(duì)象
Button button_ok =(Button)findViewById(R.id.ok);
找工作,上長(zhǎng)沙英才網(wǎng)
button_ok.setOnClickListener(new Button.OnClickListener(){------------------------//設(shè)置Button控件監(jiān)聽(tīng)器
public void onClick(View v){ //這里處理事件
DisplayToast(”點(diǎn)擊了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);}
找工作,上長(zhǎng)沙英才網(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);} //用于響應(yīng)按鍵重復(fù)點(diǎn)擊,官方API指出onKeyMultiple方法總是返回false,即它沒(méi)有handle,因此必須重寫才能實(shí)現(xiàn)-------------------此方法沒(méi)用過(guò)具體情況怎么樣不是很清楚?
public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event){
return super.onKeyMultiple(keyCode, repeatCount, event);}
/* 觸筆事件*/
找工作,上長(zhǎng)沙英才網(wǎng)
public boolean onTouchEvent(MotionEvent event){ int iAction = event.getAction();//利用getAction得到所執(zhí)行的動(dòng)作 if(iAction == MotionEvent.ACTION_CANCEL || iAction == MotionEvent.ACTION_DOWN || iAction == MotionEvent.ACTION_MOVE){ return false;} //得到觸筆點(diǎn)擊的位置 int x =(int)event.getX();int y =(int)event.getY();//將獲得的坐標(biāo)轉(zhuǎn)成String類型的方法 DisplayToast(”觸筆點(diǎn)擊坐標(biāo):(“+Integer.toString(x)+”,“+Integer.toString(y)+”)“);
return super.onTouchEvent(event);}
/* 顯示Toast */ public void DisplayToast(String str){ Toast.makeText(this, str, Toast.LENGTH_SHORT).show();} } 我們分析了一些常用事件處理方式。每一個(gè)鍵都對(duì)應(yīng)一個(gè)鍵值。當(dāng)然也可根據(jù)需要來(lái)改變一些鍵的功能,需要我們自己構(gòu)建KeyEvent對(duì)象------------------有待進(jìn)一步學(xué)習(xí)
構(gòu)造KeyEvent對(duì)象的幾種方法: 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);
找工作,上長(zhǎng)沙英才網(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){ //這里構(gòu)建KeyEvent對(duì)象,其功能為返回鍵的功能 //因此我們按任意鍵都會(huì)執(zhí)行返回鍵功能
KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
//這里傳入的參數(shù)就是我們自己構(gòu)建的KeyEvent對(duì)象key return super.onKeyDown(key.getKeyCode(), key);} } 3.2 常用控件 Button xml設(shè)計(jì)
代碼設(shè)計(jì)Button button = new Button(this);
找工作,上長(zhǎng)沙英才網(wǎng)
button.setText(”我是Button“);button.setWidth(123);//設(shè)置寬度 button.setHeight(123);//設(shè)置高度
button.setTextColor(Color.BLUE);//設(shè)置文字顏色 button.setTextSize(123);//設(shè)置字體大小
button.setBackgroundColor(Color.BLUE);//設(shè)置控件背景色
監(jiān)聽(tīng)器
button.setOnClickListener(new Button.OnClickListener(){//設(shè)置按鈕的事件監(jiān)聽(tīng)
public void onClick(View v){ //處理按鈕事件產(chǎn)生一個(gè)Toast.利用button.getText()得到按鈕顯示的內(nèi)容
Toast toast = Toast.makeText(Activity01.this, ”你點(diǎn)擊了““+button.getText()+””按鈕!“, Toast.LENGTH_LONG);//設(shè)置toast顯示的位置
toast.setGravity(Gravity.TOP, 0, 150);//顯示該Toast toast.show();} });-TextView 一個(gè)用來(lái)顯示文本的控件 xml設(shè)計(jì) 找工作,上長(zhǎng)沙英才網(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“ //用于設(shè)置View中內(nèi)容相對(duì)于View組件的對(duì)齊方式,android:layout_gravity//用于設(shè)置View組件相對(duì)于Container的對(duì)齊方式。 android:paddingLeft=”30px“ // 按鈕上設(shè)置的內(nèi)容離按鈕左邊邊界30個(gè)像素 android:layout_marginLeft=”30px“ //整個(gè)按鈕離左邊設(shè)置的內(nèi)容30個(gè)像素 android:layout_weight=”1“//控件權(quán)重 即占的比例 默認(rèn)值為0 android:gravity=”center_horizontal“//水平居中 android:padding=”3dip“ 代碼設(shè)計(jì)TextView textView = new TextView(this);//聲明對(duì)象 textView.setTextColor(Color.RED);//設(shè)置字體顏色 textView.setTextSize(20);//設(shè)置字體大小 textView.setBackgroundColor(Color.BLUE);//控件背景色 textView.setText(”你好“)//顯示的文字 textView.setHeight textView.setWidth textView.setVisibility(GONE/VISIBLE);//設(shè)置為不可見(jiàn)/可見(jiàn) textView.setGravity(Gravity.CENTER);//設(shè)置文字權(quán)重 找工作,上長(zhǎng)沙英才網(wǎng) 監(jiān)聽(tīng)器TextView textView = new TextView(this);//得到對(duì)象 textview.setOnClickListener(new TextView.OnClickListener(){------------TextView監(jiān)聽(tīng)器 public void onClick(View v){ } });---ImageButton 帶圖標(biāo)的按鈕 xml設(shè)計(jì) 代碼中設(shè)計(jì) imageButton.setImageDrawable(getResources().getDrawable(R.drawable.image2));//在代碼中設(shè)計(jì)使用的圖片(得到對(duì)象后) 監(jiān)聽(tīng)器 imageButton.setOnClickListener(new Button.OnClickListener(){--------------ImageButton監(jiān)聽(tīng)器 @Override public void onClick(View v){ //創(chuàng)建對(duì)話框 Dialog dialog = new AlertDialog.Builder(ImageButton_Dialog.this) 找工作,上長(zhǎng)沙英才網(wǎng) .setTitle(”ImageButton2“).setMessage(”跳轉(zhuǎn)到系統(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設(shè)計(jì) 代碼設(shè)計(jì)EditText editText = new EditText(this);//得到EditText對(duì)象 editText.setTextSize(20);//設(shè)置字體大小 找工作,上長(zhǎng)沙英才網(wǎng) editText.setHint(”請(qǐng)輸入賬號(hào)“);//設(shè)置當(dāng)m_EditText中為空時(shí)提示的內(nèi)容 監(jiān)聽(tīng)器 editText.setOnKeyListener(new EditText.OnKeyListener(){----------EditText監(jiān)聽(tīng)器 @Override public boolean onKey(View arg0, int arg1, KeyEvent arg2){ // 得到文字,將其顯示到TextView中 m_TextView.setText(”文本框中內(nèi)容是:“ + m_EditText.getText().toString());return false;} });--------------------CheckBox 多項(xiàng)選擇 需要對(duì)沒(méi)有按鈕設(shè)置監(jiān)聽(tīng)器 xml設(shè)計(jì) checkBox1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){//對(duì)每個(gè)選項(xiàng)設(shè)置事件監(jiān)聽(tīng)-------------------CheckBox監(jiān)聽(tīng)器 @Override 找工作,上長(zhǎng)沙英才網(wǎng) public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){ if(m_CheckBox1.isChecked()){ DisplayToast(”你選擇了:“+m_CheckBox1.getText());} } });----------------------Spinner 下拉列表 下面一個(gè)例子將可選內(nèi)容通過(guò)ArrayAdapter和下拉列表連接起來(lái)。設(shè)置監(jiān)聽(tīng)器 通過(guò)setVisibility方法設(shè)置當(dāng)前顯示項(xiàng) main.xml 找工作,上長(zhǎng)沙英才網(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 //設(shè)置下拉列表的風(fēng)格 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //將adapter添加到m_Spinner中 m_Spinner.setAdapter(adapter); //添加Spinner事件監(jiān)聽(tīng) 找工作,上長(zhǎng)沙英才網(wǎng) m_Spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){--------------------------Spinner監(jiān)聽(tīng)器 @Override public void onItemSelected(AdapterView> arg0, View arg1, int arg2, long arg3){ m_TextView.setText(”你的血型是:“ + string[arg2]);//設(shè)置顯示當(dāng)前選擇的項(xiàng) arg0.setVisibility(View.VISIBLE);} @Override public void onNothingSelected(AdapterView> arg0){ // TODO Auto-generated method stub });} } }---------RadioGroup , RadioButton 單選選擇控件 一個(gè)單選選擇由兩部分組成,分別是前面的選擇按鈕和后面的內(nèi)容。按鈕通過(guò)RadioButton來(lái)實(shí)現(xiàn),答案通過(guò)RadioGroup來(lái)實(shí)現(xiàn) 如果確定是選擇哪一項(xiàng)那就要設(shè)置監(jiān)聽(tīng)器setOnCheckedChangeListener.下面有一例子:本例中使用到了String.xml文件來(lái)定義常量。string.xml 找工作,上長(zhǎng)沙英才網(wǎng) main.xml 找工作,上長(zhǎng)沙英才網(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 找工作,上長(zhǎng)沙英才網(wǎng) public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main); m_RadioGroup =(RadioGroup)findViewById(R.id.RadioGroup01);//獲得RadioGroup對(duì)象 m_Radio1 =(RadioButton)findViewById(R.id.RadioButton1);//獲得4個(gè)RadioButton對(duì)象 m_Radio2 =(RadioButton)findViewById(R.id.RadioButton2);m_Radio3 =(RadioButton)findViewById(R.id.RadioButton3);m_Radio4 =(RadioButton)findViewById(R.id.RadioButton4); /* 設(shè)置事件監(jiān)聽(tīng) */ m_RadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){---------------------------RadioGroup監(jiān)聽(tīng)器 @Override public void onCheckedChanged(RadioGroup group, int checkedId){ if(checkedId == m_Radio2.getId()){ DisplayToast(”正確答案:“ + m_Radio2.getText()+ ”,恭喜你,回答正確!“);}else{ DisplayToast(”請(qǐng)注意,回答錯(cuò)誤!“);} } });} public void DisplayToast(String str)//顯示Toast{ Toast toast = Toast.makeText(this, str, Toast.LENGTH_LONG);//設(shè)置toast顯示的位置 找工作,上長(zhǎng)沙英才網(wǎng) toast.setGravity(Gravity.TOP, 0, 220);//顯示該Toast toast.show();} }--------------AutoCompletTextView 和MultiAutoCompleteTextView 作用:自動(dòng)提示 下面例中用到了ArrayAdapter autoCompletTextView.xml //如何實(shí)現(xiàn)如果輸入的字符不在其范圍內(nèi)的也能得到提示 是繼承TextWatcher? 找工作,上長(zhǎng)沙英才網(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());} } 找工作,上長(zhǎng)沙英才網(wǎng) /* //autoCompleteTextView.addTextChangedListener(this);---此為設(shè)置監(jiān)聽(tīng)? * 例子中沒(méi)有涉及到的屬性(可在布局文件中設(shè)置): AutoCompleteTextView是EditText的子類,所以你可以對(duì)它的對(duì)象進(jìn)行諸如外觀/字體/顏色等屬性值的設(shè)置。 completionThreshold:它的值決定了你在AutoCompleteTextView至少輸入幾個(gè)字符,它才會(huì)具有自動(dòng)提示的功能。另,默認(rèn)最多提示20條。 dropDownAnchor:它的值是一個(gè)View的ID,指定后,AutoCompleteTextView會(huì)在這個(gè)View下彈出自動(dòng)提示。 dropDownSelector:應(yīng)該是設(shè)置自動(dòng)提示的背景色之類的。 dropDownWidth:設(shè)置自動(dòng)提示列表的寬度。 你可以通過(guò)setAdapter()來(lái)給AutoCompleteTextView添加一個(gè)包含候選值列表的適配器(adapter)。--------此處沒(méi)實(shí)現(xiàn)過(guò)? 然而,由于用戶可以輸入一些不在候選值列表的數(shù)據(jù),AutoCompleteTextView不支 持selection listener。不過(guò),你可以注冊(cè)一個(gè)TextWacther用于當(dāng)用戶輸入文本發(fā)生變化時(shí)發(fā)出通知。 -------------------------DatePicker,TimePicker 日期和時(shí)間 下例中首先需要在布局文件中定義DatePicker和TimePicker,然后通過(guò)Canlendar類獲得系統(tǒng)時(shí)間,接著通過(guò)init方法將日期傳給DatePicker, 并設(shè)置OnDateChangedListener來(lái)監(jiān)聽(tīng)日期改變,當(dāng)時(shí)間被改變時(shí)需要設(shè)置setOnTimeChangedListener監(jiān)聽(tīng)來(lái)設(shè)置時(shí)間。datepicker_timepicker.xml 找工作,上長(zhǎng)沙英才網(wǎng) > 找工作,上長(zhǎng)沙英才網(wǎng) public class Date_Time extends Activity{//如何實(shí)現(xiàn)日期隨系統(tǒng)不斷變化?要聯(lián)網(wǎng)才能實(shí)現(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();//得到日歷對(duì)象 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);//設(shè)置為24小時(shí)制 //將日歷初始化為當(dāng)前系統(tǒng)日期,并設(shè)置監(jiān)聽(tīng)器 datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),-------------DatePicker監(jiān)聽(tīng)器 找工作,上長(zhǎng)沙英才網(wǎng) calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener(){//OnDateChangedListener監(jiān)聽(tīng)日期的變化 @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth){ //設(shè)置日期 calendar.set(1987,10,15);} }); timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener(){------------TimePicker監(jiān)聽(tīng)器 @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute){ //設(shè)置時(shí)間 //calendar.set(1987,10,29,23,23,23);//年 月 日 小時(shí) 分鐘 秒 textView_date_time.setText(”當(dāng)前時(shí)間:“+hourOfDay+” : “+minute);} }); button_date_time1.setOnClickListener(new Button.OnClickListener(){//日期的監(jiān)聽(tīng)---------------------------Button控件中設(shè)置DatePicker監(jiān)聽(tīng)器 找工作,上長(zhǎng)沙英才網(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){ //設(shè)置日歷 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(){//時(shí)間的監(jiān)聽(tīng)器----------------------------Button控件中設(shè)置TimePicker監(jiān)聽(tīng)器 @Override public void onClick(View v){new TimePickerDialog(Date_Time.this, new TimePickerDialog.OnTimeSetListener(){ @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute){ //設(shè)置時(shí)間 找工作,上長(zhǎng)沙英才網(wǎng) textView_date_time.setText(”北京時(shí)間:“+hourOfDay+” : “+minute);} },calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true).show();}});} } ---------------Menu 操作應(yīng)用程序的菜單選項(xiàng) 第一個(gè)例子:通過(guò)XML文件來(lái)實(shí)現(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();//設(shè)置menu界面
inflater.inflate(R.layout.menu_com, menu);
找工作,上長(zhǎng)沙英才網(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);//跳轉(zhuǎn)到Menu_add中去
startActivity(intent);Menu_Xml.this.finish();} return true;} } =============== 第二個(gè)例子:在代碼中生成Menu 此例中包含倆個(gè)方法 注意區(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()方法第一個(gè)參數(shù)表示給這個(gè)新增的菜單項(xiàng)分配一個(gè)分組號(hào);
* 第二個(gè)參數(shù)表示給這個(gè)新增的菜單項(xiàng)分配一個(gè)唯一標(biāo)識(shí)id;第三個(gè)參數(shù)為菜單項(xiàng)的序號(hào);
找工作,上長(zhǎng)沙英才網(wǎng)
* 第四個(gè)參數(shù)為菜單項(xiàng)的標(biāo)題。
我們可以通過(guò)調(diào)用Menu.setItemShown()或者M(jìn)enu.setGroupShown()方法來(lái)顯示或隱藏一些菜單項(xiàng)。
這里要注意的一個(gè)地方是:菜單項(xiàng)的顯示順序是按代碼中添加的順序來(lái)的,也就是說(shuō)Menu.add()方法
只能在菜單的最后面新增一個(gè)菜單項(xiàng)。另外,第一個(gè)參數(shù)的分組標(biāo)識(shí),不會(huì)改變菜單項(xiàng)的顯示順序。
方法一:
//menu.add(0,0,0,R.string.menu1);方法一 //menu.add(0,1,1,R.string.menu2);方法二:
SubMenu subMenu = menu.addSubMenu(1, 1, 2, ”選項(xiàng)“);//此方法和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()得到菜單項(xiàng)的ID,即上面的第二個(gè)參數(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);//跳轉(zhuǎn)到其他界面中去
找工作,上長(zhǎng)沙英才網(wǎng)
startActivity(intent);Menu_add.this.finish();break;} return true;} } ============== 第三個(gè)例子:Context Menu的創(chuàng)建:
概述:Android 的上下文菜單類似于PC 上的右鍵菜單。當(dāng)為一個(gè)視圖注冊(cè)了上下文菜單之后,長(zhǎng)按(2 秒左右)這個(gè)視圖對(duì)象就會(huì)彈出一個(gè)浮動(dòng)菜單,即上下文菜單。任何視圖都可以
注冊(cè)上下文菜單,不過(guò),最常見(jiàn)的是用于列表視圖ListView的item。
注意:Android 的上下文菜單不支持圖標(biāo)或快捷鍵。
創(chuàng)建一個(gè)上下文菜單的步驟:
1.覆蓋Activity 的onCreateContenxtMenu()方法,調(diào)用Menu 的add 方法添加菜單項(xiàng)(MenuItem)。
2.覆蓋Activity 的onContextItemSelected()方法,響應(yīng)上下文菜單菜單項(xiàng)的單擊事件。
3.調(diào)用registerForContextMenu()方法,為視圖注冊(cè)上下文菜單。menu_com2.xml
找工作,上長(zhǎng)沙英才網(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()也可以用下面的語(yǔ)句替代 //getContentView().setOnCreateContextMenuListener(this);}
找工作,上長(zhǎng)沙英才網(wǎng)
//創(chuàng)建Context Menu public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){ if(v==textView_context_Menu){ menu.setHeaderTitle(”這個(gè)是什么?“);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);} //菜單單擊響應(yīng) @Override public boolean onContextItemSelected(MenuItem item){ //獲取當(dāng)前被選擇的菜單項(xiàng)的信息 switch(item.getItemId()){ case 1: Toast toast=Toast.makeText(Context_Menu.this, ”你點(diǎn)擊了“+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, ”你點(diǎn)擊了“+buttont_context_Menu.getText(), Toast.LENGTH_LONG);toast1.setGravity(Gravity.TOP, 100, 300);toast1.show();break;
找工作,上長(zhǎng)沙英才網(wǎng)
} return true;} } ============== 第四個(gè)例子:動(dòng)態(tài)Menu 此為動(dòng)態(tài)Menu的實(shí)現(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);//設(shè)置背景色
linearLayout.setOrientation(linearLayout.VERTICAL);//設(shè)置布局方向
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);textView= new TextView(this);//創(chuàng)建TextView對(duì)象 textView.setBackgroundColor(Color.YELLOW);//設(shè)置背景顏色 textView.setText(”Trends_Men“);textView.setTextSize(50);//textView.setHeight(50);//textView.setWidth(100);textView.setTextColor(Color.RED);//設(shè)置字體顏色
找工作,上長(zhǎng)沙英才網(wǎng)
linearLayout.addView(textView,params);//將textView添加到linearLayout中去
setContentView(linearLayout);//設(shè)置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自帶的圖標(biāo) } 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 一個(gè)用來(lái)顯示列表的控件 xml設(shè)計(jì)
代碼設(shè)計(jì)
第一個(gè)例子:
public class ListView3 extends ListActivity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);
找工作,上長(zhǎng)沙英才網(wǎng)
String[] string={”華中科技“,”天龍大廈“,”科技園“,”天天樂(lè)園“};//string 是用來(lái)要存放的數(shù)據(jù)
//android.R.layout.simple_expandable_list_item_1為XML的配置文件, 用來(lái)設(shè)置列表中每一行的窗口 setListAdapter(new ArrayAdapter
* 在配置文件中要注意的是android:list 是系統(tǒng)自定義的不是隨便可以取的,否則會(huì)出現(xiàn)找不到ListView ==================== 第二個(gè)例子: textView_chrild.xml 找工作,上長(zhǎng)沙英才網(wǎng) android:layout_height=”fill_parent“ android:paddingLeft=”50px“ android:paddingTop=”5px“ android:paddingBottom=”5px“ android:text=”no date“ android:textSize=”30sp“ />
找工作,上長(zhǎng)沙英才網(wǎng)
找工作,上長(zhǎng)沙英才網(wǎng)
map1.put(”list1“, ”map1“);map2.put(”list1“, ”map2“);list1.add(map1);list1.add(map2);//定義一個(gè)List,該List對(duì)象為第一個(gè)一級(jí)條目 提供數(shù)據(jù) List
//定義一個(gè)List,該List對(duì)象用來(lái)存儲(chǔ)所有二級(jí)條目對(duì)象 List>> list0 = new ArrayList
>>();list0.add(list21);list0.add(list31);
SimpleExpandableListAdapter simple = new SimpleExpandableListAdapter(找工作,上長(zhǎng)沙英才網(wǎng)
this,//context list1,//一級(jí)條目數(shù)據(jù)
R.layout.expandable_group,//用來(lái)設(shè)置一級(jí)條目樣式的布局文件 new String[]{”list1“}, //指定一級(jí)條目數(shù)據(jù)的Key new int[]{R.id.textView_group},//指定一級(jí)條目數(shù)據(jù)顯示的控件id list0, //二級(jí)條目數(shù)據(jù)
R.layout.expandable_chrild,//用來(lái)設(shè)置二級(jí)條目樣式的布局文件 new String[]{”list“}, //指定二級(jí)條目數(shù)據(jù)的Key new int[]{R.id.textView_chrild});//指定二級(jí)條目數(shù)據(jù)顯示的控件id
setListAdapter(simple);//將SimpleExpandableListAdapter對(duì)象設(shè)置給當(dāng)前的Activity } } ============================= 第三個(gè)例子:自定義ListView public class ImageTextView extends LinearLayout{ public TextView textView;public ImageView imageView;
public ImageTextView(Context context, String string,Drawable drawable){----* 注意這里并沒(méi)用在xml定義控件
super(context);// TODO Auto-generated constructor stub this.setOrientation(VERTICAL);//設(shè)置為水平布局 imageView = new ImageView(context);imageView.setImageDrawable(drawable);imageView.setPadding(2, 5, 5, 0);//設(shè)置位置
addView(imageView,new LinearLayout.LayoutParams(40,30));
找工作,上長(zhǎng)沙英才網(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));} * 這是一個(gè)線性布局的View,其中包含一個(gè)TextView 和一個(gè)ImageView.* 且為垂直布局 }-----------------------public class ListCombinAdapter extends BaseAdapter{------------繼承BaseAdapter 且必須重寫五個(gè)函數(shù) private Context wcontext;private List
public ListCombinAdapter(Context context){ this.wcontext=context;list = new ArrayList
找工作,上長(zhǎng)沙英才網(wǎng)
} @Override public Object getItem(int position){ return list.get(position);//得到對(duì)象在List數(shù)組中的位置 } @Override public long getItemId(int position){ return(long)position;} public long getPosition(Object item){ return list.indexOf(item);//得到對(duì)象在list中的索引 } @Override public View getView(int position, View convertView, ViewGroup parent){//得到一個(gè)顯示在屏幕上的View ImageTextView imageTextView;if(convertView == null){//判斷原來(lái)的View是否存在 如果不存在利用ImageTextView創(chuàng)建一個(gè)View imageTextView = new ImageTextView(wcontext,(String)list.get(position).textView.getText(),list.get(position).imageView.getDrawable());}else{ imageTextView =(ImageTextView)convertView;//強(qiáng)制轉(zhuǎn)型 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對(duì)象加入到list中去
找工作,上長(zhǎng)沙英才網(wǎng)
} }----------------------public class ListView4Activity extends ListActivity {//定制自己的adapter @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);//setContentView(R.layout.main);//不需要此項(xiàng)
ListCombinAdapter listCombinAdapter = new ListCombinAdapter(this);listCombinAdapter.addItem(”不知道此處的字符串起什么作用“,getResources().getDrawable(R.drawable.image2));listCombinAdapter.addItem(”不知道此處的字符串起什么作用“, getResources().getDrawable(R.drawable.image3));setListAdapter(listCombinAdapter);} } ===================== 第四個(gè)例子: simpleadapter2.xml 找工作,上長(zhǎng)沙英才網(wǎng) android:orientation=”horizontal“> 找工作,上長(zhǎng)沙英才網(wǎng) android:gravity=”right“ android:textSize=”10pt“ />
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);ArrayList
第二篇:dxp控件總結(jié)
From 屬性:
1.MaximizeBox:是否顯示最小化按鈕。2.MinimizeBox:是否顯示最大化按鈕。
3.FormBorderStyle:窗口樣式,如FixedSingle:固定大小。4.StartPosition:初始顯示的位置,CenterScreen:中心。
事件:
TreeList: 屬性:
1.隱藏列頭:設(shè)置OptionsView中的ShowColumns改為false 2.隱藏每行最左邊的指示箭頭:設(shè)置OptionsView中的ShowIndicator改為false 3.隱藏父節(jié)點(diǎn)的指示箭頭:設(shè)置OptionsView中的ShowRoot改為false 4.selectImageList:給TreeList綁定imageCollection 5.OptionsView.ShowVertLines:是否顯示網(wǎng)格線(豎直的)6.OptionsView.ShowHorzLines:是否顯示網(wǎng)格線(水平的)
7.OptionsSelection.EnableAppearanceFocusedCell:選中單元格,是否改變?cè)搯卧裢庥^(選中后該單元格有邊線或不顯示邊線)
8.OptionsSelection.EnableAppearanceFocusedRow:選中行。是否改變?cè)撔械耐庥^(選中后該行底色是否變化)
9.OptionsView.ShowCheckBoxes:是否在每一行前顯示勾選框。
事件:
1.FocusedNodeChanged:焦點(diǎn)改變后觸發(fā)
2.treeList_Enter:第一次點(diǎn)擊是觸發(fā),初始化控件時(shí)候,焦點(diǎn)會(huì)在第一行,此時(shí)就觸發(fā)。3.CustomNodeCellEdit:鼠標(biāo)選中某個(gè)Cell時(shí)觸發(fā),可以實(shí)現(xiàn)動(dòng)態(tài)的設(shè)定Cell綁定的控件類型 4.MouseDoubleClick:雙擊節(jié)點(diǎn)觸發(fā)
5.FocusedColumnChanged:選中列改變時(shí)觸發(fā),即前后點(diǎn)擊的列不一樣時(shí)觸發(fā)(即使前后選中列不在一行,只要選中列改變就會(huì)觸發(fā),與行無(wú)關(guān)。若前后選中列中某列的ReadOnly = ture則不會(huì)觸發(fā)該事件)
6.MouseDoubleClick:鼠標(biāo)雙擊節(jié)點(diǎn)時(shí)觸發(fā)。7.MouseUp:鼠標(biāo)點(diǎn)擊節(jié)點(diǎn)彈起時(shí)觸發(fā)。(e.Button可以得到曾按下的是哪個(gè)按鈕)8.SelectImageClick:點(diǎn)擊SelectImage觸發(fā) 9.StateImageClick:點(diǎn)擊StateImage觸發(fā) 10.BeforeExpand:節(jié)點(diǎn)展開(kāi)之前 11.BeforeFocusNode:焦點(diǎn)選中之前
DevExpress.XtraTreeList.StyleFormatConditions.StyleFormatCondition styleFormatCondition = new DevExpress.XtraTreeList.StyleFormatConditions.StyleFormatCondition();styleFormatCondition.Appearance.ForeColor = System.Drawing.Color.DarkGray;styleFormatCondition.Appearance.Options.UseForeColor = true;styleFormatCondition.ApplyToRow = true;styleFormatCondition.Condition = DevExpress.XtraGrid.FormatConditionEnum.Expression;styleFormatCondition.Expression = “[Style]”;this.treeList1.FormatConditions.Add(styleFormatCondition);
treeListColumn:TreeList中添加的列
屬性:
1.表示這一列為只讀:OptionsColumn中的ReadOnly = True 2.固定列的寬度不變:OptionsColumn中的FixedWidth = True 3.表示這一列不可編輯(無(wú)法實(shí)現(xiàn)復(fù)制):OptionsColumn中的AllowEdit = False 4.FieldName: 5.UnboundType:
6.SortOrder:列表中的項(xiàng)排序,SortOrder =Descending,遞減排序。SortOrder = Ascending,遞增排序。
treeList.AppendNode();//添加節(jié)點(diǎn)(TreeListNode)
TreeListNode:(TreeList中的節(jié)點(diǎn))
屬性: 1.ImageIndex:正常情況下節(jié)點(diǎn)前面顯示的圖片的索引
2.SelectImageIndex:選中節(jié)點(diǎn)時(shí)節(jié)點(diǎn)前邊顯示的圖片的索引
3.StateImageIndex:節(jié)點(diǎn)開(kāi)頭顯示的圖片索引(在SelectImageIndex之后)4.Level:節(jié)點(diǎn)的級(jí)別(0:根節(jié)點(diǎn)、1:一級(jí)節(jié)點(diǎn)···)imageCollection 屬性:
1.Images:在imageCollection中添加圖片
ImageComboBoxEdit ComboBoxEdit 屬性:
1.調(diào)整下拉菜單直觀顯示出來(lái)的行數(shù)(即不用滾動(dòng)條就可以看的到的行數(shù)):DropDownRows 2.Properties.Items:綁定數(shù)據(jù)源
3.Properties.TextEditStyle:Standard(可輸入,可選),HideTextEditor(只能通過(guò)下拉菜單選擇,選中后不在界面上顯示),DisableTextEditor(只能通過(guò)下拉菜單選擇并且選中后在界面上顯示)
4.ToolTip:
5.SelectedIndex:選擇的Item的索引(get,set)
事件:
1:EditValueChanged:只要是值改變就會(huì)觸發(fā) 2:SelectedIndexChanged:(值改變觸發(fā))SelectedIndex改變觸發(fā)。3:SelectedValueChanged:(值改變觸發(fā))SelectedValue改變觸發(fā)。
4:DrawItem:光標(biāo)在下拉菜單上移動(dòng)的時(shí)候觸發(fā),即光標(biāo)在選擇項(xiàng)上來(lái)回移動(dòng)時(shí)觸發(fā)
ComboBox(win)
屬性:
1.DroppedDown:設(shè)置/獲取下拉菜單是否展開(kāi)。
2.SelectionStart:設(shè)置光標(biāo)的位置(輸入文本時(shí)用,設(shè)置為Text.Length可以保證光標(biāo)在最后一個(gè)字符的后面,避免將前邊的字符覆蓋掉)。事件:
1.TextUpdate:輸入的值時(shí)(text屬性值改變時(shí))觸發(fā)。(在TextChanged事件之前)2.TextChanged:輸入的值時(shí)(text屬性值改變時(shí))觸發(fā)。(在TextUpdate事件之后)3.MouseDown:鼠標(biāo)在控件上按下時(shí)觸發(fā)。
LabelControl:
屬性: 事件:
notePane:
屬性:
1.MaxRow:設(shè)置notePane最大顯示行數(shù)
TextEdit:?jiǎn)涡形谋据斎?/p>
事件:
1.EditValueChanged:TextEdit值改變時(shí)候觸發(fā)
2.Validating:焦點(diǎn)離開(kāi)TextEdit時(shí)觸發(fā),驗(yàn)證有效性(有效性的標(biāo)準(zhǔn)通過(guò)自己在事件里面的代碼來(lái)寫,若設(shè)置了EditMask,進(jìn)入該事件會(huì)先自動(dòng)根據(jù)EditMask為標(biāo)準(zhǔn)來(lái)驗(yàn)證有效性,完成之后執(zhí)行事件里面的代碼)3.KeyPress:鍵盤按下某一個(gè)鍵觸發(fā)。
屬性:
1.TextEdit.Mask.EditMask:可以規(guī)定輸入的格式,類似正則表達(dá)式
2.TextEdit.Mask.MaskType:指定可填寫的文本類型(如:數(shù)字、字符串或者是根據(jù)正則表達(dá)式(RegEx)來(lái)約束···EditMask與MaskType配合使用,若MaskType= RegEx,EditMas = 某正則表達(dá)式,當(dāng)MaskType是DateTime,Numeric時(shí),EditMask為指定的相應(yīng)類型)3.MaxLength:可填的最大字符長(zhǎng)度,僅當(dāng)MaskType = None時(shí)有效
4.TextEdit.Mask.BeepOnError:當(dāng)用戶輸入不滿足EdiMask要求時(shí),是否發(fā)beep聲。5.UseSystemPasswordChar: true –密碼框(輸入的內(nèi)容在界面上是 ****)6.實(shí)現(xiàn)水印文字:Properties.NullValuePrompt = “輸入密碼”
Properties.NullValuePromptShowForEmptyValue = true;
memoEdit:多行文本輸入
屬性: 事件:
checkEdit:
屬性:
1.Checked:是否選中
事件:
1.CheckedChanged:勾選狀態(tài)改變時(shí)觸發(fā)(選中變不選中,不選中變選中)
checkedListBoxControl:(實(shí)現(xiàn)多選框)
屬性: 事件:
1.DrawItem:光標(biāo)在選擇菜單上移動(dòng)的時(shí)候觸發(fā),即光標(biāo)在選擇項(xiàng)上來(lái)回移動(dòng)時(shí)觸發(fā)(與ComboBoxEdit的DrawItem事件相似)2.ItemCheck:勾選或取消勾選Item時(shí)觸發(fā)。(e.Index:點(diǎn)擊的Item的索引,e.State:改變的狀態(tài))3.方法: 1.UnCheckAll();//全部不選 2.CheckAll();//全選中
PopupContainerEdit:
屬性:
1. Properties.PopupControl:(PopupContainerEdit和PopupContainerControl組合,實(shí)現(xiàn)下拉組合框)this.popupContainerEdit1.Properties.PopupControl = this.popupContainerControl1;
事件:
1.EditValueChanged 2.QueryResultValue PopupContainerControl:
屬性: 事件:
splitContainerControl: barManager: popupMenu:
lookUpEdit:
屬性:
1.Properties.DataSource:綁定數(shù)據(jù)(可以直接將list<>賦值給它)。
2.Properties.TextEditStyle:Standard(可輸入),HideTextEditor(只能通過(guò)下拉菜單選擇,選中后不在界面上顯示),DisableTextEditor(只能通過(guò)下拉菜單選擇并且選中后在界面上顯示)3.事件:
panelControl:
屬性:
1.BorderStyle(邊框風(fēng)格):NoBorder–無(wú)邊框,事件:
wizardControl:
屬性:
1.HeaderImage:右上角圖片。2.CancelText:3.FinishText:4.NextText:5.PreviousText:
當(dāng)在最后一頁(yè)時(shí)中間按鈕變?yōu)椤敖Y(jié)束”
事件:
1.CancelClick:點(diǎn)擊“取消”觸發(fā)。2.FinishClick:最后一頁(yè)點(diǎn)擊結(jié)束觸發(fā)。3.SelectedPageChanging:切換頁(yè)面時(shí)觸發(fā)。(e.Direction:判斷是向前翻頁(yè)還是向后翻頁(yè),e.Page:新頁(yè))
4.SelectedPageChanged:切換頁(yè)面后觸發(fā)。(e.PrevPage:舊頁(yè))
wizardPage:(wizardControl中的每一頁(yè))
屬性:
1. DescriptionText:2. Text:
事件:
1.PageValidating:驗(yàn)證事件。(e.Direction:判斷是向前翻頁(yè)還是向后翻頁(yè),e.Valid = false;翻不過(guò)去)2.simpleButton:
屬性:
1.事件: buttonEdit:
屬性: 事件:
dropDownButton: 屬性:
1.DropDownControl:(dropDownButton控件實(shí)現(xiàn)下拉框)
增加2個(gè)控件barManager1。
dropDownButton 的DropDownControl屬性選擇popupMenu1。popupMenu1的Manager屬性選擇事件:
radioGroup:
屬性: 事件:
spinEdit:
屬性:
1.Appearance.TextOptions.HAlignment:輸入的文本的位置,如:Near,近前邊。,靠事件:
GridControl 事件: 1.MouseDoubleClick:雙擊某一行。
gridView
屬性:
1.OptionsBehavior.Editable:是否可用
vGridControl 屬性:
1.2.3.4.5.OptionsBehavior.Editable:是否可用
OptionsBehavior.ResizeHeaderPanel:是否可以拖拽改變每一行的高度 OptionsBehavior.ResizeRowHeaders:是否可以拖拽改變每一列的寬度。LayoutStyle:布局風(fēng)格
OptionsView.AutoScaleBands:當(dāng)LayoutStyle為SingleRecordViewBandsView,設(shè)置該屬性為true,列寬自動(dòng)填充 6.XtraTabControl 屬性:
1.ClosePageButtonShowMode:如何顯示每個(gè)tabPage上的關(guān)閉按鈕。
如:InActiveTabPageHeader:當(dāng)TabPage為當(dāng)前選中時(shí)顯示關(guān)閉按鈕。2.HeaderLocation:標(biāo)簽位置(上下左右)3.ShowTabHeader:是否顯示標(biāo)簽
4.HeaderOrientation:標(biāo)簽方向(Horizontal:水平,Vertical豎直)5.HeaderButtons:當(dāng)tabpage過(guò)多,需要翻頁(yè)時(shí),設(shè)置翻頁(yè)按鈕如何組合。如
6.TabPageWidth:統(tǒng)設(shè)標(biāo)簽寬度。
事件:
1.CloseButtonClick:點(diǎn)擊標(biāo)簽上的X按鈕事件
XtraTabPage:
屬性:
1.ShowCloseButton:是否顯示關(guān)閉按鈕。2.TabPageWidth:這一頁(yè)的標(biāo)簽寬度。
第三篇:Android手機(jī)刷機(jī)知識(shí)的總結(jié)
本教程只是對(duì)Android手機(jī)刷機(jī)知識(shí)的普遍總結(jié),所有的Android手機(jī)都可以參考。現(xiàn)在的刷機(jī)方法很多,而且不一樣的手機(jī)刷機(jī)方法不一樣。本教程只做參考。
1、什么是root?
root相當(dāng)于Windows中的管理員權(quán)限,root權(quán)限默認(rèn)是不允許用戶使用的,因?yàn)橛脩艨赡軙?huì)誤操作或者運(yùn)行到惡意軟件而通過(guò)root權(quán)限破壞手機(jī)文件系統(tǒng)。
2、那么為什么要root呢?
root過(guò)的Nexus One可以做更多的事情,翻wall更方便,運(yùn)行Ubuntu,刷機(jī)等等。
3、如何看是否成功root了?
去Android Market找一個(gè)Terminal Emulator下載下來(lái),進(jìn)入Terminal Emulator以后鍵入su回車,如果命令提示開(kāi)頭從$變成了#則代表root成功
備用方法:鍵入su后回車,接著鍵入whoami回車,如果顯示uid 0則代表root成功
4、什么是“解鎖bootloader”?
bootloader一旦解鎖將不再被保修,但是可以允許你更方便的安裝第三方系統(tǒng)
5、解鎖bootloader后的現(xiàn)象是什么?
開(kāi)機(jī)后屏幕下方會(huì)有一個(gè)開(kāi)鎖的標(biāo)志
6、什么是Recovery?
直譯過(guò)來(lái)“恢復(fù)”,就是一個(gè)僅有刷機(jī)(和其他輔助刷機(jī)的功能)的一個(gè)程序,一般情況下刷機(jī)都是通過(guò) Recovery完成,目前常用的Recovery有Clockwork Recovery和Amon RA,我個(gè)人建議使用Amon RA1.8.0.1或以上的版本,操作簡(jiǎn)單。
7、什么是Radio?
負(fù)責(zé)處理通訊信號(hào)的一系列軟件,新版的Radio一般能帶來(lái)更少的電池消耗、更強(qiáng)的信號(hào)、更好的通話質(zhì)量和網(wǎng)絡(luò)速度。Android2.2需要4.06以上的radio才可以正常工作,Cyanogen Mod5.0.8雖然不是Android2.2但是也需要4.0.6的Radio才能工作.8、什么是Kernel?
內(nèi)核,Android系統(tǒng)基于Linux,Linux的運(yùn)行就要靠?jī)?nèi)核來(lái)做所有底層的數(shù)據(jù)交換和調(diào)度。新版的Kernel一般能帶來(lái)系統(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的運(yùn)行情況動(dòng)態(tài)調(diào)整所需的電壓,這種模式就是AVS。但是Nexus One原版的系統(tǒng)并不支持這個(gè)功能,因?yàn)檫@個(gè)功能并不是經(jīng)過(guò)嚴(yán)格測(cè)試的。目前最常見(jiàn)的AVS內(nèi)核就是IntersectRaven制作的了,現(xiàn)在AVS內(nèi)核在大多數(shù)Nexus One上是比較穩(wěn)定的。
默認(rèn)的電源管理是SVS,也就是靜態(tài)電壓設(shè)置,根據(jù)CPU的工作頻率跟負(fù)載來(lái)靜態(tài)的調(diào)節(jié)電壓。
一般來(lái)講AVS比SVS更節(jié)省電池
一般刷機(jī)的步驟順序:
1、解鎖Bootloader
2、刷第三方Recovery
3、通過(guò)Recovery,先刷 Radio(注意版本,Android2.2系統(tǒng)必須用4.06或以上的Radio,最新版是5.12)
4、通過(guò)Recovery,刷系統(tǒng)
5、(如果系統(tǒng)并不自帶Google的軟件)刷Google Apps Addon(主要適用于Cyanogen Mod)
6、(可選)通過(guò) Recovery,刷內(nèi)核
radio、系統(tǒng)、google apps跟內(nèi)核的順序一定不要隨意調(diào)整,否則容易造成系統(tǒng)無(wú)法啟動(dòng)的情況
第四篇:Android手機(jī)刷機(jī)知識(shí)小總結(jié)
Android手機(jī)刷機(jī)知識(shí)小總結(jié)
本教程只是對(duì)Android手機(jī)刷機(jī)知識(shí)的普遍總結(jié),所有的Android手機(jī)都可以參考?,F(xiàn)在的刷機(jī)方法很多,而且不一樣的手機(jī)刷機(jī)方法不一樣。本教程只做參考。
1、什么是root?
root相當(dāng)于Windows中的管理員權(quán)限,root權(quán)限默認(rèn)是不允許用戶使用的,因?yàn)橛脩艨赡軙?huì)誤操作或者運(yùn)行到惡意軟件而通過(guò)root權(quán)限破壞手機(jī)文件系統(tǒng)。
2、那么為什么要root呢?
root過(guò)的Nexus One可以做更多的事情,翻wall更方便,運(yùn)行Ubuntu,刷機(jī)等等。
3、如何看是否成功root了?
去Android Market找一個(gè)Terminal Emulator下載下來(lái),進(jìn)入Terminal Emulator以后鍵入su回車,如果命令提示開(kāi)頭從$變成了#則代表root成功
備用方法:鍵入su后回車,接著鍵入whoami回車,如果顯示uid 0則代表root成功
4、什么是“解鎖bootloader”?
bootloader一旦解鎖將不再被保修,但是可以允許你更方便的安裝第三方系統(tǒng)
5、解鎖bootloader后的現(xiàn)象是什么?
開(kāi)機(jī)后屏幕下方會(huì)有一個(gè)開(kāi)鎖的標(biāo)志
6、什么是Recovery?
直譯過(guò)來(lái)“恢復(fù)”,就是一個(gè)僅有刷機(jī)(和其他輔助刷機(jī)的功能)的一個(gè)程序,一般情況下刷機(jī)都是通過(guò) Recovery完成,目前常用的Recovery有Clockwork Recovery和Amon RA,我個(gè)人建議使用Amon RA1.8.0.1或以上的版本,操作簡(jiǎn)單。
7、什么是Radio?
負(fù)責(zé)處理通訊信號(hào)的一系列軟件,新版的Radio一般能帶來(lái)更少的電池消耗、更強(qiáng)的信號(hào)、更好的通話質(zhì)量和網(wǎng)絡(luò)速度。Android2.2需要4.06以上的radio才可以正常工作,Cyanogen Mod5.0.8雖然不是Android2.2但是也需要4.0.6的Radio才能工作.8、什么是Kernel?
內(nèi)核,Android系統(tǒng)基于Linux,Linux的運(yùn)行就要靠?jī)?nèi)核來(lái)做所有底層的數(shù)據(jù)交換和調(diào)度。新版的Kernel一般能帶來(lái)系統(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的運(yùn)行情況動(dòng)態(tài)調(diào)整所需的電壓,這種模式就是AVS。但是Nexus One原版的系統(tǒng)并不支持這個(gè)功能,因?yàn)檫@個(gè)功能并不是經(jīng)過(guò)嚴(yán)格測(cè)試的。目前最常見(jiàn)的AVS內(nèi)核就是IntersectRaven制作的了,現(xiàn)在AVS內(nèi)核在大多數(shù)Nexus One上是比較穩(wěn)定的。
默認(rèn)的電源管理是SVS,也就是靜態(tài)電壓設(shè)置,根據(jù)CPU的工作頻率跟負(fù)載來(lái)靜態(tài)的調(diào)節(jié)電壓。
一般來(lái)講AVS比SVS更節(jié)省電池 一般刷機(jī)的步驟順序:
1、解鎖Bootloader
2、刷第三方Recovery
3、通過(guò)Recovery,先刷 Radio(注意版本,Android2.2系統(tǒng)必須用4.06或以上的Radio,最新版是5.12)
4、通過(guò)Recovery,刷系統(tǒng)
5、(如果系統(tǒng)并不自帶Google的軟件)刷Google Apps Addon(主要適用于Cyanogen Mod)
6、(可選)通過(guò) Recovery,刷內(nèi)核
radio、系統(tǒng)、google apps跟內(nèi)核的順序一定不要隨意調(diào)整,否則容易造成系統(tǒng)無(wú)法啟動(dòng)的情況
第五篇:android嵌入式系統(tǒng)學(xué)習(xí)總結(jié)
重慶航天技術(shù)職業(yè)學(xué)院
題 目:嵌入式系統(tǒng)Android
選題性質(zhì):□設(shè)計(jì)?報(bào)告□其他
院 系 電子系
專 業(yè) 物聯(lián)網(wǎng)
班 級(jí) 12021071 學(xué) 號(hào) 20120027
學(xué)生姓名 錢碩
2014年 6月 12
日重慶航天技術(shù)職業(yè)學(xué)院嵌入式系統(tǒng)設(shè)計(jì)報(bào)告書
摘要
隨著手機(jī)的普及以及手機(jī)應(yīng)用的深入人心,近幾年“智能手機(jī)”成為了人們關(guān)注的話題。在現(xiàn)今這個(gè)智能手機(jī)系統(tǒng)群雄紛爭(zhēng)的時(shí)候,2008年Google推出了一款名為Android的開(kāi)源智能手機(jī)操作系統(tǒng)。Android憑借其開(kāi)放性和良好的人機(jī)界面,受到廣大手機(jī)生產(chǎn)商的重視,隨著3G時(shí)代的到來(lái),Android有可能會(huì)改變現(xiàn)在智能手機(jī)市場(chǎng)的格局。Android 是由Linux操作系統(tǒng)、中間件以及核心應(yīng)用程序組成的專門為移動(dòng)終端設(shè)備開(kāi)發(fā)的層次軟件集。在對(duì)Android學(xué)習(xí)中,主要做了以下的研究:首先,Android系統(tǒng)是一個(gè)層次的軟件集,所以先從層次方面對(duì)Android進(jìn)行系統(tǒng)研究,主要對(duì)其運(yùn)行時(shí)環(huán)境層以及Android應(yīng)用框架層的研究;其次,通過(guò)對(duì)Android平臺(tái)上應(yīng)用的開(kāi)發(fā),更進(jìn)一步了解Android這個(gè)系統(tǒng),在開(kāi)發(fā)中,尤其注重Android的Intent機(jī)制的使用。
關(guān)鍵字:Android; Android 內(nèi)核層; Android構(gòu)架;Android應(yīng)用; Android SDK;Android 開(kāi)發(fā)
I
目錄
摘要...............................................................................................................................I 目錄..............................................................................................................................II 前言............................................................................................錯(cuò)誤!未定義書簽。第1章......................................................................................................................1.1 何為嵌入式系統(tǒng).............................................................................................1.2嵌入式系統(tǒng)的發(fā)展............................................................................................1.3嵌入式系統(tǒng)有哪些.........................................................................................第2章
ANDROID系統(tǒng)...............................................................................................2.1來(lái)歷.................................................................................................................2.2起源.................................................................................................................2.3系統(tǒng)構(gòu)架.........................................................................................................2.4 應(yīng)用組件.........................................................................................................個(gè)人評(píng)價(jià)..........................................................................................................................6
II 重慶航天技術(shù)職業(yè)學(xué)院嵌入式系統(tǒng)設(shè)計(jì)報(bào)告書
前 言
毋庸置疑,嵌入式技術(shù)是繼網(wǎng)絡(luò)技術(shù)之后,又一個(gè)新的技術(shù)發(fā)展方向。嵌入式系統(tǒng)是計(jì)算機(jī)軟件與硬件的完美結(jié)合,廣泛地應(yīng)用于手持設(shè)備、信息家電、儀器儀表、汽車電子、醫(yī)療儀器、工業(yè)控制、航天航空等都各個(gè)領(lǐng)域,并嵌入在各類設(shè)備之中,起著核心作用。
毋庸諱言,嵌入式系統(tǒng)已經(jīng)無(wú)處不在,無(wú)疑是當(dāng)前最有前途、最為熱門、最需人才的技術(shù)領(lǐng)域。嵌入式人才主要分為兩大類:一類是嵌入式硬件工程師,主要從事嵌入式系統(tǒng)硬件研發(fā),包括硬件系統(tǒng)原理圖的設(shè)計(jì)、PCB印刷線路板的設(shè)計(jì),開(kāi)發(fā)與硬件相關(guān)的底層軟件(如BootLoader、嵌入式驅(qū)動(dòng)程序等);另一類是嵌入式軟件工程師,主要從事嵌入式操作系統(tǒng)和應(yīng)用軟件的開(kāi)發(fā),如果對(duì)嵌入式硬件原理和接口技術(shù)有較好的掌握,也可以從事嵌入式系統(tǒng)底層程序的開(kāi)發(fā)。
第1章
嵌入式系統(tǒng)
1.1 何為嵌入式系統(tǒng)
嵌入式系統(tǒng)(Embedded System),一般指非桌面計(jì)算機(jī)系統(tǒng)(即非PC、服務(wù)器、大中小型機(jī)等),有計(jì)算機(jī)功能且可以“嵌入”到專用設(shè)備并發(fā)揮專用功能的計(jì)算機(jī)設(shè)備或器材。它是以應(yīng)用為中心,軟硬件可裁減的,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等綜合性嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。簡(jiǎn)單地說(shuō),這種計(jì)算機(jī)通過(guò)和設(shè)備的電氣連接,并通過(guò)在計(jì)算機(jī)上運(yùn)行的專用程序?qū)涌谶M(jìn)行通訊和控制,使設(shè)備成為智能化的設(shè)備,比如:基于網(wǎng)絡(luò)的工業(yè)控制器、帶彩色顯示的智能終端等。
嵌入式系統(tǒng)主要由嵌入式處理器為核心的硬件系統(tǒng)、嵌入式操作系統(tǒng)及應(yīng)用軟件系統(tǒng)等組成,它是可獨(dú)立工作的“器件”。
1.2 嵌入式系統(tǒng)的發(fā)展
嵌入式系統(tǒng)的出現(xiàn)至今己經(jīng)有30多年的歷史了,嵌入式技術(shù)也歷經(jīng)了幾個(gè)發(fā)展階段。進(jìn)入90年代后,以計(jì)算機(jī)和軟件為核心的數(shù)字化技術(shù)取得了迅猛發(fā)展,不僅廣泛滲透到社會(huì)經(jīng)濟(jì)、軍事、交通、通信等相關(guān)行業(yè),而且深入到家電、娛樂(lè)、藝術(shù)、社會(huì)文化等各個(gè)領(lǐng)域,掀起了一場(chǎng)數(shù)字化技術(shù)革命。多媒體技術(shù)與Internet的應(yīng)用迅速普及,消費(fèi)電子、計(jì)算機(jī)和通信一體化趨勢(shì)日趨明顯,嵌入式技術(shù)再度成為一個(gè)研究熱點(diǎn)。嵌入式技術(shù)的發(fā)展大致經(jīng)歷了以下四個(gè)階段: 第一階段是以單芯片為核心的可編程控制器形式的系統(tǒng)具有與監(jiān)測(cè)、伺服、指示設(shè)備相配合的功能。這類系統(tǒng)大部分應(yīng)用于一些專業(yè)性強(qiáng)的工業(yè)控制系統(tǒng)中,一般沒(méi)有操作系統(tǒng)的支持,通過(guò)匯編語(yǔ)言編程對(duì)系統(tǒng)進(jìn)行直接控制。這一階段系統(tǒng)的主要特點(diǎn)是:系統(tǒng)結(jié)構(gòu)和功能相對(duì)單一,處理效率較低,存儲(chǔ)容量較小,幾乎沒(méi)有用戶接口。由于這種嵌入式系統(tǒng)使用簡(jiǎn)單和價(jià)格低,以前在國(guó)內(nèi)工業(yè)領(lǐng)域應(yīng)用較為普遍,但是已經(jīng)遠(yuǎn)不能適應(yīng)高效的、需要大容量存儲(chǔ)的現(xiàn)代工業(yè)控制和新興信息家電等領(lǐng)域的需求。
第二階段是以嵌入式微處理器為基礎(chǔ)、以簡(jiǎn)單操作系統(tǒng)為核心的嵌入式系統(tǒng)。主
3重慶航天技術(shù)職業(yè)學(xué)院嵌入式系統(tǒng)設(shè)計(jì)報(bào)告書
供的功能不是太多,為了避免你做了很久之后才發(fā)現(xiàn)——原來(lái) NDK 不支持某項(xiàng)功能,大家可以根據(jù)自己的需求來(lái)選擇是否采用 NDK 開(kāi)發(fā)原生程序。2.應(yīng)用程序框架層
應(yīng)用程序框架層為開(kāi)發(fā)人員提供了可以完全訪問(wèn)核心應(yīng)用程序所使用的API框架。該應(yīng)用 程序的構(gòu)架設(shè)計(jì)簡(jiǎn)化了組件的重用,任何一個(gè)應(yīng)用程序(以及任何其他應(yīng)用程序)都可以發(fā)布自己的功能模塊(在遵循框架的安全性限制的前提下)。同樣,該應(yīng)用程序重用機(jī)制也使用戶可以方便地替換程序組件。下面來(lái)看一下該層的每一個(gè)模塊為我們提供的組件。2.4 應(yīng)用組件
應(yīng)用組件Android開(kāi)發(fā)四大組件分別是:活動(dòng)(Activity): 用于表現(xiàn)功能。服務(wù)(Service): 后臺(tái)運(yùn)行服務(wù),不提供界面呈現(xiàn)。廣播接收器(BroadcastReceiver):用于接收廣播。內(nèi)容提供商(Content Provider): 支持在多個(gè)應(yīng)用中存儲(chǔ)和讀取數(shù)據(jù),相當(dāng)于數(shù)據(jù)庫(kù)?;顒?dòng)Android 中,Activity是所有程序的根本,所有程序的流程都運(yùn)行在Activity 之中,Activity可以算是開(kāi)發(fā)者遇到的最頻繁,也是Android 當(dāng)中最基本的模塊之一。在Android的程序當(dāng)中,Activity 一般代表手機(jī)屏幕的一屏。如果把手機(jī)比作一個(gè)瀏覽器,那么Activity就相當(dāng)于一個(gè)網(wǎng)頁(yè)。在Activity 當(dāng)中可以添加一些Button、Check box 等控件??梢钥吹紸ctivity 概念和網(wǎng)頁(yè)的概念相當(dāng)類似。一般一個(gè)Android 應(yīng)用是由多個(gè)Activity 組成的。這多個(gè)Activity 之間 Android的應(yīng)用(20張)可以進(jìn)行相互跳轉(zhuǎn),例如,按下一個(gè)Button按鈕后,可能會(huì)跳轉(zhuǎn)到其他的Activity。和網(wǎng)頁(yè)跳轉(zhuǎn)稍微有些不一樣的是,Activity 之間的跳轉(zhuǎn)有可能返回值,例如,從Activity A 跳轉(zhuǎn)到Activity B,那么當(dāng)Activity B 運(yùn)行結(jié)束的時(shí)候,有可能會(huì)給Activity A 一個(gè)返回值。這樣做在很多時(shí)候是相當(dāng)方便的。
當(dāng)打開(kāi)一個(gè)新的屏幕時(shí),之前一個(gè)屏幕會(huì)被置為暫停狀態(tài),并且壓入歷史堆棧中。用戶可以通過(guò)回退操作返回到以前打開(kāi)過(guò)的屏幕。可以選擇性的移除一些沒(méi)有必要保留的屏幕,Android會(huì)把每個(gè)應(yīng)用的開(kāi)始到當(dāng)前的每個(gè)屏幕保存在堆棧中。
個(gè)人評(píng)價(jià)
在老師的耐心教導(dǎo)下,我經(jīng)過(guò)了一學(xué)期的努力,順利的完成了此門課程。在此期間,我學(xué)到了不少的知識(shí),經(jīng)歷了很多,也體會(huì)到了很多,雖然結(jié)果很重要是并不能因此就忽略了中間的過(guò)程,因?yàn)檫@才是解決問(wèn)題的關(guān)鍵。有人說(shuō):“平凡的大學(xué)生有著相同的平凡,而不平凡的大學(xué)生會(huì)有不平凡的輝煌。”
雖然我這個(gè)學(xué)期不是很積極,但我相信在這個(gè)學(xué)期會(huì)比上個(gè)學(xué)期更加清楚自己的去向。人們常說(shuō),大學(xué)的生活是異常輕松和自由的,我也覺(jué)得的確是這樣。但時(shí)間總是寶貴的,我再也不想成為虛度光陰的人,不想自己在老的時(shí)候后悔自己這樣浪費(fèi)時(shí)間。為了改正我以上不珍惜時(shí)間的缺點(diǎn),我決定給自己制定一些措施,以便更好的督促自己。
總之,我要發(fā)揚(yáng)優(yōu)點(diǎn),改正缺點(diǎn),不能再浪費(fèi)一分一秒,特別是在星期天的時(shí)間里,要及時(shí)總結(jié)歸納一周里學(xué)的東西,作好筆記。針對(duì)自己的專業(yè),多到圖書館看專業(yè)書和案例,拓寬自己的知識(shí)面和增加看問(wèn)題的深度,同時(shí)還要多跟任課老師溝通,不懂就問(wèn),戒除害羞的習(xí)慣。大學(xué)生活是很寶貴的,我不愿意平平淡淡地過(guò)這幾年,我要好好珍惜這難得的讀書機(jī)會(huì),努力讀書,為自己的大學(xué)生活增添豐富美麗的色彩。