Android 自定义进度条案例
时间: 2023-11-11 20:51:19 浏览: 80
好的,针对您的问题,以下是一份Android自定义进度条案例的代码:
首先,在res/layout文件夹中创建一个xml文件custom_progress_bar.xml,然后在其中添加以下代码:
```
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Loading..."
android:textSize="18sp"/>
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/text_view"/>
</RelativeLayout>
```
上述代码创建了一个带有文本和进度条的RelativeLayout布局。
接下来,在res/drawable文件夹中创建一个xml文件custom_progress_bar_drawable.xml,然后在其中添加以下代码:
```
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="8"
android:useLevel="true">
<size
android:width="50dp"
android:height="50dp"/>
<gradient
android:centerColor="#FF0000"
android:endColor="#FF0000"
android:startColor="#FFA500"
android:type="sweep"
android:useLevel="false"/>
</shape>
```
上述代码定义了一个圆形橙色渐变的形状。
接着,在Java文件中创建一个自定义的进度条类CustomProgressBar,代码如下:
```
public class CustomProgressBar extends RelativeLayout {
private Context mContext;
private ProgressBar mProgressBar;
private TextView mTextView;
public CustomProgressBar(Context context) {
super(context);
this.mContext = context;
init();
}
public CustomProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
init();
}
public CustomProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.mContext = context;
init();
}
private void init() {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.custom_progress_bar, this, true);
mProgressBar = (ProgressBar) view.findViewById(R.id.progress_bar);
mProgressBar.setProgressDrawable(getResources().getDrawable(R.drawable.custom_progress_bar_drawable));
mTextView = (TextView) view.findViewById(R.id.text_view);
}
public void setProgressBarColor(int color) {
mProgressBar.getIndeterminateDrawable().setColorFilter(color, android.graphics.PorterDuff.Mode.MULTIPLY);
}
public void setText(String text) {
mTextView.setText(text);
}
}
```
上述代码创建了一个名为CustomProgressBar的自定义布局类,并在其中定义了方法用于设置进度条颜色和文本。
现在,您可以在布局中包含CustomProgressBar,如下所示:
```
<your.package.name.CustomProgressBar
android:id="@+id/custom_progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
```
最后,在Java代码中可以通过以下方式使用自定义进度条:
```
CustomProgressBar customProgressBar = (CustomProgressBar) findViewById(R.id.custom_progress_bar);
customProgressBar.setProgressBarColor(Color.RED);
customProgressBar.setText("Loading...");
```
希望以上代码对您有帮助。
阅读全文