1. ホーム
  2. Android

アンドロイドプログレスバー自定义

2022-02-17 02:43:45

在描画可能文件夹中建立如下旋转动画文件

<?xml version="1.0" encoding="utf-8"?<?xml version="1.0" encoding="utf-8;"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"。   
    android:drawable="@drawable/loading1"    
    android:pivotX="50%"    
    android:pivotY="50%" />  

その中ローディング1 即为您想的的图片

二在布局文件中设置的步行棒

 プログレスバー
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         android:indeterminateDrawable="@drawable/progressbg"
         android:indeterminateOnly="true"
         android:indeterminateBehavior="repeat"
       />


アンドロイド自定义水平的进行吧。

先看效果图



代码

新建材ドローイング可能

新建一个描画可能/プログレスバークロール

<?xml version="1.0" encoding="utf-8"?<?xml version="1.0" encoding="utf-8;"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    項目
        android:id="@android:id/progress"
        android:drawable="@drawable/common_button_red"/>
</layer-list>


新建築物/プログレッシブ・スケープ

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"。
    android:shape="rectangle" >
    <corners android:radius="10dp" />
    <solid android:color="#ffffff" />
</shape>

布教局:

プログレスバー
                android:background="@drawable/progresssape"
                android:id="@+id/pb"
                android:layout_width="wrap_content"
                android:layout_height="10dp"
                android:layout_marginLeft="8dp"
                android:layout_marginRight="8dp"
                android:layout_weight="1"
                android:indeterminateOnly="false"
                android:max="100"
                android:progressDrawable="@drawable/progressbarclor" />



http://winwyf.blog.51cto.com/4561999/857867

Android原生控件只有横向进度条一种,而且没法变化样式,比原生的的样子。

很丑是吧,当大的产品设计要求更换前的背景,甚至纵向,甚至圆形状的,咋比,如。

ok,我们开始吧:。

一)变换前景背後

先来看:プログレッシブバー的属性

  1.             android:id="@+id/progressBar" 
  2.             style="?android:attr/progressBarStyleHorizontal" 
  3.             android:layout_width="match_parent" 
  4.             android:layout_height="wrap_content" 
  5.             android:layout_margin="5dip" 
  6.             android:layout_toRightOf="@+id/progressBarV" 
  7.             android:indeterminate="false" 
  8.             android:padding="2dip" 
  9.             android:progress="50" /> 

根据style="?android:attr/progressBarStyleHorizontal",我们找到源码中的style.xml

See

< item name = "android:progressDrawable" > @android:drawable/progress_horizontal </ item >

Wood, keep digging into the source code and find the progress_horizontal.xml under the drawable, which is our main character today: the


  1.                     android:startColor="#ff9d9e9d" 
  2.                     android:centerColor="#ff5a5d5a" 
  3.                     android:centerY="0.75" 
  4.                     android:endColor="#ff747674" 
  5.                     android:angle="270" 
  6.             /> 
  7.                         android:startColor="#80ffd300" 
  8.                         android:centerColor="#80ffb600" 
  9.                         android:centerY="0.75" 
  10.                         android:endColor="#a0ffcb00" 
  11.                         android:angle="270" 
  12.                 /> 
  13.                         android:startColor="#ffffd300" 
  14.                         android:centerColor="#ffffb600" 
  15.                         android:centerY="0.75" 
  16.                         android:endColor="#ffffcb00" 
  17.                         android:angle="270" 
  18.                 /> 

 See android:id="@android:id/progress"wood, see android:id="@android:id/secondaryProgress"wood

Copy this file to your project's drawable, and you can change the properties of the shape, gradient, rounded corners, etc. as you like

So how do you put an image in there? OK, create a new progress_horizontal1.xml:

Specify your processed image in android:drawable

Then go back to the layout

  1.             android:id="@+id/progressBar1" 
  2.             android:layout_width="match_parent" 
  3.             android:layout_height="wrap_content" 
  4.             android:layout_below="@+id/progressBar" 
  5.             android:layout_margin="5dip" 
  6.             android:layout_toRightOf="@+id/progressBarV" 
  7.             android:background="@drawable/progress_bg" 
  8.             android:indeterminate="false" 
  9.             android:indeterminateOnly="false" 
  10.             android:maxHeight="20dip" 
  11.             android:minHeight="20dip" 
  12.             android:padding="2dip" 
  13.             android:progress="50" 
  14.             android:progressDrawable="@drawable/progress_horizontal1" /> 

android:background="@drawable/progress_bg" 背景を指定します。

android:progressDrawable="@drawable/progress_horizontal1"foreground は上記を使用します。 進捗状況_水平方向1

OK、完了

 なお、角が丸く面取りされているのは、システム自体が追加したようですが、いずれにせよ、私の画像ではこの面取りはしていません

(B) 垂直方向のプログレスバー

まだ、ソースコードから振り返る必要があります。 progress_horizontal.xml

  1. <項目
  2. <クリップ
  3. <形状
  4. <コーナー
  5.                         android:startColor="#ffffd300" 
  6.                         android:centerColor="#fffb600" 
  7.                         android:centerY="0.75" 
  8.                         android:endColor="#ffffcb00" 
  9.                         android:angle="270" 
  10.                 /> 

なぜ、形状の外側がクリップのレイヤーを包むのか、公式ドキュメントでは、clipdrawableが自己複製であることを説明していますが、その定義を見るには、次のようにします。

  1. <未定義
  2.     xmlns:android="http://schemas.android.com/apk/res/android"。 
  3.     android:drawable="@drawable/drawable_resource" 
  4.     android:clipOrientation=["horizontal" | "vertical"]. 
  5.     android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | | | ]です。 
  6.                      "fill_vertical" | "center_horizontal" | "fill_horizontal" |。 
  7.                      "center" | "fill" | "clip_vertical" | "clip_horizontal"] を参照してください。/> 

android:clipOrientation は2つのプロパティを持ち、デフォルトはhorizontalです。

android:gravityには2つのプロパティがあり、デフォルトはleftです。

では、縦と下に変えてみて、どうなるかを見てみましょう。progress_vertical.xmlを新規に作成し、ソースコードを以下のように記述します。 progress_horizontal.xmlの内容をコピーして、ここから削除します。 secondaryProgressで、クリップを修正し、シェイプのグラデーションのcenterYをcenterXに変更しました。

  1. <項目
  2.             android:clipOrientation="vertical" 
  3.             android:gravity = "bottom"> 
  4. <形状
  5. <コーナー
  6.                         android:startColor="#ffffd300" 
  7.                         android:centerColor="#fffb600" 
  8.                         android:centerX="0.75" 
  9.                         android:endColor="#ffffcb00" 
  10.                         android:angle="90" 
  11.                 /> 

android:progressDrawable="@drawable/progress_vertical" にレイアウトされています。

OK、完了です!このように簡単です。

(iii) アークバー

これはプログレスバーとは言えないかもしれませんし、あまり使われません。せいぜいダッシュボードに使われるくらいで、そうでなければ誰がプログレスバー全体を円弧にするのでしょう。これは、ソースコードを変更することでできることではありません。