Android中進度條類型的控制項定義和妙用技巧

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   ar   os   使用   sp   

Android中進度條控制項有3個(不算ProgressDialog),分別是ProgressBar,SeekBar和RatingBar,對於自訂樣式來說又得按照需求分為2中情況,第一種是刻度型,第二種是迴圈類型。

第一種是“刻度型”,也就是他有起點和終點,起點值小於終點值

這種樣式的修改,要修改三個屬性即可

分別是:背景(主要是進度的軌道樣式),第一層級捲軸progressDrawable,第二層級progressDrawable


遺憾的是Android提供的api很難設定,不過可以通過LayerListDrawable實現,下面以RatingBar或者SeekBar為例子展示

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item    android:id="@+android:id/background"    android:drawable="@drawable/unselect"></item> <item    android:id="@+android:id/secondaryProgress"    android:drawable="@drawable/unselect"></item> <item    android:id="@+android:id/progress"    android:drawable="@drawable/selected"></item> </layer-list>

<style name="roomRatingBar" parent="@android:style/Widget.RatingBar"> <item name="android:progressDrawable">@drawable/ratingbar_drawable</item> <item name="android:minHeight">48dip</item> <item name="android:maxHeight">48dip</item> </style>

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <RatingBar        android:layout_width="match_parent"        android:layout_height="wrap_content"        style="@style/roomRatingBar"        android:layout_marginLeft="10dip"        android:id="@+id/ratingbar"        android:rating="1.5"        android:stepSize="0.15"        android:numStars="8"    /></LinearLayout>


第二種是迴圈類型,無刻度型

對於這種情況來說,這是一種動畫效果,而且是往複府迴圈的,因此來說適合做沒有進度的捲軸,loading效果,甚至可以作為課旋轉的頭像,或者其他動畫吧。

因此來說,這裡適合無限迴圈的幀動畫 或者旋轉動畫。

我們可以修改

android:indeterminateDrawable=""android:indeterminateDuration="1000"

android:indeterminateDrawable的值如果是幀動畫,則無需設定android:indeterminateDuration,如果是其他補間動畫,需要設定android:indeterminateDuration

幀動畫

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"    android:oneshot="false"    android:visible="true" >    <item        android:drawable="@drawable/common_loading_icon1"        android:duration="33"/>    <item        android:drawable="@drawable/common_loading_icon2"        android:duration="33"/>    <item        android:drawable="@drawable/common_loading_icon3"        android:duration="33"/>    <item        android:drawable="@drawable/common_loading_icon4"        android:duration="33"/>    <item        android:drawable="@drawable/common_loading_icon5"        android:duration="33"/>    <item        android:drawable="@drawable/common_loading_icon6"        android:duration="33"/>    <item        android:drawable="@drawable/common_loading_icon7"        android:duration="33"/></animation-list>

   <ProgressBar            android:layout_width="34dp"            android:layout_height="30dp"            android:layout_centerVertical="true"            android:layout_marginLeft="8dp"             android:indeterminateDrawable="@drawable/common_loading_icon" />

補間動畫:

<rotate    xmlns:android="http://schemas.android.com/apk/res/android"    android:drawable="@drawable/window_loading"    android:pivotX="50%"    android:pivotY="50%"    android:repeatMode="reverse"    android:repeatCount="infinite"    android:fromDegrees="0"    android:toDegrees="360"    android:duration="1000"    />

<ProgressBar         android:layout_width="60dip"        android:layout_height="60dip"        android:indeterminate="true"        style="?android:attr/progressBarStyleSmall"        android:indeterminateDrawable="@anim/base_loading_anim"        android:indeterminateDuration="1000"        android:padding="10dip"        />


ImageView+ClipDrawable+Handler/Thread

另外,對於一種裁剪(咖啡杯逐漸滿杯的的動畫)是動畫,很多開發人員一般選擇的是幀動畫,其實有一種更好的方式是使用 ImageView+ClipDrawable+Handler/Thread來代替,對於ClipDrawable來說,地預設的最大level是10000:

我們可以給ImageView設定一個被裁減圖片的高度吻合暗灰色背景,然後在設定ClipDrawable的Level值

關於ClipDrawable請參閱部落格:http://my.oschina.net/ososchina/blog/346562


最簡單的捲軸

既然說到動畫,動畫完全可以類比捲軸的,不信你試試,對於捲軸你還可以使用   LinearLayout+View的方式來實現(可實現垂直或者水平的),或者直接使用繪圖方式也行。


關於動畫的相對位置

1.日常中對動畫瞭解最有問題的地方是相對點,這裡順便說一句,相對點決定動畫的參照系。對於xml而言,以下屬性的設定可以自動轉換相對點

android:pivotX="" 相對x位置[float][fraction]android:pivotY=""相對y位置[float][fraction]

其中android:pivotX為實數時,是相對自己的點,比如:android:pivotX="0.5",android:pivotY="0.5"或android:pivotX="50",android:pivotY="50"相對動畫本身的位置,一般來說是自身的中心

2.相對於螢幕的動畫

android:pivotY="50%p",android:pivotX="50%p",這個點事相對於螢幕的,50%意味著螢幕的中間。


try doing it




Android中進度條類型的控制項定義和妙用技巧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.