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

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

第五章 用戶界面基礎(chǔ)(Button)

2018-11-03 21:47 作者:swiss126  | 我要投稿

參考資料:

Android應(yīng)用程序開發(fā)》ISBN 9787302283164

參考軟件:

Android Studio、Eclipse+ADT、Android SDK、JDK

用戶界面基礎(chǔ)(接上節(jié)內(nèi)容)

三、Button

常見屬性

? ?setAutoLinkMask(int)控制鏈接網(wǎng)址和電子郵件地址等是否自動(dòng)發(fā)現(xiàn)并轉(zhuǎn)換為可點(diǎn)擊的鏈接。

?setKeyListener(KeyListener)如果設(shè)置,指定該TextView文本輸入法和自動(dòng)糾正一些常見的拼寫錯(cuò)誤

?setText(CharSequence?TextView.BufferType)確定最低類型getText()將返回。

?setKeyListener(KeyListener)如果設(shè)置,指定該TextView文本輸入法,應(yīng)該自動(dòng)利用用戶類型。

?setCursorVisible(布爾)使得光標(biāo)(默認(rèn))可見或不可見。

android:數(shù)字setKeyListener(KeyListener)如果設(shè)置,指定該TextView數(shù)字輸入法,這些特定的字符,它將接受的。

?setCompoundDrawablesWithIntrinsicBounds(int,int,int,int)可拉的得出以下文本。

?setCompoundDrawablesWithIntrinsicBounds(int,int,int,int)繪制的是左邊的文本。

?setCompoundDrawablePadding(int)之間的填充畫板和文本。

?setCompoundDrawablesWithIntrinsicBounds(int,int,int,int)繪制的是右邊的文本。

?setCompoundDrawablesWithIntrinsicBounds(int,int,int,int)上面的得出可拉的文本。

android:可編輯如果設(shè)置,指定該TextView輸入法。

?setInputExtras(int)引用一個(gè)<?input-extras?>?XML資源包含額外的數(shù)據(jù)提供一個(gè)輸入方法,這是私人的實(shí)現(xiàn)輸入法。

?setEllipsize(TextUtils.TruncateAt)如果設(shè)置,導(dǎo)致單詞以上的觀點(diǎn)是碎ellipsized寬,而不是在中間。

?setEms(int)使TextView正是這許多ems寬。

?setFreezesText(布爾)如果設(shè)置文本視圖將包含當(dāng)前完成文本內(nèi)的冷凍冰柱除了元數(shù)據(jù),比如當(dāng)前光標(biāo)位置。

android:重力setGravity(int)指定如何對(duì)齊文本視圖的x和y軸小于文本時(shí)的觀點(diǎn)。android:高度setHeight(int)使TextView正是這許多像素高。

android:提示setHint(int)時(shí)所顯示的提示文本的文本是空的。

android:imeActionId?setImeActionLabel(CharSequence?int)為EditorInfo提供一個(gè)值。?actionId時(shí)使用一個(gè)輸入連接到文本視圖方法。

android:imeActionLabel?setImeActionLabel(CharSequence?int)為EditorInfo提供一個(gè)值。?actionLabel時(shí)使用一個(gè)輸入連接到文本視圖方法。

android:imeOptions?setImeOptions(int)附加功能您可以啟用一個(gè)輸入法與一個(gè)編輯器來(lái)提高與應(yīng)用程序的集成。

android:includeFontPadding?setIncludeFontPadding(布爾)留下足夠的字體就是和流暢的空間而不是使用嚴(yán)格字體上升和下降。

android:inputMethod?setKeyListener(KeyListener)如果設(shè)置,指定該TextView應(yīng)該使用指定的輸入方法(指定完全限定類名)。

android:inputType?setRawInputType(int)被放置在一個(gè)文本字段的數(shù)據(jù)類型,用來(lái)幫助一個(gè)輸入法決定如何讓用戶輸入文本。

android:lineSpacingExtra?setLineSpacing(浮子,浮子)額外間距行文本。

android:lineSpacingMultiplier?setLineSpacing(浮子,浮子)額外間距行文本,乘數(shù)效應(yīng)。

android:行setLines(int)使TextView正是這許多行高。

android:linksClickable?setLinksClickable(布爾)如果設(shè)置為false,阻礙運(yùn)動(dòng)方法將運(yùn)動(dòng)的聯(lián)系方法即使autoLink原因被發(fā)現(xiàn)的鏈接。

android:marqueeRepeatLimit?setMarqueeRepeatLimit(int)字幕動(dòng)畫重復(fù)的次數(shù)。

android:maxEms?setMaxEms(int)使TextView最多這許多ems寬。

android:maxHeight?setMaxHeight(int)使TextView最多這許多像素高。

android:最大長(zhǎng)度setFilters(InputFilter)設(shè)置一個(gè)過(guò)濾器來(lái)限制輸入的文本長(zhǎng)度到指定的號(hào)碼。

android:maxLines?setMaxLines最多(int)使TextView被這麼多行高。

android:maxWidth?setMaxWidth最多(int)使TextView被這麼多像素寬。

android:minEms?setMinEms(int)使TextView至少這許多ems寬。

android:minHeight?setMinHeight(int)使TextView至少這許多像素高。

android:minLines?setMinLines(int)使TextView至少這許多行高。

android:minWidth?setMinWidth(int)使TextView至少這許多像素寬。

android:數(shù)字setKeyListener(KeyListener)如果設(shè)置,指定該TextView數(shù)字輸入法。

android:密碼setTransformationMethod(TransformationMethod)字段的字符是否顯示為密碼點(diǎn),而不是自己。

android:phoneNumber?setKeyListener(KeyListener)如果設(shè)置,指定該TextView有電話號(hào)碼的輸入方法。

android:privateImeOptions?setPrivateImeOptions(String)添加內(nèi)容類型描述提供輸入方法在文本視圖,這是私人的實(shí)現(xiàn)輸入法。

android:scrollHorizontally?setHorizontallyScrolling(布爾)文本是否允許更廣泛的比視圖(因此可以水平滾動(dòng))。

android:selectAllOnFocus?setSelectAllOnFocus(布爾)如果文本是可選擇的,選擇它當(dāng)視圖所需要的關(guān)注,而不是將光標(biāo)移動(dòng)到開始或結(jié)束。

android:shadowColor?setShadowLayer(浮子,浮子,浮子,int)放置一個(gè)指定顏色的陰影背后的文本。

android:shadowDx?setShadowLayer(浮動(dòng),浮動(dòng),浮動(dòng),int)水平偏移的影子。

android:shadowDy?setShadowLayer(浮子,浮子,浮子,int)垂直偏移量的影子。

android:shadowRadius?setShadowLayer(浮子,浮子,浮子,int)半徑的影子。

android:單行模式setTransformationMethod(TransformationMethod)限制了文本一行水平滾動(dòng),而不是讓它包裝到多個(gè)行,并提出重點(diǎn)而不是按enter鍵時(shí)插入一個(gè)新行。

android:文本setText(CharSequence?TextView.BufferType)文本顯示。

android:textAppearance基本文本顏色,字體,大小和風(fēng)格。

android:textColor?setTextColor(int)文本顏色。

android:textColorHighlight?setHighlightColor(int)的顏色選擇突出顯示的文本。

android:textColorHint?setHintTextColor(int)提示文本的顏色。

android:textColorLink?setLinkTextColor(int)鏈接的文本顏色。

android:textIsSelectable?isTextSelectable()表明的內(nèi)容不可編輯的文本可以選擇。

android:textScaleX?setTextScaleX(浮動(dòng))設(shè)置文本的水平擴(kuò)展因素。

android:textSize?setTextSize(int,浮動(dòng))大小的文本。

android:textStyle?setTypeface(字體)風(fēng)格(粗體、斜體、bolditalic)文本。

android:字體setTypeface(字體)字體(正常、無(wú)襯線、等寬字體)的文本。

android:寬度setWidth(int)使TextView正是這許多像素寬。

常用代碼

1、Android按鈕單擊事件的四種常用寫法

很多學(xué)習(xí)Android程序設(shè)計(jì)的人都會(huì)發(fā)現(xiàn)每個(gè)人對(duì)代碼的寫法都有不同的偏好,比較明顯的就是對(duì)控件響應(yīng)事件的寫法的不同。因此本文就把這些寫法總結(jié)一下,比較下各種寫法的優(yōu)劣,希望對(duì)大家靈活地選擇編碼方式可以有一定的參考借鑒價(jià)值。

xml文件代碼如下:

<Button

? ? android:id="@+id/button1"

? ? android:layout_width="wrap_content"

? ? android:layout_height="wrap_content"

? ? android:text="Button1" />

? <Button

? ? android:id="@+id/button2"

? ? android:layout_width="wrap_content"

? ? android:layout_height="wrap_content"

? ? android:text="Button2" />

四種方法分述如下:

匿名內(nèi)部類:

public class TestButtonActivity extends Activity {

? Button btn1, btn2;

? Toast tst;

? @Override

? protected void onCreate(Bundle savedInstanceState) {

? ? super.onCreate(savedInstanceState);

? ? setContentView(R.layout.activity_test_button);

? ? btn1 = (Button) findViewById(R.id.button1);

? ? btn2 = (Button) findViewById(R.id.button2);

? ? btn1.setOnClickListener(new OnClickListener() {

? ? ? @Override

? ? ? public void onClick(View v) {

? ? ? ? // TODO Auto-generated method stub

? ? ? ? Toast tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT);

? ? ? ? tst.show();

? ? ? }

? ? });

? ? btn2.setOnClickListener(new OnClickListener() {

? ? ? @Override

? ? ? public void onClick(View v) {

? ? ? ? // TODO Auto-generated method stub

? ? ? ? Toast tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT);

? ? ? ? tst.show();

? ? ? }

? ? });

? }

}

自定義單擊事件監(jiān)聽類:

public class TestButtonActivity extends Activity {

? Button btn1, btn2;

? Toast tst;

? class MyClickListener implements OnClickListener {

? ? @Override

? ? public void onClick(View v) {

? ? ? // TODO Auto-generated method stub

? ? ? switch (v.getId()) {

? ? ? case R.id.button1:

? ? ? ? tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT);

? ? ? ? tst.show();

? ? ? ? break;

? ? ? case R.id.button2:

? ? ? ? tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT);

? ? ? ? tst.show();

? ? ? ? break;

? ? ? default:

? ? ? ? break;

? ? ? }

? ? }

? }

? @Override

? protected void onCreate(Bundle savedInstanceState) {

? ? super.onCreate(savedInstanceState);

? ? setContentView(R.layout.activity_test_button);

? ? btn1 = (Button) findViewById(R.id.button1);

? ? btn2 = (Button) findViewById(R.id.button2);

? ? btn1.setOnClickListener(new MyClickListener());

? ? btn2.setOnClickListener(new MyClickListener());

? }

}

Activity繼承View.OnClickListener,由Activity實(shí)現(xiàn)OnClick(View view)方法,在OnClick(View view)方法中用switch-case對(duì)不同id代表的button進(jìn)行相應(yīng)的處理

public class TestButtonActivity extends Activity implements OnClickListener {

? Button btn1, btn2;

? Toast tst;

? @Override

? protected void onCreate(Bundle savedInstanceState) {

? ? super.onCreate(savedInstanceState);

? ? setContentView(R.layout.activity_test_button);

? ? btn1 = (Button) findViewById(R.id.button1);

? ? btn2 = (Button) findViewById(R.id.button2);

? ? btn1.setOnClickListener(this);

? ? btn2.setOnClickListener(this);

? }

? @Override

? public void onClick(View v) {

? ? // TODO Auto-generated method stub

? ? switch (v.getId()) {

? ? case R.id.button1:

? ? ? tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT);

? ? ? tst.show();

? ? ? break;

? ? case R.id.button2:

? ? ? tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT);

? ? ? tst.show();

? ? ? break;

? ? default:

? ? ? break;

? ? }

? }

}

最后一種是我今天看到的一種寫法,在XML文件中“顯示指定按鈕的onClick屬性,這樣點(diǎn)擊按鈕時(shí)會(huì)利用反射的方式調(diào)用對(duì)應(yīng)Activity中的click()方法”

<Button

? ? android:id="@+id/button1"

? ? android:layout_width="wrap_content"

? ? android:layout_height="wrap_content"

? ? android:onClick="onClick"

? ? android:text="Button1" />

? <Button

? ? android:id="@+id/button2"

? ? android:layout_width="wrap_content"

? ? android:layout_height="wrap_content"

? ? android:onClick="onClick"

? ? android:text="Button2" />

這里在輸完android:的時(shí)候按下 Alt+/ 會(huì)有 onClick 屬性的提示, 但輸入到 android:onClick=“ 的地方按下 Alt+/ 并沒有提示 onClick 選項(xiàng),讓我突然覺得這里好像有點(diǎn)問題。

public class TestButtonActivity extends Activity {

? Button btn1, btn2;

? Toast tst;

? @Override

? protected void onCreate(Bundle savedInstanceState) {

? ? super.onCreate(savedInstanceState);

? ? setContentView(R.layout.activity_test_button);

? }

? // 注意 這里沒有 @Override 標(biāo)簽

? public void onClick(View v) {

? ? // TODO Auto-generated method stub

? ? switch (v.getId()) {

? ? case R.id.button1:

? ? ? tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT);

? ? ? tst.show();

? ? ? break;

? ? case R.id.button2:

? ? ? tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT);

? ? ? tst.show();

? ? ? break;

? ? default:

? ? ? break;

? ? }

? }

}

這種寫法整個(gè)代碼中都不用聲明button就可以實(shí)現(xiàn)button的單擊事件。

以上就是四種實(shí)現(xiàn)按鈕單擊事件的方法。

粗略總結(jié)一下,就是按鈕少的時(shí)候用匿名內(nèi)部類會(huì)比較快,比如寫demo測(cè)試的時(shí)候或者登陸界面之類的。

按鈕多的情況我還是選擇第三種方法,方便。

關(guān)于第四種方法,我感覺最方便,但看了很多代碼還是覺得寫法不夠大眾化,感興趣的朋友可以對(duì)此研究研究。相信會(huì)有不少收獲。

?2、Android自定義Button按鈕顯示樣式

現(xiàn)在的用戶對(duì)APP的外觀看得很重要,如果APP內(nèi)所有元件都用Android默認(rèn)樣式寫,估計(jì)下面評(píng)論里就有一堆在罵UI丑的。今天學(xué)習(xí)自定義Button按鈕樣式。Button樣式修改的是Button的背景(Background)屬性。
首先寫一個(gè)定義Button樣式的XML文件:
新建Android XML文件,類型選Drawable,根結(jié)點(diǎn)選selector,文件名就buton_style吧。
程序自動(dòng)給我們剛剛建的文件里加了selector結(jié)點(diǎn),我們只需要在selector結(jié)點(diǎn)里寫上三種狀態(tài)時(shí)顯示的背景圖片(按下、獲取焦點(diǎn),正常)。
代碼如下:
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/play_press" />?
??? <item android:state_focused="true" android:drawable="@drawable/play_press" />?
??? <item android:drawable="@drawable/play" />?
</selector>??
?
我這里獲取焦點(diǎn)跟點(diǎn)擊時(shí)顯示的是同一張圖片,必須嚴(yán)格照上面的順序?qū)?,不可倒?br/>接下來(lái)只要在布局時(shí)寫B(tài)utton控件時(shí)應(yīng)用到Button的Background屬性即可。
Xml代碼?
<Button android:id="@+id/button1"?
??? android:layout_width="wrap_content" android:layout_height="wrap_content"?
??? android:background="@drawable/button_style"?
></Button>??
?
最終效果圖:
再加上一種自定義樣式方法,上面的是用圖片,其實(shí)我們可以直接通過(guò)定義xml文件來(lái)實(shí)現(xiàn)不同的樣式:
在上面的源代碼基礎(chǔ)上,只需要修改button_style文件,同樣三種狀態(tài)分開定義:
Xml代碼?
<?xml version="1.0" encoding="utf-8"?>?
<selector xmlns:android="http://schemas.android.com/apk/res/android">?
??? <item android:state_pressed="true">?
??????? <shape>?
??????????? <gradient android:startColor="#0d76e1" android:endColor="#0d76e1"?
??????????????? android:angle="270" />?
??????????? <stroke android:width="1dip" android:color="#f403c9" />?
??????????? <corners android:radius="2dp" />?
??????????? <padding android:left="10dp" android:top="10dp"?
??????????????? android:right="10dp" android:bottom="10dp" />?
??????? </shape>?
??? </item>?
??
??? <item android:state_focused="true">?
??????? <shape>?
??????????? <gradient android:startColor="#ffc2b7" android:endColor="#ffc2b7"?
??????????????? android:angle="270" />?
??????????? <stroke android:width="1dip" android:color="#f403c9" />?
??????????? <corners android:radius="2dp" />?
??????????? <padding android:left="10dp" android:top="10dp"?
??????????????? android:right="10dp" android:bottom="10dp" />?
??????? </shape>?
??? </item>?
??
??? <item>?
??????? <shape>?
??????????? <gradient android:startColor="#000000" android:endColor="#ffffff"?
??????????????? android:angle="180" />?
??????????? <stroke android:width="1dip" android:color="#f403c9" />?
??????????? <corners android:radius="5dip" />?
??????????? <padding android:left="10dp" android:top="10dp"?
??????????????? android:right="10dp" android:bottom="10dp" />?
??????? </shape>?
??? </item>?
</selector>??
?
gradient 主體漸變 startColor開始顏色,endColor結(jié)束顏色 ,angle開始漸變的角度(值只能為90的倍數(shù),0時(shí)為左到右漸變,90時(shí)為下到上漸變,依次逆時(shí)針類推)
stroke 邊框 width 邊框?qū)挾?,color 邊框顏色
corners 圓角 radius 半徑,0為直角
padding text值的相對(duì)位置

3、圓角的Button

在res目錄下的drawable-mdpi建立xml文件shape.xml,如下圖所示:

shape.xml

<?xml version="1.0"encoding="UTF-8"?>

<shape

????xmlns:android="http://schemas.android.com/apk/res/android"

??? android:shape="rectangle">

????<!--?填充的顏色 -->

????<solid?android:color="#FFFFFF"/>

????<!--?設(shè)置按鈕的四個(gè)角為弧形 -->

????<!-- android:radius?弧形的半徑 -->

????<corners?android:radius="5dip"/>

?????

<!-- padding:Button里面的文字與Button邊界的間隔 -->

<padding

???android:left="10dp"

?? android:top="10dp"

?? android:right="10dp"

?? android:bottom="10dp"

/>

</shape>

?

main.xml

在android:background="@drawable/shape"就使用了shape.xml資源

<?xml version="1.0"encoding="utf-8"?>

<LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"

??? android:orientation="vertical"

??? android:layout_width="fill_parent"

??? android:layout_height="fill_parent"

????>

<TextView???

????android:layout_width="fill_parent"??

??? android:layout_height="wrap_content"??

??? android:text="@string/hello"

????/>??

<Button??

????android:id="@+id/roundButton"

??? android:text="?圓角按鈕 "

??? android:layout_width="wrap_content"??

??? android:layout_height="wrap_content"??

??? android:background="@drawable/shape"

????/>

</LinearLayout>

strings.xml

<?xml version="1.0"encoding="utf-8"?>

<resources>

????<string?name="hello">Hello World, RoundButtonDemoActivity!</string>

????<string?name="app_name">RoundButtonDemo</string>

</resources>

RoundButtonDemoActivity.java

package?com.android.RoundButtonDemo.activity;?

?

import?android.app.Activity;?

import?android.os.Bundle;?

import?android.view.View;?

import?android.view.View.OnClickListener;?

import?android.widget.Button;?

import?android.widget.Toast;?

?

publicclass?RoundButtonDemoActivity?extends?Activity {?

??? Button roundButton;?

??? @Override

????publicvoid?onCreate(Bundle savedInstanceState) {?

?????? ?super.onCreate(savedInstanceState);?

??????? setContentView(R.layout.main);?

?????????

???????roundButton=(Button)findViewById(R.id.roundButton);?

??????//使用匿名類注冊(cè)Button事件?

??????? roundButton.setOnClickListener(new?OnClickListener()?

????? {??????

????????????publicvoid?onClick(View v)?

??????????? {?

???????????????Toast.makeText(RoundButtonDemoActivity.this,"你點(diǎn)擊了圓角按鈕",Toast.LENGTH_LONG).show();?

??????????? }?

??????? });?

??? }?

}

效果圖:

4、動(dòng)畫按鈕

http://blog.csdn.net/qiujuer/article/details/39831451


第五章 用戶界面基礎(chǔ)(Button)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
满洲里市| 贞丰县| 南京市| 孟村| 上林县| 工布江达县| 开江县| 康马县| 凭祥市| 彭州市| 嘉祥县| 虞城县| 建昌县| 娄烦县| 于田县| 花莲市| 灵石县| 岳阳县| 奎屯市| 达日县| 奉化市| 鹰潭市| 崇左市| 都安| 民勤县| 玛多县| 台北县| 精河县| 建宁县| 分宜县| 娱乐| 翼城县| 田东县| 宁武县| 上饶县| 乐业县| 阳西县| 卓尼县| 类乌齐县| 扬州市| 原阳县|