天天看點

自定義圓形進度條ProgressBar的三種方式

http://liuzhichao.com/p/636.html

進度條預設是不确定(indeterminate=true)android進度條

android進度條有4種風格可以使用。

預設值是progressbarstyle。

設定成progressbarstylesmall後,圖示變小。

設定成progressbarstylelarge後,圖示變大

設定成progressbarstylehorizontal後,變成橫向長方形。

自定義圓形進度條progressbar的一般有三種方式:

一、通過動畫實作

定義res/anim/loading_anim.xml如下:

<code>1</code>

<code>&lt;?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"utf-8"</code><code>?&gt;</code>

<code>2</code>

<code>&lt;</code><code>animation-list</code> <code>android:oneshot</code><code>=</code><code>"false"</code>

<code>3</code>

<code>  </code><code>xmlns:android</code><code>=</code><code>"http://schemas.android.com/apk/res/android"</code><code>&gt;</code>

<code>4</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f0"</code> <code>/&gt;</code>

<code>5</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f1"</code> <code>/&gt;</code>

<code>6</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f2"</code> <code>/&gt;</code>

<code>7</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f3"</code> <code>/&gt;</code>

<code>8</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f4"</code> <code>/&gt;</code>

<code>9</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f5"</code> <code>/&gt;</code>

<code>10</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f6"</code> <code>/&gt;</code>

<code>11</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f7"</code> <code>/&gt;</code>

<code>12</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f8"</code> <code>/&gt;</code>

<code>13</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f9"</code> <code>/&gt;</code>

<code>14</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f10"</code> <code>/&gt;</code>

<code>15</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f11"</code> <code>/&gt;</code>

<code>16</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f12"</code> <code>/&gt;</code>

<code>17</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f13"</code> <code>/&gt;</code>

<code>18</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f14"</code> <code>/&gt;</code>

<code>19</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f15"</code> <code>/&gt;</code>

<code>20</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f16"</code> <code>/&gt;</code>

<code>21</code>

<code>  </code><code>&lt;</code><code>item</code> <code>android:duration</code><code>=</code><code>"150"</code> <code>android:drawable</code><code>=</code><code>"@drawable/loading_blue_16_f17"</code> <code>/&gt;</code>

<code>22</code>

<code>&lt;/</code><code>animation-list</code><code>&gt;</code>

在layout檔案中引用如下:

<code>&lt;</code><code>progressbar</code>

<code>        </code><code>android:id</code><code>=</code><code>"@+id/progressbar1"</code>

<code>        </code><code>android:layout_width</code><code>=</code><code>"wrap_content"</code>

<code>        </code><code>android:layout_height</code><code>=</code><code>"wrap_content"</code>

<code>        </code><code>android:layout_gravity</code><code>=</code><code>"center_horizontal"</code>

<code>        </code><code>android:layout_marginbottom</code><code>=</code><code>"20dip"</code>

<code>        </code><code>android:layout_margintop</code><code>=</code><code>"20dip"</code>

<code>        </code><code>android:indeterminate</code><code>=</code><code>"false"</code>

<code>        </code><code>android:indeterminatedrawable</code><code>=</code><code>"@anim/loading_anim"</code> <code>/&gt;</code>

二、通過自定義顔色實作

定義res/drawable/loading_color.xml如下:

<code>&lt;</code><code>rotate</code> <code>xmlns:android</code><code>=</code><code>"http://schemas.android.com/apk/res/android"</code>

<code>    </code><code>android:fromdegrees</code><code>=</code><code>"0"</code>

<code>    </code><code>android:pivotx</code><code>=</code><code>"50%"</code>

<code>    </code><code>android:pivoty</code><code>=</code><code>"50%"</code>

<code>    </code><code>android:todegrees</code><code>=</code><code>"360"</code> <code>&gt;</code>

<code>    </code><code>&lt;</code><code>shape</code>

<code>        </code><code>android:innerradiusratio</code><code>=</code><code>"3"</code>

<code>        </code><code>android:shape</code><code>=</code><code>"ring"</code>

<code>        </code><code>android:thicknessratio</code><code>=</code><code>"8"</code>

<code>        </code><code>android:uselevel</code><code>=</code><code>"false"</code> <code>&gt;</code>

<code>        </code><code>&lt;</code><code>gradient</code>

<code>            </code><code>android:centercolor</code><code>=</code><code>"#ffdc35"</code>

<code>            </code><code>android:centery</code><code>=</code><code>"0.50"</code>

<code>            </code><code>android:endcolor</code><code>=</code><code>"#ce0000"</code>

<code>            </code><code>android:startcolor</code><code>=</code><code>"#ffffff"</code>

<code>            </code><code>android:type</code><code>=</code><code>"sweep"</code>

<code>            </code><code>android:uselevel</code><code>=</code><code>"false"</code> <code>/&gt;</code>

<code>    </code><code>&lt;/</code><code>shape</code><code>&gt;</code>

<code>&lt;/</code><code>rotate</code><code>&gt;</code>

<code>        </code><code>android:id</code><code>=</code><code>"@+id/progressbar2"</code>

<code>        </code><code>android:indeterminatedrawable</code><code>=</code><code>"@drawable/loading_color"</code> <code>/&gt;</code>

三、使用一張圖檔進行自定義

定義res/drawable/loading_img.xml如下:

<code>&lt;</code><code>layer-list</code> <code>xmlns:android</code><code>=</code><code>"http://schemas.android.com/apk/res/android"</code> <code>&gt;</code>

<code>    </code><code>&lt;</code><code>item</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>rotate</code>

<code>            </code><code>android:drawable</code><code>=</code><code>"@drawable/exchange_loading"</code>

<code>            </code><code>android:fromdegrees</code><code>=</code><code>"0.0"</code>

<code>            </code><code>android:pivotx</code><code>=</code><code>"50.0%"</code>

<code>            </code><code>android:pivoty</code><code>=</code><code>"50.0%"</code>

<code>            </code><code>android:todegrees</code><code>=</code><code>"360.0"</code> <code>/&gt;</code>

<code>    </code><code>&lt;/</code><code>item</code><code>&gt;</code>

<code>&lt;/</code><code>layer-list</code><code>&gt;</code>

<code>    </code><code>android:id</code><code>=</code><code>"@+id/progressbar3"</code>

<code>    </code><code>android:layout_width</code><code>=</code><code>"wrap_content"</code>

<code>    </code><code>android:layout_height</code><code>=</code><code>"wrap_content"</code>

<code>    </code><code>android:indeterminate</code><code>=</code><code>"false"</code>

<code>    </code><code>android:indeterminatedrawable</code><code>=</code><code>"@drawable/lodaing_img"</code>

<code>    </code><code>/&gt;</code>

繼續閱讀