android progressdrawable的自定义形状方法

avatar
作者
筋斗云
阅读量:0

在Android中,自定义ProgressDrawable的形状可以通过创建一个新的类并继承自ProgressDrawable来实现。以下是一个简单的示例,展示了如何创建一个带有自定义形状的ProgressDrawable:

  1. 首先,创建一个新的类,继承自ProgressDrawable:
import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Build;  public class CustomProgressDrawable extends Drawable {     private Paint paint;      public CustomProgressDrawable() {         paint = new Paint();         paint.setAntiAlias(true);         paint.setStyle(Paint.Style.STROKE);         paint.setStrokeWidth(10);     }      @Override     protected void onBoundsChange(Rect bounds) {         super.onBoundsChange(bounds);     }      @Override     public void draw(Canvas canvas) {         // 在这里绘制你的自定义形状         Rect bounds = getBounds();         int centerX = bounds.centerX();         int centerY = bounds.centerY();         int radius = Math.min(centerX, centerY) - (int) paint.getStrokeWidth() / 2;          paint.setColor(0xFF009688);         canvas.drawCircle(centerX, centerY, radius, paint);          paint.setColor(0xFFFF5722);         canvas.drawArc(bounds.left, bounds.top, bounds.right, bounds.bottom, 270, 120, false, paint);     }      @Override     public void setAlpha(int alpha) {         paint.setAlpha(alpha);     }      @Override     public void setColorFilter(ColorFilter colorFilter) {         paint.setColorFilter(colorFilter);     }      @Override     public int getOpacity() {         return PixelFormat.TRANSLUCENT;     } } 
  1. 然后,在你的布局文件中使用这个自定义的ProgressDrawable:
    android:id="@+id/progressBar"     style="?android:attr/progressBarStyleHorizontal"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:indeterminate="false"     android:max="100"     android:progress="50" /> 
  1. 最后,在你的Activity或Fragment中设置自定义的ProgressDrawable:
ProgressBar progressBar = findViewById(R.id.progressBar); CustomProgressDrawable customProgressDrawable = new CustomProgressDrawable(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {     progressBar.setProgressDrawable(customProgressDrawable); } else {     progressBar.setIndeterminateDrawable(customProgressDrawable); } 

这样,你就可以看到一个带有自定义形状的ProgressBar了。你可以根据需要修改CustomProgressDrawable类中的draw()方法,以绘制你想要的形状。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!