最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

UI編程基礎(chǔ)

2021-07-06 09:28 作者:獨(dú)行D暗靈  | 我要投稿

Android UI元素

構(gòu)成

  1. 視圖(View)

  2. 視圖容器(ViewGroup)

  3. 布局管理(Layout)

  4. Activity

  5. Fragment

視圖

  • View視圖組件是用戶界面的基礎(chǔ)元素。

  • View對(duì)象是Android屏幕上一個(gè)特定的矩形區(qū)域的布局和內(nèi)容屬性的數(shù)據(jù)載體,通過(guò)View對(duì)象可實(shí)現(xiàn)布局、繪圖、焦點(diǎn)變換、滾動(dòng)條、屏幕區(qū)域的按鍵、用戶交互等功能。

  • Android應(yīng)用的絕大部分UI組件都放在android.widget包及其子包中,所有這些UI組件都繼承View類。


  • View的常見(jiàn)子類及功能

類名功能描述TextView文本視圖EditText編輯文本框Button按鈕Checkbox復(fù)選框RadioGroup單選按鈕組Spinner下拉列表AutoCompleteTextView自動(dòng)完成文本框DataPicker日期選擇器TimePicker時(shí)間選擇器DigitalClock數(shù)字時(shí)鐘AnalogClock模擬時(shí)鐘ProgessBar進(jìn)度條RatingBar評(píng)分條SeekBar搜索條GridView網(wǎng)格視圖ListView列表視圖ScrollView滾動(dòng)視圖


視圖容器

  • ViewGroup類通常作為其他組件的容器使用。

  • ViewGroup是View的子類,可以當(dāng)成View使用。

  • View組件可以添加到ViewGroup中,一個(gè)ViewGroup也可以添加到另一個(gè)ViewGroup中。


  • ViewGroup類提供的主要方法

類名功能描述ViewGroup()構(gòu)造方法void addView(View view)用于添加子視圖,以View作為參數(shù),將該View增加到視圖組中removeView(View view)將指定的View從視圖組中移除updateViewLayout(View view,ViewGroup.LayoutParams params)用于更新某個(gè)View的布局void bringChildToFront(View child)將參數(shù)所指定的視圖移動(dòng)到所有視圖之前顯示boolean clearChildFocus(View child)清除參數(shù)所指定的視圖的焦點(diǎn)boolean dispatchKeyEvent(KeyEvent event)將參數(shù)所指定的鍵盤事件boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event)將參數(shù)所指定的鍵盤事件分發(fā)給當(dāng)前焦點(diǎn)路徑的視圖boolean dispatchSetSelected(boolean selected)為所有的子視圖調(diào)用setSelected()方法

ViewGroup繼承了View類,雖然可以當(dāng)成普通的View來(lái)使用,但習(xí)慣上將ViewGroup當(dāng)容器來(lái)使用。由于ViewGroup是一個(gè)抽象類,在實(shí)際應(yīng)用中通常使用ViewGroup的子類作為容器,例如各種布局管理器。


  • ViewGroup的繼承者大部分位于android.widget包中。

  • Android布局文件中,每個(gè)組件所能使用的XML屬性有三類:

    1. 組件本身的XML屬性;(android:inputtype)

    2. 組件祖先類(View)的XML屬性;(android:id)

    3. 組件所屬容器的布局參數(shù)。(android:layout_width)

  • ViewGroup容器使用兩個(gè)內(nèi)部類來(lái)控制子組件在其中的分布位置:

    • ViewGroup.LayoutParams

    • ViewGroup.MarginLayoutParams

由于LayoutParams也具有繼承關(guān)系,因此LinearLayout的子類除了可以使用LinearLayout.LayoutParams所提供的XML屬性外,還可以使用其祖先類ViewGroup.LayoutParams的XML屬性。


布局管理

  • 布局管理器可以根據(jù)運(yùn)行平臺(tái)來(lái)調(diào)整組件的大小

  • 布局管理器本身是一種UI組件,所有布局管理器都是ViewGroup的子類,所有布局都可以作為容器使用


  • Android常用的布局:

    • LinearLayout(線性布局)

    • RelativeLayout(相對(duì)布局)

    • TableLayout(表格布局)

    • AbsoluteLayout(絕對(duì)布局)

    • ConstraintLayout(約束布局)


Fragment

  • Fragment允許將Activity拆分成多個(gè)完全獨(dú)立的可重用的組件,每個(gè)組件具有自己的生命周期和UI布局

  • Fragment可以靈活地為不同大小屏幕地設(shè)備創(chuàng)建UI界面

  • 每個(gè)Fragment都是一個(gè)獨(dú)立的模塊,并與綁定的Activity緊密的聯(lián)系在一起

  • 一個(gè)Fragment可以被多個(gè)Activity所共用


界面布局

兩種布局方式

  • 在XML布局文件中聲明(推薦)

  • 在程序中直接實(shí)例化布局及其組件


常見(jiàn)的Android布局

  • LinearLayout

  • RelativeLayout

  • TableLayout

  • AbsoluteLayout


線性布局

  • LinearLayout是線性布局,布局中的組件按照垂直或者水平方向進(jìn)行排列

XML屬性對(duì)應(yīng)方法功能描述android:dividersetDividerDrawable()設(shè)置垂直布局時(shí)兩個(gè)按鈕之間的分隔條android:gravitysetGravity()設(shè)置布局管理器內(nèi)組件的對(duì)齊方式android:orientationsetOrientation()設(shè)置布局管理器內(nèi)組件的排列方式


  • LinearLayout中子元素的位置都受LinearLayout.LayoutParams控制

XML屬性功能描述android:layout_gravity指定子元素在LinearLayout中的對(duì)齊方式android:layout_weight指定子元素在LinearLayout中所占的比重

線性布局不會(huì)換行,當(dāng)組件順序排列到屏幕邊緣時(shí),剩余的組件不會(huì)被顯示


  • 示例

?<LinearLayout
? ? ? ? ? ? ? ?xmlns:android="http://schemas.android.com/apk/res/android"
? ? ? ? ? ? ? ?android:layout_width="match_parent"
? ? ? ? ? ? ? ?android:layout_height="match_parent"
? ? ? ? ? ? ? ?android:orientation="vertioal"
? ? ? ? ? ? ? ?android:gravity="center">
?</LinearLayout>


表格布局

  • TableLayout類似表格形式,以行和列的方式來(lái)布局子組件

  • 在TableLayout中,可以通過(guò)以下3種方式對(duì)單元格進(jìn)行設(shè)置:

    • Shrinkable

    • Stretchable

    • Collapsed


XML屬性對(duì)應(yīng)方法功能描述android:shrinkColumnssetShrinkAllColumns(boolean)設(shè)置可收縮的列android:stretchColumnssetStretchAllColumns(boolean)設(shè)置可伸展的列android:collapseColumnssetColumnCollapsed(int,boolean)設(shè)置要隱藏的列


  • 全局屬性的設(shè)置

?<?xml version="1.0" encoding="utf-8"?>
?<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? ? ? ? ? ? android:layout_width="match_parent"
? ? ? ? ? ? ? android:layout_height="match_parent"
? ? ? ? ? ? ? android:stretchColumns="0"
? ? ? ? ? ? ? android:shrinkColumns="1,2">
?</TableLayout>

  1. 列可以同時(shí)具備stretchColumns和shrinkColumns屬性;當(dāng)該列的內(nèi)容比較多時(shí),將以“多行”方式顯示其內(nèi)容。

  2. 由于TableLayout繼承了LinearLayout,因此完全支持LinearLayout所支持的全部XML屬性。


  • 使用TableRow.LayoutParams對(duì)TableRow的子元素進(jìn)行修飾

XML屬性功能描述android:layout_column指定該單元格在第幾列顯示android:layout_span指定該單元格占據(jù)的列數(shù)

  • 屬性設(shè)置

?<TableLayout
? ? ? ? ? ? ? xmlns:android="http://schemas.android.com/apk/res/android"
? ? ? ? ? ? ? android:layout_width="match_parent"
? ? ? ? ? ? ? android:layout_height="match_parent"
? ? ? ? ? ? ? android:stretchColumns="0"
? ? ? ? ? ? ? android:shrinkColumns="1,2">
? <TableRow>
? ? ? <Button android:layout_span="2" />
? ? ? ? ?<Button android:layout_column="1" />
? ? ?</TableRow>
?</TableLayout>
? ? ? ? ? ? ?


相對(duì)布局

  • 在相對(duì)布局容器中子組件的位置總是相對(duì)于兄弟組件或父容器

XML屬性功能描述android:layout_toLeftOf控制該組件位于指定ID組件的左側(cè)android:layout_toRightOf控制該組件位于指定ID組件的右側(cè)android:layout_above控制該組件位于指定ID組件的上方android:layout_below控制該組件位于指定ID組件的下方android:layout_alignLeft控制該組件與指定ID組件的左邊界進(jìn)行對(duì)齊android:layout_alignTop控制該組件與指定ID組件的上邊界進(jìn)行對(duì)齊android:layout_alignRight控制該組件與指定ID組件的右邊界進(jìn)行對(duì)齊android:layout_alignBottom控制組件與指定ID組件的下面邊界對(duì)齊


  • 在相對(duì)布局容器中子組件的位置總是相對(duì)于兄弟組件或父容器

XML屬性功能描述android:layout_alignParentLeft指定該組件是否與布局容器左對(duì)齊android:layout_alignParentTop指定該組件是否與布局容器頂端對(duì)齊android:layout_alignParentRight指定該組件是否與布局容器右對(duì)齊android:layout_alignParentBottom指定該組件是否與布局容器底端對(duì)齊android:layout_centerInParent指定該組件是否位于布局容器的中央位置android:layout_centerHorizontal指定該組件是否位于布局容器的水平居中android:layout_centerVertical指定該組件是否位于布局容器的垂直居中


  • 示例

?<RelativeLayout
? ? ? ? ? ? ? ? ?xmlns:android="http://schemas.android.com/apk/res/android"
? ? ? ? ? ? ? ? ?android:layout_width="match_parent"
? ? ? ? ? ? ? ? ?android:layout_height="match_parent">
?</RelativeLayout>


相對(duì)布局

  • AbsoluteLayout通過(guò)指定組件的確切X、Y坐標(biāo)來(lái)確定組件的位置


    • 四大控制屬性

      XML屬性功能描述android:layout_width組件寬度android:layout_height組件高度android:layout_x設(shè)置組件的X坐標(biāo)android:layout_y設(shè)置組件的Y坐標(biāo)

  • 通過(guò)AbsoluteLayout實(shí)現(xiàn)絕對(duì)布局

?<AbsoluteLayout android:id="@+id/AbsoluteLayout01"
? ? ? ? ? ? ? ? ?android:layout_width="wrap_content"
? ? ? ? ? ? ? ? ?android:layout_height="wrap_content">
? <Button android:text="A"
? ? ? ? ? ? ?android:id="@+id/Button01"
? ? ? ? ? ? ?android:layout_width="wrap_content"
? ? ? ? ? ? ?android:layout_height="wrap_content"
? ? ? ? ? ? ?android:layout_x="10dp"
? ? ? ? ? ? ?android:layout_y="20dp">
? ? ?</Button>
?</AbsoluteLayout>


約束布局

  • 約束布局ConstraintLayout是一個(gè)ViewGroup,可以在API9以上的Android系統(tǒng)使用,主要是為了解決布局嵌套過(guò)多的問(wèn)題,以靈活的方式定位和調(diào)整小部件。

  • 從Android Studio 2.3起,官方的模板默認(rèn)使ConstraintLayout。

  • ConstraintLayout布局優(yōu)勢(shì):

    • ConstrainLayout使用起來(lái)比RelativeLayout更靈活,性能更出色。

    • ConstrainLayout可以按照比例約束控件位置和尺寸,能夠更好地適配屏幕大小不同的機(jī)型。

  • ConstraintLayout位置控制

    • 8個(gè)邊界控制屬性(用法跟RelativeLayout類似)

    1. App:layout_constraintLeft_toLeftOf

    2. App:layout_constraintLeft_toRightOf

    3. App:layout_constraintRight_toRightOf

    4. App:layout_constraintRight_toLeftOf

    5. App:layout_constraintTop_toTopOf

    6. App:layout_constraintTop_toBottomOf

    7. App:layout_constraintBottom_toBottomOf

    8. App:layout_constraintBottom_toTopOf

  • ConstraintLayout位置控制

?<!--如下圖,左邊一個(gè)A,右邊一個(gè)c,如果想新建一個(gè)B在A c之間,代碼如下-->
?<Button
? ? ? ? ?App : layout_constraintLeft_toRightOf="@+id/bt_a"
? ? ? ? ?App : layout_constraintRight_toLeftOf="@+id/bt_c"
? ? ? ? ?android : layout_width="wrap_content"
? ? ? ? ?android: layout_height="wrap_content"
? ? ? ? ?android : text="B"/>
?<!--字面理解:1.我最左邊的位置,在button A的右邊--><!--字面理解:2.我最右邊的位置,在button c的左邊-->
?


  • 偏移

    • layout_constraintHorizontal_bias (水平方向偏移)(范圍o-1)

    • layout_constraintVertical_bias(垂直方向偏移)(范圍o-1)

  • 大小


    • layout_constraintHorizontal_weight//水平方向上比重,類似線性布局

    • layout_constraintVertical_weight//垂直方向上比重,類似線性布局

基于監(jiān)聽(tīng)的事件處理

三個(gè)事件模型

  1. 事件

  2. 事件源

  3. 事件監(jiān)聽(tīng)器


事件監(jiān)聽(tīng)器

事件監(jiān)聽(tīng)器接口事件功能描述OnClickListener單擊事件當(dāng)用戶點(diǎn)擊某個(gè)組件或者方向鍵觸發(fā)該事件OnFocusChangeListener焦點(diǎn)事件當(dāng)組件獲得或者失去焦點(diǎn)時(shí)觸發(fā)該事件OnKeyListener按鍵事件當(dāng)用戶按下或者釋放設(shè)備上的某個(gè)按鍵觸發(fā)該事件OnTouchListener觸摸事件當(dāng)觸碰屏幕時(shí)觸發(fā)該事件OnCreateContextMenuListener創(chuàng)建上下文菜單事件當(dāng)創(chuàng)建上下文菜單時(shí)觸發(fā)該事件OnCheckedChangeListener選項(xiàng)改變事件當(dāng)選擇改變時(shí)觸發(fā)該事件


實(shí)現(xiàn)監(jiān)聽(tīng)器的四種形式

  1. Activity本身作為事件監(jiān)聽(tīng)器︰通過(guò)Activity實(shí)現(xiàn)監(jiān)聽(tīng)器接口,并實(shí)現(xiàn)事件處理方法

  2. 匿名內(nèi)部類形式︰使用匿名內(nèi)部類創(chuàng)建事件監(jiān)聽(tīng)器對(duì)象

  3. 內(nèi)部類或外部類形式∶將事件監(jiān)聽(tīng)類定義為當(dāng)前類的內(nèi)部類或普通的外部類

  4. 綁定標(biāo)簽∶在布局文件中為指定標(biāo)簽綁定事件處理方法


監(jiān)聽(tīng)事件的處理

  1. 實(shí)現(xiàn)基于監(jiān)聽(tīng)的事件處理步驟

  2. 在事件處理方法中編寫事件處理代碼

  3. 在相應(yīng)的組件上注冊(cè)監(jiān)聽(tīng)器


  • 通過(guò)Activity實(shí)現(xiàn)監(jiān)聽(tīng)器接口,并實(shí)現(xiàn)該接口中對(duì)應(yīng)的事件處理方法

  • 基于監(jiān)聽(tīng)的事件的處理模型的編程步驟:

    • 基于監(jiān)聽(tīng)的事件的處理模型的編程步驟∶

    • 實(shí)現(xiàn)事件監(jiān)聽(tīng)器類

    • 調(diào)用事件源的setXxxListener()方法,將事件監(jiān)聽(tīng)器注冊(cè)給事件源對(duì)象


  • 通過(guò)Activity實(shí)現(xiàn)監(jiān)聽(tīng)器接口

?public class EvenBtnActivity extends Activity implements View.OnClickListener{
? ? ?protected void onCreate(Bundle savedInstanceState){
? ? ? ? ?clickBtn = (Button)findViewById(R.id.clickBtn);
? ? ? ? ?clickBtn.setOnClickListener(this);
? ? ? ?
? ? ?}
?}


匿名內(nèi)部類形式

  • 為什么需要內(nèi)部類?

    由于大部分情況下事件只是臨時(shí)使用一次,匿名內(nèi)部類形式的事件監(jiān)聽(tīng)器更合適。

    • 內(nèi)部類對(duì)象可以訪問(wèn)創(chuàng)建它的對(duì)象的實(shí)現(xiàn),包括私有數(shù)據(jù);

    • 內(nèi)部類不為同一包的其他類所見(jiàn),具有很好的封裝性;

    • 使用內(nèi)部類可以很方便的編寫事件驅(qū)動(dòng)程序;

    • 匿名內(nèi)部類可以方便的定義運(yùn)行時(shí)回調(diào);

    • 內(nèi)部類可以方便的定義


  • 匿名內(nèi)部類的使用

?clickBtn = (Button)findViewById(R.id.clickBtn);
?clickBtn.setOnClickListener(new View.OnClickListener() {
? ? ?@Override
? ? ?public void onClick(View v){
? ? ? ? ?showText.setText("匿名內(nèi)部類:btn按鈕被單擊了!")
? ? ?}
?});


內(nèi)部類、外部類形式

  • 將事件監(jiān)聽(tīng)器定義成當(dāng)前類的內(nèi)部類

  • 使用內(nèi)部類有以下優(yōu)點(diǎn):

    • 可以在當(dāng)前類中復(fù)用內(nèi)部監(jiān)聽(tīng)器類

    • 可以訪問(wèn)當(dāng)前類的所有界面組件


  • 將事件監(jiān)聽(tīng)器定義成當(dāng)前類的內(nèi)部類

?protected void onCreate(Bundle savedInstanceState){
? ? ?clickBtn.setOnClickListener(new ClickListener());
?}
?
?class ClickListener implements View.OnClickListener{
? ? ?@Override
? ? ?public void onClick(View v){
? ? ? ? ?showTxt.setText("將事件監(jiān)聽(tīng)器定義成當(dāng)前類的內(nèi)部類:btn按鈕被單擊了!");
? ? ?}
?}


綁定標(biāo)簽

  • event_tag.xml

?<Button
? ? ? ? ?android: id="@+id/ clickBtn"
? ? ? ? ?android: layout_width="wrap_content"
? ? ? ? ?android : layout_height="wrap_content"
? ? ? ? ?android: onClick="cliokMe"
? ? ? ? ?android: text="單擊我"/>
?

  • BindTagActivity.java

?public void clickMe (view v){
? ? ?showTxt.setText ("綁定標(biāo)簽事件: btn按鈕被單擊了! ");
?}


基于回調(diào)機(jī)制的事件處理

  • Android為View中提供了五種事件處理的回調(diào)方法︰

    • onKeyDown()

    • onKeyUp()

    • onTouchEvent()

    • onTrackBallEvent()

    • onFocusChanged()


onKeyDown()方法

?public boolean onKeyDown (int keycode,KeyEvent event)

  • 參數(shù)keyCode表示被按下的鍵值

  • 參數(shù)event用于封裝按鍵事件的對(duì)象

  • 返回值為boolean類型


常量名功能描述KEYCODE_CALL撥號(hào)鍵KEYCODE_ENDCALL掛機(jī)鍵KEYCODE_HOME按鍵HomeKEYCODE MENU菜單鍵KEYCODE_BACK返回鍵KEYCODE_SEARCH搜索鍵KEYCODE_ CAMERA拍照鍵KEYCODE_FOCUS拍照對(duì)焦鍵KEYCODE_POWER電源鍵KEYCODE_NOTIFICATION通知鍵KEYCODE_MUTE話筒靜音鍵KEYCODE_VOLUME_MUTE揚(yáng)聲器靜音鍵KEYCODE_VOLUME_UP音量增加鍵KEYCODE_VOLUME_DOWN音量減小鍵KEYCODE_ CALL撥號(hào)鍵KEYCODE_ENDCALL掛機(jī)鍵


  • 捕捉手機(jī)鍵盤被按下的事件

?public boolean onKeyDown (int keyCode,KeyEvent event){
? ? ?//重寫的鍵盤按下監(jiān)聽(tīng)
? ? ?switch (keycode) {
? ? ? ? ?case KeyEvent . KEYCODE_BACK:
? ? ? ? ? ? ?showText.setText ("點(diǎn)擊了【回退鍵】") ;break ;
? ? ? ? ?case KeyEvent. KEYCODE_A:
? ? ? ? ? ? ?showText.setText("點(diǎn)擊了【A鍵】");break;
? ? ?}
? ? ?return true;
?}
?


onKeyUp()方法

  • 用來(lái)捕捉手機(jī)鍵盤按鍵抬起的事件

?public boolean onkeyUp (int keyCode,KeyEvent event)

  • 參數(shù)keyCode表示觸發(fā)事件的按鍵碼

  • 參數(shù)event是一個(gè)事件封裝類的對(duì)象

  • 返回值為boolean類型

onTouchEvent()方法

  • 用來(lái)處理手機(jī)屏幕的觸摸事件

?public boolean onTouchEvent (MotionEvent event)

  • 參數(shù)event是手機(jī)屏幕觸摸事件封裝類的對(duì)象,用于封裝件的相關(guān)信息

  • 返回值為boolean類型

自定義的View并不會(huì)自動(dòng)刷新,所以每次改變數(shù)據(jù)模型時(shí)都需要手動(dòng)調(diào)用postInvalidate(方法進(jìn)行屏幕的刷新操作。

  • 處理手機(jī)屏幕的觸摸事件

?//重寫的onTouchEvent回調(diào)方法override
?public boolean onTouchEvent (MotionEvent event) {
? ? ?switch (event.getAction () ){
? ? ? ? ?case MotionEvent .ACTION_DOWN://手指按下
? ? ? ? ?case MotionEvent . ACTION_MOVE://手指移動(dòng)
? ? ? ? ?case MotionEvent .ACTION_UP://手指抬起
? ? ?}
? ? ?return super.onTouchEvent (event);
?}


onTrackBa llEvent()方法

  • 用來(lái)處理手機(jī)中軌跡球事件

?public Boolean onTrackballEvent (MotionEvent event)

  • 軌跡球與手機(jī)鍵盤有一定區(qū)別

    • 某些型號(hào)的手機(jī)設(shè)計(jì)出的軌跡球會(huì)比只有手機(jī)鍵盤時(shí)更美觀

    • 軌跡球使用更為簡(jiǎn)單

    • 使用軌跡球會(huì)比鍵盤更為細(xì)化

在模擬器運(yùn)行狀態(tài)下,可以通過(guò)F6鍵打開(kāi)模擬器的軌跡球,然后通過(guò)鼠標(biāo)的移動(dòng)來(lái)模擬軌跡球事件。


onFocusChanged()方法

  • 焦點(diǎn)改變的回調(diào)方法

?protected void onFocusChanged (Boolean gainFocus,int direction, Rect previouslyFocusedRect)

  • 常見(jiàn)的焦點(diǎn)相關(guān)方法

方法功能描述setFocusable()用于設(shè)置View是否可以擁有焦點(diǎn)isFocusable()用于判斷View是否可以擁有焦點(diǎn)setNextFocusDownId()用于設(shè)置View的焦點(diǎn)向下移動(dòng)后獲得焦點(diǎn)View的IDhasFocus()用于判斷View的夫requestFocus()用于嘗試讓此View獲得焦點(diǎn)isFocusableTouchMode()用于設(shè)置View是否可以在觸摸模式下獲得焦點(diǎn),默認(rèn)情況下不可用

  • 焦點(diǎn)改變事件回調(diào)

?//自定義Button
?class FocusButton extends Button {
? ? ?protected void onFocusChanged (boolean focused,int direction,Rect previouslyFocusedRect) {
? ? ? ? ?//...
? ? ?}
?)
?

每按下一次按鍵,會(huì)調(diào)用兩次onFocusChanged(方法,一次是某個(gè)按鈕失去焦點(diǎn)時(shí)調(diào)用,第二次是另一個(gè)按鈕獲得焦點(diǎn)時(shí)調(diào)用。



Widget組件通用屬性

  • Widget組件通用屬性

屬性名稱功能描述android:id設(shè)置控件的索引android:layout_height設(shè)置布局高度android:layout_width設(shè)置布局寬度android:autoLink設(shè)置是否當(dāng)文本為URL鏈接時(shí),文本顯示為可點(diǎn)擊的鏈接android:autoText如果設(shè)置,將自動(dòng)執(zhí)行輸入值的拼寫糾正android:bufferType指定getTextO方式取得的文本類別android:capitalize設(shè)置英文字母大寫類型。需要彈出輸入法才能看得到android:cursorVisible設(shè)定光標(biāo)為顯示/隱藏,默認(rèn)顯示


  • TextView類的XML屬性及描述

XML屬性功能描述android:layout_alignParentLeft指定該組件是否與布局容器左對(duì)齊android:autoLink設(shè)置是否當(dāng)文本為URL鏈接,文本顯示為可點(diǎn)擊的鏈接。android:autoText如果設(shè)置,將自動(dòng)執(zhí)行輸入值的拼寫糾正。android:digits設(shè)置允許輸入哪些字符。android:drawableLeft在text的左邊輸出一個(gè)drawableandroid:drawablePadding設(shè)置text與drawable(圖片)的間隔android:drawableRight在text的右邊輸出一個(gè)drawableandroid:drawableTop在text的正上方輸出一個(gè)drawableandroid:ellipsize設(shè)置當(dāng)文字過(guò)長(zhǎng)時(shí)如何顯示該控件android:gravity設(shè)置文本位置,例如如center表示文本將居中顯示android:hint設(shè)置文本為空時(shí)顯示的提示信息android:ems設(shè)置TextView的寬度為N個(gè)字符的寬度android:maxEms設(shè)置TextView的寬度為最長(zhǎng)為N個(gè)字符的寬度android:minEms設(shè)置TextView的寬度為最短為N個(gè)字符的寬度android:maxLength限制顯示的文本長(zhǎng)度,超出部分不顯示android:lines設(shè)置文本的行數(shù)android:maxLines設(shè)置文本的最大顯示行數(shù)android:minLines設(shè)置文本的最小行數(shù)android:linksClickable設(shè)置鏈接是否可以點(diǎn)擊android:lineSpacingExtra設(shè)置行間距android:lineSpacingMultiplier設(shè)置行間距的倍數(shù)android:numeric如果被設(shè)置,該控件將有一個(gè)數(shù)字輸入法android:password以小點(diǎn)“.”顯示文本android:phoneNumber設(shè)置為電話號(hào)碼的輸入方式android:scrollHorizontally設(shè)置文本超出TextView的寬度的情況下,出現(xiàn)橫向滾動(dòng)條android:selectAllOnFocus如果文本是可選的,使其獲取焦點(diǎn)android:shadowColor指定文本陰影的顏色android:shadowDx設(shè)置陰影橫向坐標(biāo)開(kāi)始位置android:shadowDy設(shè)置陰影縱向坐標(biāo)開(kāi)始位置android:shadowRadius設(shè)置陰影的半徑android:singleLine設(shè)置單行顯示android:text設(shè)置顯示文本android:textAppearance設(shè)置文字外觀android:textColor設(shè)置文本顏色android:textColorHighlight被選中文字的底色,默認(rèn)為藍(lán)色android:textColorHIint設(shè)置提示信息文字的顏色,默認(rèn)為灰色android:textColorLink文字鏈接的顏色android:textScalex設(shè)置文字縮放,默認(rèn)為1.0fandroid:textSize設(shè)置文字大小android:textStyle設(shè)置字形android:height設(shè)置文本區(qū)域的高度android:maxHeight設(shè)置文本區(qū)域的最大高度android:minHeight設(shè)置文本區(qū)域的最小高度android:width設(shè)置文本區(qū)域的寬度


  • 在EditText中,常用的inputType屬性值

屬性值功能描述text普通文本,默認(rèn)textCapCharacters字母大寫textCapWords每個(gè)單詞的首字母大寫textAutoCorrect自動(dòng)完成textMultiLine多行輸入textNoSuggestions不提示textUri網(wǎng)址textEmailAddress電子郵件地址textEmailSubject郵件主題textShortmessage短訊textLongMessage長(zhǎng)信息textPassword密碼number數(shù)字numberSigned帶符號(hào)數(shù)字格式numberDecimal帶小數(shù)點(diǎn)的浮點(diǎn)格式phone撥號(hào)鍵盤datetime時(shí)間日期date日期鍵盤time時(shí)間鍵盤


  • Button類的常用方法

方法功能描述onKeyDown()當(dāng)用戶按鍵時(shí),該方法被調(diào)用onKeyUp()當(dāng)用戶按鍵彈起后,該方法被調(diào)用onKeyLongPress()當(dāng)用戶保持按鍵時(shí),該方法被調(diào)用onKeyMultiple()當(dāng)用戶多次按鍵時(shí),該方法被調(diào)用invalidateDrawable()用于刷新Drawable對(duì)象onPreDraw()用于設(shè)置視圖顯示setOnKeyListener()用于設(shè)置按鍵監(jiān)聽(tīng)器setOnClickListener()用于設(shè)置點(diǎn)擊監(jiān)聽(tīng)器onKeyDown()當(dāng)用戶按鍵時(shí),該方法被調(diào)用


  • 單選按鈕和單選按鈕組

    • RadioButton:單個(gè)圓形單選框

    • RadioGroup:容納多個(gè)RadioButton的容器

    • 同一個(gè)RadioGroup中,只能有一個(gè)RadioButton被選中不同的RadioGroup中,RadioButton互不影響

    • 一個(gè)RadioGroup中至少有2個(gè)RadioButton

方法功能描述getCheckedRadioButtonld()獲取被選中按鈕的idclearCheck()清除選中狀態(tài)check(int id)通過(guò)參數(shù)id來(lái)設(shè)置該選項(xiàng)為選中狀態(tài)setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener listenre)在一個(gè)單選按鈕組中,當(dāng)該單選按鈕勾選狀態(tài)發(fā)生改變時(shí)所要調(diào)用的回調(diào)函數(shù)addView(View child,int index,ViewGroup.LayoutParams params)使用指定的布局參數(shù)添加一個(gè)子視圖getText()用于獲取單選框的值


開(kāi)關(guān)控件

  • ToggleButton

XML屬性對(duì)應(yīng)方法功能描述android:checkedsetChecked(boolean)設(shè)置該按鈕是否被選中android:textOffsetTextOff(CharSquence)設(shè)置按鈕的狀態(tài)關(guān)閉時(shí)所顯示的文本androidtextOnsetTextOn(CharSquence)設(shè)置按鈕的狀態(tài)打開(kāi)時(shí)所顯示的文本android:switchMinWidthsetSwitchMin Width(int)設(shè)置開(kāi)關(guān)的最小寬度android:textStylesetSwitchTypeface (Typeface , int)設(shè)置開(kāi)關(guān)的文本風(fēng)格android:typefacesetSwitchTypeface(Typeface)設(shè)置開(kāi)關(guān)的文本的字體風(fēng)格android:switchPaddingsetSwitchPadding(int)設(shè)置開(kāi)關(guān)與標(biāo)題文本之間的空白android:thumbsetThumbResource(int)使用自定義的Drawable來(lái)繪制開(kāi)關(guān)的開(kāi)關(guān)按鈕android:tracksetTrackResource(int)使用自定義的Drawable來(lái)繪制開(kāi)關(guān)的開(kāi)關(guān)軌道


圖片視圖(ImageView)

  • 繼承自View組件

  • 用于顯示圖像資源

XML屬性對(duì)應(yīng)方法功能描述android:adjustViewBoundssetAdjustViewBounds(boolean)是否保持寬高比android:cropToPaddingsetCropToPadding(boolean)截取指定區(qū)域是否使用空白代替android:maxHeightsetMaxHeight(int)設(shè)置View的最大高度android:maxWidthsetMaxWidth(int)設(shè)置View的最大寬度android:srcsetimageResource(int)設(shè)置ImageView所顯示的Drawable對(duì)象android:scaleTypesetScaleType(ImageView.ScaleType)設(shè)置所顯示的圖片如何縮放或移動(dòng)以適應(yīng)ImageView的大小

實(shí)現(xiàn)頁(yè)面的切換功能,可以使用ViewPager類;該類是Android Support Liberary中自帶的一個(gè)附加包的一個(gè)類,用來(lái)實(shí)現(xiàn)屏幕間的切換。



Dialog對(duì)話框

4種對(duì)話框

  • AlertDialog提示對(duì)話框

  • ProgressDialog進(jìn)度條對(duì)話框

  • DatePickerDialog日期對(duì)話框

  • TimePickerDialog時(shí)間對(duì)話框


AlertDialog提示對(duì)話框

  • AlertDialog繼承自Dialog類

  • 使用Builder內(nèi)部類進(jìn)行創(chuàng)建

  • 可以包含一個(gè)標(biāo)題、一個(gè)內(nèi)容消息或者一個(gè)選擇列表以及0至3個(gè)按鈕。

方法功能描述void create()根據(jù)設(shè)置的屬性,創(chuàng)建一個(gè)AlterDialogvoid show()根據(jù)設(shè)置的屬性,顯示已創(chuàng)建的AlterDialogAlterDialog.Builder setTitle()設(shè)置標(biāo)題AlterDialog.Builder setIcon()設(shè)置標(biāo)題的圖標(biāo)AlterDialog.Builder setMessage()設(shè)置標(biāo)題的內(nèi)容AlterDialog.Builder setCancelable()設(shè)置是否模態(tài)AlterDialog setPositiveButton()為對(duì)話框添加Yes按鈕AlterDialog setNegativeButton為對(duì)話框添加No按鈕


ProgressDialog進(jìn)度對(duì)話框

  • ProgressDialog有兩種顯示方式∶

    • 滾動(dòng)的環(huán)狀圖標(biāo)

    • 帶刻度的進(jìn)度條

  • 通過(guò)ProgressDialog.setProgressStyle()方法進(jìn)行設(shè)置:

    • STYLE_HORIZONTAL———刻度滾動(dòng)

    • STYLE_SPINNER——圖標(biāo)滾動(dòng),默認(rèn)選項(xiàng)


ProgressBar進(jìn)度條

  • ProgressBar繼承于View類

  • ProgressBar常用屬性

    • android:max:進(jìn)度條的最大值

    • android:progress:進(jìn)度條已完成進(jìn)度值

    • android:progressDrawable :設(shè)置軌道對(duì)應(yīng)的Drawable對(duì)象

    • android:indeterminate :如果設(shè)置成true,則進(jìn)度條不精確顯示進(jìn)度

    • android:indeterminateDrawable :設(shè)置不顯示進(jìn)度的進(jìn)度條的Drawable對(duì)象

    • android:indeterminateDuration :設(shè)置不精確顯示進(jìn)度的持續(xù)時(shí)間

    • android:secondaryProgress:二級(jí)進(jìn)度條,類似于視頻播放的一條是當(dāng)前播放進(jìn)度,—條是緩沖進(jìn)度,前者通過(guò)progress屬性進(jìn)行設(shè)置!

  • ProgressBar對(duì)應(yīng)于Java中的可調(diào)用方法

    • getMax():返回這個(gè)進(jìn)度條的范圍的上限

    • getProgress():返回進(jìn)度

    • getSecondaryProgress():返回次要進(jìn)度

    • incrementProgressBy(int diff)︰指定增加的進(jìn)度

    • isIndeterminate()∶指示進(jìn)度條是否在不確定模式下

    • setIndeterminate(boolean indeterminate):設(shè)置不確定模式下

  • ProgressBar的樣式設(shè)定有兩種

    • —種是通過(guò)組件屬性設(shè)置

    • 另一種是通過(guò)樣式style進(jìn)行設(shè)置

  • ProgressBar常見(jiàn)的幾種樣式

    • 橫向progressBarStyleHorizontal

    • 橫向Widget.ProgressBar.Horizontal

    • 圓形progressBarStyleLarge

Android中Seekbar

  • Seekbar的幾個(gè)重要屬性

    • android:max設(shè)置值的大小.

    • android:thumb= “@drawable/”顯示的那個(gè)可拖動(dòng)圖標(biāo),如果沒(méi)有設(shè)置該參數(shù)則為系統(tǒng)默認(rèn),如果自己需要重新定義,則將自己需要的圖標(biāo)存放在資源目錄/res/drawable下,然后調(diào)用即可.

    • android:thumbOffset 拖動(dòng)圖標(biāo)的偏量值可以讓拖動(dòng)圖標(biāo)超過(guò)bar的長(zhǎng)度.

    • android:progress設(shè)置seekbar當(dāng)前的默認(rèn)值,范圍0到max之間.

    • android:secondaryProgress 用過(guò)的迅雷的都知道拖動(dòng)圖標(biāo)隨著當(dāng)前的播放時(shí)間的走動(dòng)而走動(dòng),同時(shí)我們也注意到了也有個(gè)緩沖看到的進(jìn)度條,這個(gè)屬性就是用來(lái)設(shè)置默認(rèn)顯示的值為多少,范圍為0到max.

    • android:progressDrawable 當(dāng)我們不想使用系統(tǒng)默認(rèn)的SeekBar時(shí)可以自己定義一個(gè),這個(gè)資源文件就是用來(lái)調(diào)用我們自己定義的Seekbar圖標(biāo)的一般是在drawable下建立一個(gè).xml文件s用layer-list來(lái)組織這些圖標(biāo).

一般在做到音頻播放和音樂(lè)播放時(shí),大多數(shù)都要用到seekbar


Android中RatingBar

  • RatingBar是ProgressBar的一個(gè)延伸,ProgressBar的進(jìn)度一般由代碼控制,RatingBar的進(jìn)度可以拖拽來(lái)控制。

  • RatingBar的4個(gè)屬性

    1. android:isIndicator RatingBar的指示是否起作用,默認(rèn)為false,如果為true ,RatingBar的進(jìn)度不能被人為修改。

    2. android:numStars顯示星星的總數(shù)量,必須為整數(shù)。

    3. android:rating設(shè)置默認(rèn)評(píng)分值,值為浮點(diǎn)數(shù)。

    4. android:stepSize評(píng)分每次增加的值(最小變化值),值為浮點(diǎn)數(shù)

一般類似于打車軟件和訂餐軟件上的五星好評(píng)的UI均可以利用RatingBar完美實(shí)現(xiàn)這個(gè)效果。


  • RatingBar的系統(tǒng)樣式有三種:

    ?style=" ?attr/ ratingBarstyle"或
    ?style="@style/widget .AppCompat.RatingBar"?style="?attr/ ratingBarstyleIndicator"或
    ?style="@style/widget.AppCompat.RatingBar.Indicator"?style=" ?attr/ ratingBarstyleSmall"或
    ?style="@style/widget.AppCompat.RatingBar.Small"
    • 小型樣式

    • 默認(rèn)樣式

    • 默認(rèn)樣式

    • RatingBar的事件監(jiān)聽(tīng)

    ?ratingBar.setOnRatingBarChangeListener (newRatingBar . OnRatingBarChangeListener () {
    ? ? ?@override
    ? ? ?public void onRatingChanged (RatingBar ratingBar, float rating, boolean fromUser) {
    ? ? ? ? ?//...
    ? ? ?}
    ?});
    ?



    UI編程基礎(chǔ)的評(píng)論 (共 條)

    分享到微博請(qǐng)遵守國(guó)家法律
    无锡市| 赤峰市| 甘孜县| 陈巴尔虎旗| 高密市| 江津市| 罗平县| 游戏| 夹江县| 枣强县| 台江县| 突泉县| 临夏县| 汉阴县| 永德县| 丰顺县| 禄劝| 中西区| 个旧市| 广灵县| 印江| 新河县| 桃园县| 临洮县| 饶平县| 武穴市| 民和| 嘉荫县| 化德县| 嘉祥县| 黄冈市| 囊谦县| 昌吉市| 南和县| 姜堰市| 呼和浩特市| 萨嘎县| 随州市| 车致| 淮阳县| 临泽县|