要實現(xiàn)Android ProgressBar的自定義形狀和顏色,你可以按照以下步驟操作:
首先,創(chuàng)建一個新的Java類,例如CustomProgressBar.java
,并繼承自Drawable
類。然后,重寫onDraw()
、getIntrinsicWidth()
和getIntrinsicHeight()
方法。
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
public class CustomProgressBar extends Drawable {
private Paint paint;
private RectF rectF;
private int color;
public CustomProgressBar(Context context, int color) {
paint = new Paint();
paint.setAntiAlias(true);
this.color = color;
rectF = new RectF();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(color);
canvas.drawOval(rectF, paint);
}
@Override
public int getIntrinsicWidth() {
// 設(shè)置進度條寬度
return 200;
}
@Override
public int getIntrinsicHeight() {
// 設(shè)置進度條高度
return 50;
}
public void setColor(int color) {
this.color = color;
invalidate();
}
public void setProgress(float progress) {
rectF.set(0, 0, getWidth() * progress, getHeight());
invalidate();
}
}
在布局文件(例如activity_main.xml
)中添加一個CustomProgressBar
控件。
<com.example.customprogressbar.CustomProgressBar
android:id="@+id/customProgressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
注意:請將com.example.customprogressbar
替換為你自定義的包名。
在你的Activity(例如MainActivity.java
)中,找到自定義進度條控件并設(shè)置其顏色和進度。
import android.graphics.Color;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.example.customprogressbar.CustomProgressBar;
public class MainActivity extends AppCompatActivity {
private CustomProgressBar customProgressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
customProgressBar = findViewById(R.id.customProgressBar);
customProgressBar.setColor(Color.BLUE); // 設(shè)置進度條顏色
customProgressBar.setProgress(0.5f); // 設(shè)置進度條進度(0.0f - 1.0f)
}
}
現(xiàn)在,你應(yīng)該可以看到一個具有自定義形狀和顏色的進度條。你可以根據(jù)需要調(diào)整CustomProgressBar
類的實現(xiàn),以實現(xiàn)所需的進度條樣式。