日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

超全的Android组件及UI框架

發(fā)布時間:2024/8/26 Android 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超全的Android组件及UI框架 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

設(shè)計和代碼切換,一般情況下,我們 UI 布局都是先拖再細(xì)調(diào)整,也就是先用設(shè)計默認(rèn)拖出一個大概的布局,然后用代碼來微調(diào)

一、常見的布局

1.?LinearLayout 線性布局

LinearLayout 幾個重要的 XML 屬性
xml 屬性?? ?說明
android:id?? ?為組件設(shè)置一個資源 id,然后在 Java 中可以通過?findViewById(id)?找到該組件
android:background?? ?為組件設(shè)置一個背景圖片或者背景色
android:layout_width?? ?布局的寬度,通常不直接寫數(shù)字值,而是使用
wrap_content 組件實際大小
fill_parent/match_parent 填滿父容器
android:layout_height?? ?同 layout:layout_width
android:baselineAligned?? ?該屬性為 false,將會阻止布局管理器與它的子元素基線對其
android:divider?? ?設(shè)置垂直布局時,兩個按鈕之間的分隔條
android:gravity?? ?設(shè)置布局管理器內(nèi)組件的對齊方式,值可以是
top/button/left/right/center_vertical/fill_vertical...
android:measureWithLargestChild?? ?當(dāng)屬性設(shè)置為true時,所有帶權(quán)重的子元素都會具有最大元素的最小尺寸
android:orientation?? ?設(shè)置布局管理器內(nèi)組件的排列方式,值可以是
vertical (默認(rèn))
horizontal
android:layout_gravity="left" ? ?位于LinearLayout的最左側(cè)
2.?RelativeLayout 相對布局

重點:相對布局 (RelativeLayout) 以 父容器 或者 兄弟組件 參考+margin +padding 來設(shè)置組件的顯示位置

1. 基本屬性

XML 屬性?? ?說明
android:gravity?? ?設(shè)置容器內(nèi)組件的排序方式
android:ignoreGravity?? ?如果設(shè)置改屬性為 true,將忽略?android:gravity
android:gravity?本元素所有子元素的重力方向,處于怎樣子的位置?,有:

top?將對象放在其容器的頂部,不改變其大小.?

bottom?將對象放在其容器的底部,不改變其大小.?

left將對象放在其容器的左側(cè),不改變其大小.?

right將對象放在其容器的右側(cè),不改變其大小.?

center_vertical?將對象縱向居中,不改變其大小.?

android:layout_gravity?和?android:gravity?的區(qū)別:

比如說對于Button控件:

?

android:layout_gravity?表示button在界面上的位置

android:gravity表示button上的字在button上的位置。

?

2.根據(jù)父容器定位屬性:

XML 屬性?? ?說明
android:layout_alignParentLeft?? ?左對齊父容器
android:layout_alignParentRight?? ?右對齊父容器
android:layout_alignParentTop?? ?頂部對齊父容器
android:layout_alignParentBottom?? ?底部對齊父容器
android:layout_centerHorizontal?? ?在父容器中水平居中
android:layout_centerVertical?? ?在父容器中垂直居中
android:layout_centerInParent?? ?在父容器的居中位置

各個屬性示意圖如下:

3. 根據(jù)兄弟組件定位屬性

兄弟組件定位就是處于同一層次容器的組件

圖中的組件1,2就是兄弟組件了,

如對于組件2 :android:layout_right = "@id/組件1"

而組件3與組件1或組件2并不是兄弟組件,所以組件3 不能通過 組件1或 2來進(jìn)行定位

4. 設(shè)置外邊距(偏移)屬性

上面這些屬性用于設(shè)置組件對本來位置的偏移量

虛線框是組件2?本來的位置,如果設(shè)置了組件上邊和左邊的邊距,則位置會發(fā)生一定的偏移,向右下偏移

5. 設(shè)置內(nèi)邊距(填充)屬性

上面這些屬性用于設(shè)置組件的內(nèi)邊距,內(nèi)邊距主要用于設(shè)置組件邊框和子組件之間的間隙

6. 居中設(shè)置

android:layout_centerHorizontal 如果為true,將該控件的置于水平居中;
android:layout_centerVertical 如果為true,將該控件的置于垂直居中;
android:layout_centerInParent 如果為true,將該控件的置于父控件的中央;

?

二、常用控件

?1. TextView 文本框

TextView 繼承于 View

1.1 常用屬性

跑馬燈效果:

識別鏈接效果:

android:autoLink?屬性用于設(shè)置 TextView 是否識別鏈接類型和設(shè)置可識別的鏈接類型

android:autoLink?的值有以下幾種

設(shè)置 TextView 字間距

屬性?android:textScaleX?控制字體水平方向的縮放,默認(rèn)值 1.0f,類型值是 float

如: setScaleX(2.0f);

設(shè)置 TextView 行間距

Android TextView 默認(rèn)顯示中文時會比較緊湊,為了讓每行保持的行間距,可以設(shè)置如下屬性


如:setLineSpacing(1.5)?

1.2 常用方法

void append(CharSequence text); //增加文字

CharSequence getText(); // 獲取文章文字

int getTextSize();?

int length();

2.?EditText 輸入框

EditText 繼承于 TextView

2.1 常用屬性

?

android:inputType?:對輸入文本類型進(jìn)行限制

文本類型,多為大寫、小寫和數(shù)字符號

android:inputType="none" android:inputType="text" android:inputType="textCapCharacters" android:inputType="textCapWords" android:inputType="textCapSentences" android:inputType="textAutoCorrect" android:inputType="textAutoComplete" android:inputType="textMultiLine" android:inputType="textImeMultiLine" android:inputType="textNoSuggestions" android:inputType="textUri" android:inputType="textEmailAddress" // 郵箱類型 android:inputType="textEmailSubject" android:inputType="textShortMessage" android:inputType="textLongMessage" android:inputType="textPersonName" android:inputType="textPostalAddress" android:inputType="textPassword" // 密碼 android:inputType="textVisiblePassword" android:inputType="textWebEditText" android:inputType="textFilter" android:inputType="textPhonetic"

?數(shù)值類型

android:inputType="number" android:inputType="numberSigned" android:inputType="numberDecimal" android:inputType="phone" // 撥號鍵盤 android:inputType="datetime" android:inputType="date" // 日期鍵盤 android:inputType="time" // 時間鍵盤

2.2 常用方法

TextView 的方法,EditText 都有

.setText("success");

3.?ImageView 圖像視圖

3.1 常用屬性

ImageView 有 2中屬性,分為為: src, backgroud,他們之間的區(qū)別是:

  • background 通常指的都是?背景, 而 src 指的是?內(nèi)容
  • 當(dāng)使用?src?填入圖片時, 是按照圖片大小直接填 ,不會進(jìn)行拉伸。而使用 background 填入圖片,則是會根據(jù) ImageView 給定的寬度來進(jìn)行?拉伸
  • ?設(shè)置縮小放大的大小

    ?

    3.2 常用方法

    @Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.button:imageView.setImageResource(R.drawable.image_2); // 修改圖片break;default:break;}}

    4. Button 按鈕
    4.1 常用屬性
    1. Button 繼承自 TextView ,所以可以 使用 TextView 的那些屬性

    2. 我們可以將 Button 的?android:background?屬性設(shè)置為該 drawable 資源即可輕松實現(xiàn)按下 按鈕時不同的按鈕顏色或背景

    下表列出了可以設(shè)置的屬性

    在?res/drawable?目錄下新建一個按鈕狀態(tài)的資源文件?btn_bg.xml

    <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true" android:drawable="@drawable/btn_pressed"/><item android:state_enabled="false" android:drawable="@drawable/btn_disabled"/><item android:drawable="@drawable/btn_normal"/> </selector>

    ?4.2 監(jiān)聽方法

    1. 一個按鈕的監(jiān)聽方法

    button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//點擊Button會改變edittext的文字為"點擊了Button"edittext.setText("點擊了Button");}});?

    2. 繼承于接口 OnClickListener 的監(jiān)聽方法

    public class MainActivity extends Activity implements OnClickListener {private EditText edittext;private Button button;private Button button2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);edittext=(EditText) findViewById(R.id.edit_text);button = (Button) findViewById(R.id.button);button2 = (Button) findViewById(R.id.button2);button.setOnClickListener(this);button2.setOnClickListener(this);}@Override//用switch區(qū)分是哪個idpublic void onClick(View v) {switch (v.getId()){case R.id.button:edittext.setText("點擊了Button");break;case R.id.button2:edittext.setText("點擊了Button2");break;}} }

    ?

    5. RadioButton 單選按鈕
    5.1 常用屬性
    RadioButton 單選按鈕就是只能夠選中一個,所以我們需要把 RadioButton 放到 RadioGroup 按鈕組中,從而實現(xiàn)單選功能

    RadioButton?繼承自?Button,所以擁有?Button?的所有公開屬性和方法

    RadioButton?只有兩個狀態(tài),選中與未選中,所以也就只有一個屬性是最重要的,那就是?android:checked

    android:checked設(shè)置或獲取?RadioButton?的選中狀態(tài)

    如果?RadioButton?未選中,那么點擊它可以讓它選中,但反過來是不可以的,就是不能從選中狀態(tài)到未選中狀態(tài)

    5.2 監(jiān)聽方法
    RadioGroup?是單選組合框,用于 將 RadioButton 框起來。在多個 RadioButton被 RadioGroup 包含的情況下,同一時刻只可以選擇一個 RadioButton,并用 setOnCheckedChangeListener 來對 RadioGroup 進(jìn)行監(jiān)聽。

    //調(diào)用setOnCheckedChangeListener來對RadioGroup進(jìn)行監(jiān)聽的代碼radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {if(checkedId == radiobutton1.getId()){textView.setText("北京");}else if(checkedId == radiobutton2.getId()){textView.setText("上海");}}});

    ?

    6. RadioGroup 單選按鈕組
    6.1 常用屬性
    要實現(xiàn) RadioButton?的 單選功能,需要把所有的?RadioButton?放到?RadioGroup?里面

    ?用于將幾個?RadioButton?組在一起形成單選按鈕組,實現(xiàn)單選功能,也就是選中一個,會取消其它選項的選中

    RadioGroup?只提供了一個 XML 屬性?android:checkedButton?用于指定初始化時選中的 ID

    屬性說明
    android:checkedButton初始化時選中的選項 ID (android:id)

    ?

    RadioGroup?提供了很多方法用于選中或者獲取選中的選項 ID ,下面列出常用的幾個

    方法說明
    check(int id)根據(jù) id 選中某個選項
    clearCheck()清除所有選項的選中狀態(tài),也就時一個都沒選中
    getCheckedRadioButtonId()獲取選中的選項 id
    事件說明
    OnCheckedChangeListener當(dāng)?RadioGroup?中的某個選項被選中時觸發(fā)

    7. CheckBox 復(fù)選框
    ?

    7.1 常用屬性
    Android CheckBox (復(fù)選框) 繼承自?Button?,可以說是只有兩種狀態(tài)的按鈕 (選中或未選中狀態(tài))

    可以把多個?CheckBox?放在一起實現(xiàn)同時選中多項,但是,記住,它們之間沒有任何關(guān)系,一個的選中并不會影響另一個選中或者不選中

    ?

    CheckBox?除了從?Button?繼承而來的屬性外,沒有自己的屬性,但從?CompoundButton?繼承了一個屬性?android:checked?用于表示是否選中

    屬性說明
    android:checked設(shè)置或者獲取?CheckBox?是否選中

    ?

    7.2 監(jiān)聽方法

    CheckBox?提供了幾個方法和事件用于設(shè)置或者獲取自身是否選中狀態(tài)

    方法說明
    isChecked()判斷自身是否選中
    setChecked(boolean checked)設(shè)置自身是否選中狀態(tài)

    ?

    事件說明
    OnCheckedChangeListener選中狀態(tài)改變監(jiān)聽器,當(dāng)自身選中狀態(tài)變化時會觸發(fā)這個事件

    ?

    8. ToggleButton 開關(guān)按鈕

    8.1 常用屬性

    ToggleButton (開關(guān)按鈕) 允許我們在兩個狀態(tài)之間切換,有點類似于電燈的開關(guān)

    ToggleButton?和?CheckBox?一樣都繼承自?CompoundButton?,所以都有?Button?的屬性和方法,又有?CompoundButton?的屬性?android:checked

    8.2 監(jiān)聽方法

    ToggleButton?提供了一些方法用來改變或獲取自身的狀態(tài)和開關(guān)時的文本

    9. Switch 開關(guān)

    9.1 常用屬性

    允許我們在兩個狀態(tài)之間切換,有點類似于現(xiàn)在流行的滑動解鎖

    Switch (開關(guān)) 也繼承自?Button?和?CompoundButton,所以擁有它們的屬性、方法和事件

    不過?Switch?也擁有自己的屬性,而且特別的多

    9.2 監(jiān)聽方法

    Switch?提供了一些方法用來改變或獲取自身的狀態(tài)和開關(guān)時的文本

    10. ProgressBar 進(jìn)度條
    10.1 常用屬性
    ?ProgressBar(進(jìn)度條) 可以用來顯示一個操作的進(jìn)度,一般用于比較耗時的地方,比如下載進(jìn)度條,比如加載等待

    ProgressBar?有兩種模式,確定性?和?不確定性的?,有兩種外觀模式,條形?和?圓形,所以總共有四種,這涉及到兩個屬性

    ?其他屬性

    10.2 監(jiān)聽方法

    11. SeekBar ( 拖動條 ) 控件

    11.1 常用屬性

    SeekBar ( 拖動條 ) 控件一般用于音樂播放器或者視頻播放器的音量控制或者播放進(jìn)度控制

    SeekBar 是?ProgressBar?的子類,所以 ProgressBar的屬性都可以用

    SeekBar 有以下幾個簡單的屬性

    11.2 監(jiān)聽方法

    SeekBar 內(nèi)置了?SeekBar.OnSeekBarChangeListener?事件

    該事件會觸發(fā)三個方法

    完畢。

    總結(jié)

    以上是生活随笔為你收集整理的超全的Android组件及UI框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。