版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
UI事件處理與布局管理View與ViewGroup事件處理機(jī)制界面布局方式UI樣式與主題課程安排DroidDraw工具Android界面元素1、View: 視圖組件2、Layout: 布局組件3、Wigets: UI元素4、Menus: 菜單認(rèn)識(shí)View1、所有高級(jí)UI組件都繼承View類而實(shí)現(xiàn)的2、一個(gè)View在屏幕上占據(jù)一塊矩形區(qū)域3、負(fù)責(zé)渲染4、負(fù)責(zé)處理發(fā)生的事件5、設(shè)置是否可見(jiàn)6、設(shè)置是否可以獲得焦點(diǎn)等認(rèn)識(shí)ViewGroup1、ViewGroup對(duì)象是實(shí)例2、ViewGroup是View的容器3、負(fù)責(zé)對(duì)添加進(jìn)ViewGroup的View進(jìn)行布局4、一個(gè)ViewGroup可以加入到另一個(gè)ViewGroupViewGroup與View的關(guān)系事件處理控件事件通過(guò)設(shè)置其控件的監(jiān)聽(tīng)器來(lái)監(jiān)聽(tīng)并處理事件按鍵按下事件:通過(guò)重寫onKeyDown方法按鍵彈起事件:通過(guò)重寫onKeyUp方法觸筆點(diǎn)擊事件:通過(guò)實(shí)現(xiàn)onTouchEvent方法其他事件參考相應(yīng)UI組件的Demo!!Toast控件在視圖中給用戶顯示的短小的提示消息。Toast.makeText(this,string,Toast.LENGTH_SHORT).show();LENGTH_LONG:長(zhǎng)時(shí)間顯示LENGTH_SHORT:短時(shí)間顯示事件處理DemopublicclassActivity01extendsActivity{ publicvoidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.main); //獲得Button對(duì)象
Buttonbutton_ok=(Button)findViewById(R.id.ok); //設(shè)置Button控件監(jiān)聽(tīng)器
button_ok.setOnClickListener(newButton.OnClickListener(){ publicvoidonClick(Viewv) { //這里處理事件
DisplayToast("點(diǎn)擊了OK按鈕"); } }); }事件處理Demo/*按鍵按下所觸發(fā)的事件*/ publicbooleanonKeyDown(intkeyCode,KeyEventevent) { switch(keyCode) { caseKeyEvent.KEYCODE_DPAD_CENTER: DisplayToast("按下:中鍵"); break; caseKeyEvent.KEYCODE_DPAD_UP: DisplayToast("按下:上方向鍵"); break; caseKeyEvent.KEYCODE_DPAD_DOWN: DisplayToast("按下:下方向鍵"); break; caseKeyEvent.KEYCODE_DPAD_LEFT: DisplayToast("按下:左方向鍵"); break; caseKeyEvent.KEYCODE_DPAD_RIGHT: DisplayToast("按下:右方向鍵"); break; } returnsuper.onKeyDown(keyCode,event); }事件處理Demo/*按鍵彈起所觸發(fā)的事件*/ publicbooleanonKeyUp(intkeyCode,KeyEventevent){ switch(keyCode){ caseKeyEvent.KEYCODE_DPAD_CENTER: DisplayToast("彈起:中鍵"); break; caseKeyEvent.KEYCODE_DPAD_UP: DisplayToast("彈起:上方向鍵"); break; caseKeyEvent.KEYCODE_DPAD_DOWN: DisplayToast("彈起:下方向鍵"); break; caseKeyEvent.KEYCODE_DPAD_LEFT: DisplayToast("彈起:左方向鍵"); break; caseKeyEvent.KEYCODE_DPAD_RIGHT: DisplayToast("彈起:右方向鍵"); break; }
returnsuper.onKeyUp(keyCode,event); }
publicbooleanonKeyMultiple(intkeyCode,intrepeatCount,KeyEventevent){
returnsuper.onKeyMultiple(keyCode,repeatCount,event); }事件處理Demo/*觸筆事件*/publicbooleanonTouchEvent(MotionEventevent){ intiAction=event.getAction(); if(iAction==MotionEvent.ACTION_CANCEL|| iAction==MotionEvent.ACTION_DOWN|| iAction==MotionEvent.ACTION_MOVE) { returnfalse; } //得到觸筆點(diǎn)擊的位置
intx=(int)event.getX(); inty=(int)event.getY();
DisplayToast("觸筆點(diǎn)擊坐標(biāo):("+Integer.toString(x)+","+Integer.toString(y)+")");
returnsuper.onTouchEvent(event); }
/*顯示Toast*/ publicvoidDisplayToast(Stringstr) { Toast.makeText(this,str,Toast.LENGTH_SHORT).show(); }}布局種類LinearLayout(線性布局)AbsoluteLayout(絕對(duì)布局)RelativeLayout(相對(duì)布局)TableLayout(表格布局)FrameLayout(框架布局)LinearLayoutLinearLayout是常用的布局之一一個(gè)組件一行的形式顯示出來(lái)分垂直(vertical)與水平(horizontal)兩種。main.xml:vertical<LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"> <TextView android:text="第一行”android:gravity="center_vertical” android:textSize="15pt" android:background="#aa0000” android:layout_width="fill_parent" android:layout_height="wrap_content”android:layout_weight="1"/>
<TextView android:text="第二行”android:textSize="15pt”android:gravity="center_vertical" android:background="#00aa00”android:layout_width="fill_parent" android:layout_height="wrap_content”android:layout_weight="1"/>
<TextView android:text="第三行”android:textSize="15pt”android:gravity="center_vertical" android:background="#0000aa”android:layout_width="fill_parent" android:layout_height="wrap_content”android:layout_weight="1"/> <TextView android:text="第四行”android:textSize="15pt”android:gravity="center_vertical" android:background="#aaaa00”android:layout_width="fill_parent" android:layout_height="wrap_content”android:layout_weight="1"/></LinearLayout>main.xml:horizontal<LinearLayoutxmlns:android="/apk/res/android"android:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="fill_parent"> <TextView android:text="第一列”android:gravity="center_horizontal" android:background="#aa0000”android:layout_width="wrap_content" android:layout_height="fill_parent”android:layout_weight="1"/>
<TextView android:text="第二列”android:gravity="center_horizontal" android:background="#00aa00”android:layout_width="wrap_content" android:layout_height="fill_parent”android:layout_weight="1"/>
<TextView android:text="第三列”android:gravity="center_horizontal" android:background="#0000aa”android:layout_width="wrap_content" android:layout_height="fill_parent”android:layout_weight="1"/>
<TextView android:text="第四列”android:gravity="center_horizontal" android:background="#aaaa00”android:layout_width="wrap_content" android:layout_height="fill_parent”android:layout_weight="1"/></LinearLayout>AbsoluteLayoutAbsoluteLayout絕對(duì)布局根據(jù)設(shè)定好的坐標(biāo)進(jìn)行定位顯示AbsoluteLayout兩個(gè)重要的屬性:android:layout_x組件在屏幕中的X坐標(biāo)android:layout_y組件在屏幕中的Y坐標(biāo)RelativeLayoutRelativeLayout是按照相對(duì)某個(gè)組件的位置來(lái)進(jìn)行布局,也就是說(shuō)參考某個(gè)組件,置于此組件的上、下、左、右其中幾個(gè)重要的屬性:android:layout_below=“組件ID”在某組件下面android:layout_above=“組件ID”在某組件上面android:layout_toRightOf=“ID”在某組件右邊android:layout_toLeftOf=“ID”在某組件左邊RelativeLayoutDemo<RelativeLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent”android:layout_height="fill_parent“><TextViewandroid:id="@+id/label"android:layout_width="fill_parent”android:layout_height="wrap_content"android:text="請(qǐng)輸入:"/><EditTextandroid:id="@+id/entry"android:layout_width="fill_parent”android:layout_height="wrap_content"android:background="@android:drawable/editbox_background"android:layout_below="@id/label"/><Buttonandroid:id="@+id/ok"android:layout_width="wrap_content”android:layout_height="wrap_content"android:layout_below="@id/entry”android:layout_alignParentRight="true"android:layout_marginLeft="10dip”android:text="確定"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content”android:layout_toLeftOf="@id/ok"android:layout_alignTop="@id/ok”android:text="取消"/></RelativeLayout>TableLayoutTableLayout是比較常用的布局,它是按照表格的方式來(lái)布局整個(gè)畫(huà)面的TableRow:TableLayout中需要嵌入行,然后將組件置于TableRow中才能顯示成Table的形式幾個(gè)重要的屬性:android:layout_weight:比重TableRow:行TableLayoutDemo<TableLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:stretchColumns="1"><TableRow><TextViewandroid:layout_column="1”android:text="打開(kāi)...”android:padding="3dip"/><TextViewandroid:text="Ctrl-O”android:gravity="right”android:padding="3dip"/></TableRow><TableRow><TextViewandroid:layout_column="1”android:text="保存...”android:padding="3dip"/><TextViewandroid:text="Ctrl-S”android:gravity="right”android:padding="3dip"/></TableRow><TableRow><TextViewandroid:layout_column="1”android:text="另存為...”android:padding="3dip"/><TextViewandroid:text="Ctrl-Shift-S”android:gravity="right”android:padding="3dip"/></TableRow>
TableLayoutDemo<Viewandroid:layout_height="2dip"android:background="#FF909090"/><TableRow><TextViewandroid:text="*”android:padding="3dip"/><TextViewandroid:text="導(dǎo)入...”android:padding="3dip"/></TableRow><TableRow><TextViewandroid:text="*”android:padding="3dip"/><TextViewandroid:text="導(dǎo)出...”android:padding="3dip"/><TextViewandroid:text="Ctrl-E”android:gravity="right”android:padding="3dip"/></TableRow><Viewandroid:layout_height="2dip”android:background="#FF909090"/><TableRow><TextViewandroid:layout_column="1”android:text="退出"android:padding="3dip"/></TableRow></TableLayout>FrameLayoutFrameLayout是一個(gè)比較特殊的布局此布局一般放一個(gè)組件,并且這個(gè)組件是靠左上角顯示,如果加入多個(gè)組件,那將會(huì)顯示最上層的一個(gè)組件。FrameLayoutDemo<FrameLayout xmlns:android="/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="center" android:src="@drawable/golden_gate" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="20dip" android:layout_gravity="center_horizontal|bottom" android:padding="12dip" android:background="#AA000000" android:textColor="#ffffffff" android:text="GoldenGate" /></FrameLayout>布局之間的關(guān)系LinearLayout、AbsoluteLayout、RelativeLayout、FrameLayout均是ViewGroup的子類TableLayout則是LinearLayout子類,如果TableLayout中的組件沒(méi)有放入TableRow中的話,那么就會(huì)按照LinearLayout顯示在Android中,布局是可以相互嵌套的,比如LinearLayout中能夠嵌入TableLayout一樣android樣式和主題(style&theme)android中的樣式和CSS樣式作用相似,都是用于為界面元素定義顯示風(fēng)格,它是一個(gè)包含一個(gè)或者多個(gè)view控件屬性的集合。如:需要定義字體的顏色和大小。在CSS中是這樣定義的:<style>.lxt{COLOR:#0000CC;font-size:18px;}</style>可以像這樣使用上面的css樣式:<divclass=“l(fā)xt">lxt008</div>在Android中可以這樣定義樣式:在res/values/styles.xml文件中添加以下內(nèi)容<?xmlversion="1.0"encoding="utf-8"?><resources><stylename=“l(fā)xt”><!--為樣式定義一個(gè)全局唯一的名字--><itemname="android:textSize">18px</item><!--name屬性為樣式要用在的View控件持有的屬性--><itemname="android:textColor">#0000CC</item></style></resources>在layout文件中可以像下面這樣使用上面的android樣式:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"....><TextViewstyle="@style/lxt"...../></LinearLayout>android樣式和主題(style&theme)<style>元素中有一個(gè)parent屬性。這個(gè)屬性可以讓當(dāng)前樣式繼承一個(gè)父樣式,當(dāng)前樣式可以繼承到父樣式的值。當(dāng)然,如果父樣式的值不符合你的需求,你也可以對(duì)它進(jìn)行修改,如下:<?xmlversion="1.0"encoding="utf-8"?><resources><stylename=“l(fā)xt"><itemname="android:textSize">18px</item><!--name屬性為樣式要用在的View控件持有的屬性--><itemname="android:textColor">#0000CC</item></style><stylename="sublxt"parent="@style/lxt"><itemname="android:textColor">#FF0000</item></style></resources>android樣式和主題(style&theme)android中主題也是用于為應(yīng)用定義顯示風(fēng)格,它的定義和樣式的定義相同,如下:<?xmlversion="1.0"encoding="utf-8"?><resources><stylename=“l(fā)xtTheme"> <itemname=“android:windowNoT
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年文學(xué)創(chuàng)作與文學(xué)理論考試題目
- 2026年移動(dòng)支付安全與AI技術(shù)防范題庫(kù)
- 消防設(shè)施運(yùn)行管理優(yōu)化方案
- 土石方回填材料選擇方案
- 2026云南雙江興順和投資運(yùn)營(yíng)集團(tuán)有限責(zé)任公司招聘8人備考題庫(kù)帶答案詳解(完整版)
- 2026新疆雙河市新賽股份公司招聘1人備考題庫(kù)附參考答案詳解(典型題)
- 2026北京石油學(xué)院附屬小學(xué)教育集團(tuán)招聘1人備考題庫(kù)附答案詳解(基礎(chǔ)題)
- 2026國(guó)檢測(cè)試控股集團(tuán)內(nèi)蒙古京誠(chéng)檢測(cè)有限公司招聘?jìng)淇碱}庫(kù)及答案詳解1套
- 2026廣東廣州中心實(shí)驗(yàn)研究部康鐵邦教授課題組課題組自聘技術(shù)員招聘?jìng)淇碱}庫(kù)附答案詳解(典型題)
- 2025滬昆高鐵邵陽(yáng)北站站前綜合事務(wù)服務(wù)中心選調(diào)1人備考題庫(kù)(湖南)附答案詳解(培優(yōu)a卷)
- 兒童出入境委托書(shū)
- 土建施工規(guī)范培訓(xùn)
- 汽車銷售月度工作總結(jié)與計(jì)劃
- 2025年人教版九年級(jí)物理知識(shí)點(diǎn)全面梳理與總結(jié)
- DB33T 2256-2020 大棚草莓生產(chǎn)技術(shù)規(guī)程
- 《建設(shè)工程造價(jià)咨詢服務(wù)工時(shí)標(biāo)準(zhǔn)(房屋建筑工程)》
- 10s管理成果匯報(bào)
- 半導(dǎo)體技術(shù)合作開(kāi)發(fā)合同樣式
- 茜草素的生化合成與調(diào)節(jié)
- 制程PQE述職報(bào)告
- 成人呼吸支持治療器械相關(guān)壓力性損傷的預(yù)防
評(píng)論
0/150
提交評(píng)論