Android之進度條控件和常用資源分類總結

1? ? ? 基本UI(二)

1.1????進度條

1.1.1

常用屬性:

style進度條樣式

Android:max進度最大值

android:progress進度值

setMax(intmax)設置進度最大值

常用方法:

setMax(intmax)設置進度最大值

getMax()獲取進度最大值

setProgress(intprogrss)設置進度值

getProgress()獲取進度值

==練習

android:id="@+id/pdar1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

style="?android:attr/progressBarStyleHorizontal"

android:max="100"

android:progress="30"/>

@Override

publicvoid onClick(View v) {

//TODO Auto-generated method stub

switch(v.getId()) {

caseR.id.btn_add:

pdar1.setProgress(pdar1.getProgress()+ 10);

break;

caseR.id.btn_minus:

pdar1.setProgress(pdar1.getProgress()- 10);

break;

default:

break;

}

tv_progress.setText(pdar1.getProgress()+"%");

}

}

//如果需要執(zhí)行耗時操作,那么耗時操作就應該放在子線程中執(zhí)行

newThread(){

booleanisRight = true;? //記錄滾動條的滾動方向

publicvoid run() {

//自動來回滾動

while(true){

try{

Thread.sleep(50);

//獲取當前進度

int progress = pbar.getProgress();

//判斷當前的進度的位置,如果是0或最大值,就需要改變方向

if(progress<=0){

isRight= true;? //代表方向往右

}elseif(progress >= pbar.getMax()){

isRight = false;? //代表方向往左

}

//根據滾動的方向修改滾動條的值

if(isRight){

pbar.setProgress(pbar.getProgress()+1);

}else{

pbar.setProgress(pbar.getProgress()-1);

}

}catch (InterruptedException e) {

//TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}.start();

1.1.2? 練習觸摸事件實現快進效果

publicclass MainActivity extends Activity {

privateButton button1;

privateSeekBar seekBar1;

privateSeekBarAutoRun seekBarAutoRun;

@Override

protectedvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViews();

bindListener();

}

privatevoid bindListener() {

//設置View的觸摸事件

button1.setOnTouchListener(newOnTouchListener() {

@Override

publicboolean onTouch(View v, MotionEvent event) {

//TODO Auto-generated method stub

switch(event.getAction()) {

caseMotionEvent.ACTION_DOWN://手指按下

Log.i("msg","手指按下");

//進度條自動開始滾動

if(seekBarAutoRun==null){

seekBarAutoRun= new SeekBarAutoRun();

seekBarAutoRun.start();

}

break;

caseMotionEvent.ACTION_MOVE://手指移動

Log.i("msg","手指移動");

break;

caseMotionEvent.ACTION_UP://手指離開

Log.i("msg","手指離開");

//進度條自動停止?jié)L動

if(seekBarAutoRun!= null){

seekBarAutoRun.autoStopRunTask();

seekBarAutoRun= null;

}

break;

default:

break;

}

returntrue;????? //事件消費的問題

}

});

}

privatevoid findViews() {

button1= (Button) this.findViewById(R.id.button1);

seekBar1= (SeekBar) this.findViewById(R.id.seekBar1);

}

classSeekBarAutoRun extends Thread{

@Override

publicvoid run() {

while(!isInterrupted()){

try{

Thread.sleep(50);

seekBar1.setProgress(seekBar1.getProgress()+ 1);

}catch (InterruptedException e) {

e.printStackTrace();

break;

}

}

}

/**

* 停止自動滾動

*/

publicvoid autoStopRunTask(){

interrupt();

}

}

}

1.1.3? SeekBar

SeekBar是ProgressBar的子類,功能很相似

SeekBar可以與用戶進行交互,在展示進度的同時允許用戶手動改變進度

特有屬性和方法:

android:thumb設置滑塊所使用的圖片

setOnSeekBarChangeListener(listener)? 設置滑動監(jiān)聽器

1.1.4? RatingBar

【特有屬性和方法

android:numberStars設置星星的數量(默認5顆星)

android:rating設置被點亮的星星的個數

android:stepSize設置最小評分的顆粒度

setOnRatingBarChangeListener(listener)設置監(jiān)聽器

1.1.5? SeekBar練習

private void bindListener() {

seekbar.setOnSeekBarChangeListener(newOnSeekBarChangeListener() {

@Override

public voidonStopTrackingTouch(SeekBar seekBar) {

// TODOAuto-generated method stub

}

@Override

public voidonStartTrackingTouch(SeekBar seekBar) {

// TODOAuto-generated method stub

}

@Override

public voidonProgressChanged(SeekBar seekBar, int progress,

booleanfromUser) {

if(progress<=30){

//imageview.setImageResource(R.drawable.img1);

imageview.setImageResource(imges[0]);

}elseif(progress<=60){

//imageview.setImageResource(R.drawable.img2);

imageview.setImageResource(imges[1]);

}else if(progress<=90){

//imageview.setImageResource(R.drawable.img3);

imageview.setImageResource(imges[2]);

}

}

});

}

1.2????資源文件

1、id

2、布局

3、字符串

4、數組

5、樣式和主題

6、菜單

7、已編譯的任意XML資源文件:res/xml

8、未編譯的原始資源文件:res/raw

9、圖像

普通圖像資源:drawable

xml圖像資源:bitmap

圖層(Layer)資源:layer-list

圖像狀態(tài)(State)資源:selector

圖像級別(Level)資源:level-list

淡入淡出(CrossFade)資源:transition

外形(Shape)資源:shape(shape、gradient、padding、corners、stroke)

10、動畫資源

逐幀動畫:res/drawable

補間動畫:res/anim

透明度補間動畫 alpha

縮放補間動畫 scale

旋轉動畫 rotate

移動補間動畫translate

屬性動畫:res/animator(api11出現)

逐幀動畫:res/drawable

屬性動畫:res/animator(api11出現)

1.3????各種資源文件的xml格式

1.3.1? 字符串資源

Android的國際化和本地化

internationalization(國際化)簡稱 i18n,因為在i和n之間還有18個字符

localization(本地化),簡稱L10n

一般說明一個地區(qū)的語言時,用語言-地區(qū)的形式,如? zh-CN, zh-TW

//獲取字符串資源

StringssString = getResources().getString(R.string.app_name);

getString(R.string.app_name);????? //等價

1.3.2? 數組資源

在Android中,推薦使用數組資源文件來定義數組

位置:res/values/arrays.xml



小明

小亮


1

2

//字符串數組

String[]names=getResources().getStringArray(R.array.nameaa);

Log.i("MainActivity",names.toString());

//獲取整型數組資源

int[] intArray=getResources().getIntArray(R.array.interarray);

Log.i("MainActivity",intArray.toString());

1.3.3? 原始xml資源

位置:res/xml目錄下

Java代碼中的獲取方式:getResources().getXml(R.xml.文件名稱)


哈利波特

99.9

Thinking In Java

120

小李飛刀

50

//原始xml資源

XmlResourceParserparser =getResources().getXml(R.xml.books);

//解析省略

//這里注意的是,XmlResourceParser是一個pull解析器,不過多了一個方法,就是close方法

//在解析完xml文件后,記得一定要調用close()方法釋放資源

1.3.4? 圖像資源

【可以新建一個與分辨率無關適配的圖形資源文件夾:drawble

1、普通圖像資源

2、? 圖像狀態(tài)(selector)資源

slt_play.xml


引用:

android:background="@drawable/slt_play"

3、? 外形(shape)資源

漸變色、倒圓角、尺寸、內邊距、


<shape

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

android:shape=["rectangle" | "oval" |"line" | "ring"] >


<corners

android:radius="integer"

android:topLeftRadius="integer"

android:topRightRadius="integer"

android:bottomLeftRadius="integer"

android:bottomRightRadius="integer" />


<gradient

android:angle="integer"

android:centerX="integer"

android:centerY="integer"

android:centerColor="integer"

android:endColor="color"

android:gradientRadius="integer"

android:startColor="color"

android:type=["linear" | "radial" |"sweep"]

android:useLevel=["true" | "false"] />

<padding

android:left="integer"

android:top="integer"

android:right="integer"

android:bottom="integer" />

<size

android:width="integer"

android:height="integer" />

<solid

android:color="color" />


<stroke

android:width="integer"

android:color="color"

android:dashWidth="integer"

android:dashGap="integer" />

引用:

android:background="@drawable/shape_demo"


1.3.5? 樣式和主題

在代碼中可以通過style和theme來提高代碼的復用性和可維護性。

樣式和主題的區(qū)別

作用范圍不同,樣式作用于單個小控件,而主題作用于Activity或整個APP

引用位置不同,樣式都是在布局文件中被引用,而主題是在清單文件中被引用

Values\ styles.xml


#F00

italic

//注意:樣式可以實現繼承

引用:

style="@style/text_style2"

主題:定義同樣式,在Style.xml中,引用的形式不同:是在清單文件中引用。

background">#D2E6D7

parent="@android:style/Theme.DeviceDefault.Dialog.NoActionBar">

#32FE32


windowTitleSize">40dip


windowBackground">@drawable/abc


windowNoTitle">true


windowFullscreen">true

在清單文件中引用:

android:name="com.example.day05theme.Activity2"

android:theme="@style/blue_XYSTheme"/>

android:theme="@style/girl_XYSTheme"/>

1.4????其他資源文件

Values下的

color:顏色資源

位置:res/values/colors.xml

dimen:尺寸資源

位置:res/values/dimens.xml

id:id資源

常見使用形式:values

"1.0"encoding="utf-8"?>


"id"name="tv1"/>

引用:

android:id="@id/tv2"

使用的注意事項:

1)在布局中引用id資源的話,必須要保證在引用之前先創(chuàng)建過這個id

也可以在引用時候使用@+id,保證id肯定存在,

PS:@+id的意思就是在使用這個id之前先會判斷id是否存在,如果不存在就創(chuàng)建,如果存在就直接引用

2)在同一個布局文件中不能出現同名的id,但是在不同的布局文件中可以出現相同的id

3)我們可以預先將需要使用的id全部抽取出來作為資源定義在資源文件中

提示:在Android支持資源類型有很多,如果要學習其他資源的使用,那么建議查看官方文檔進行學習,如果要看資源使用的格式,可以查看SDK自帶的資源文件,SDK自帶的資源文件位置:SDK根目錄\platforms\android-XX\data\res

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,034評論 25 709
  • 本人初學Android,最近做了一個實現安卓簡單音樂播放功能的播放器,收獲不少,于是便記錄下來自己的思路與知識總結...
    落日柳風閱讀 19,452評論 2 41
  • ¥開啟¥ 【iAPP實現進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,329評論 0 17
  • 項目有做完的一天,但是開創(chuàng)一份事業(yè)之后往往是沒有回頭路的。 如果真的決定從零開始創(chuàng)業(yè),那么即將面臨的是鎖定奉獻人生...
    Tina_mama閱讀 250評論 0 2
  • 實例方法 實例方法是屬于某個特定類、結構體或者枚舉類型實例的方法。實例方法提供訪問和修改實例屬性的方法或提供與實例...
    蠱毒_閱讀 347評論 0 1

友情鏈接更多精彩內容