91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

android progressdrawable的自定義形狀方法

小樊
86
2024-08-27 19:35:30
欄目: 編程語言

在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()方法,以繪制你想要的形狀。

0
宁陵县| 天津市| 泸西县| 台中县| 栾川县| 安平县| 靖远县| 西盟| 南乐县| 巴林左旗| 温泉县| 湖南省| 新竹县| 宣恩县| 新龙县| 滨州市| 天全县| 昌江| 金平| 城固县| 凌海市| 贺兰县| 张家界市| 合作市| 新余市| 海晏县| 松江区| 赫章县| 鄂伦春自治旗| 通城县| 嘉鱼县| 陆良县| 永城市| 黄山市| 太保市| 平顶山市| 五莲县| 唐山市| 康乐县| 蚌埠市| 改则县|