如何在Android中创建具有可绘制进度和背景项的自定义进度条?
我看到的所有例子都是渐变,如下所示:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Define the background properties like color etc -->
<item android:id="@android:id/background">
<shape>
<gradient
android:startColor="#000001"
android:centerColor="#0b131e"
android:centerY="1.0"
android:endColor="#0d1522"
android:angle="270"
/>
</shape>
</item>
<!-- Define the progress properties like start color, end color etc -->
<item android:id="@android:id/progress">
<clip>
<shape>
<gradient
android:startColor="#007A00"
android:centerColor="#007A00"
android:centerY="1.0"
android:endColor="#06101d"
android:angle="270"
/>
</shape>
</clip>
</item>
</layer-list>
而不是渐变,我想使用图像,png或drawable。
答案 0 :(得分:0)
你可以这样做
ProgressDialog pd = ProgressDialog.show(HomeActivity.this, null, null, true, false);
pd.setContentView(R.layout.progressdialog);
ProgressBar bar = (ProgressBar) pd.findViewById(R.id.pdWithImage);
Bitmap b = BitmapFactory.decodeResource(getResources(),R.drawable.default_profile_image);
Drawable d = new BitmapDrawable(getResources(),b);
bar.setBackgroundDrawable(d);
这是自定义进度条布局
progressdialog
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@android:color/transparent" >
<ProgressBar
android:id="@+id/pdWithImage"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerInParent="true"/>
</RelativeLayout>
答案 1 :(得分:0)
首先,添加progressbar_progress_clip.xml:
<?xml version="1.0" encoding="utf-8"?>
<clip
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/progressbar_progressing"
android:clipOrientation="horizontal"
android:gravity="left"/>
然后,以相对布局添加进度条和两个图像,以便可以在状态栏之后绘制图像。像这样:
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:layout_weight="94" >
<ProgressBar
android:id="@+id/pBarOverallStatus"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginBottom="2dp"
android:layout_marginTop="2dp"
android:indeterminateOnly="false"
android:max="100"
android:progressDrawable="@drawable/progressbar_progress_clip" >
</ProgressBar>
<ImageView
android:id="@+id/ringLeft"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="7dp"
android:contentDescription="@string/status_bar_ring"
android:src="@drawable/status_bar_ring" />
<ImageView
android:id="@+id/ringRight"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="7dp"
android:contentDescription="@string/status_bar_ring"
android:src="@drawable/status_bar_ring" />
</RelativeLayout>