自定义旋转图分三步:

1、在layout中为ProgressBar设计布局;
2、在style中为ProgressBar设置Style;
3、新建一个类继承ProgressBar,在构造方法中设置style,加载布局;


下面是我写的一个例子,先看第一步,布局:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@drawable/progressdialog_background"    android:gravity="center"    android:orientation="vertical"    android:paddingBottom="@dimen/xhdpi_8dp"    android:paddingLeft="@dimen/xhdpi_18dp"    android:paddingRight="@dimen/xhdpi_18dp"    android:paddingTop="@dimen/xhdpi_8dp">    <ProgressBar        android:layout_width="38dp"        android:layout_height="38dp"        android:indeterminateBehavior="repeat"        android:indeterminateDrawable="@drawable/progressbar_drawable"        android:indeterminateDuration="2000"        android:indeterminateOnly="true" />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="@dimen/xhdpi_8dp"        android:text="登入中..."        android:textColor="@color/ad_color_white"        android:textSize="@dimen/xhdpi_12sp" />LinearLayout>

android:indeterminateBehavior=”repeat”设置行为为重复,及图片会一直重复旋转;
android:indeterminateDrawable=”@anim/progressbar_drawable”设置旋转动画;
android:indeterminateDuration=”2000”这里是设置完成一次动画的时间
android:indeterminateOnly=”true”设置为不确定模式
下面是anim/progressbar_drawable.xml

<?xml version="1.0" encoding="utf-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromDegrees="0"    android:pivotX="50%"    android:pivotY="50%"    android:toDegrees="360"    android:drawable="@mipmap/progress_orange">rotate>

注意如果这里设置android:duration的时间是不起作用的。
再看第二步,设置style:

    

android:windowBackground,设置ProgressBar的背景为透明,如果不透明,会有黑色边框;
android:backgroundDimEnabled,设置窗口背景是否变暗,false为不变暗。
最后一步,新建MyProgressBar类继承ProgressBar,代码如下:

public class HlwProgressDialog extends ProgressDialog {    public HlwProgressDialog(Context context, int theme) {        //将自定义的style转进去,设置为我们定义的style        super(context, R.style.progressDialog_style);        //点击返回键可以dismissProgressBar        setCanceledOnTouchOutside(false);    }    public HlwProgressDialog(Context context) {        this(context, R.style.progressDialog_style);    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //加载我们设计的布局        setContentView(R.layout.hlw_progressdialog);    }}

大功告成,现在我们就可以和使用系统的ProgessBar一样使用我们自定义的了。

更多相关文章

  1. Android软键盘遮挡布局问题;
  2. Android对用五大布局
  3. Android使用GridLayout布局简单的计算器界面
  4. android:MATCH_PARENT是什么类型的布局
  5. android布局中容易混淆的几个属性
  6. android studio加载so文件报错:dalvik.system.PathClassLoadero
  7. Android StaggeredGridLayoutManager布局RecyclerView在滚动状态
  8. android横竖屏切换和布局的问题

随机推荐

  1. Android(安卓)Studio svn检出项目一直报
  2. 【Android】Android实现截取当前屏幕图片
  3. Android设备唯一标识ID的获取
  4. Android核心库
  5. Android(安卓)Studio安装后打不开
  6. Android(安卓)应用安装设置
  7. Android经典蓝牙和Ble蓝牙的对比
  8. android 10.0拍照显示并上传服务器
  9. 弹球效果动画
  10. android:屏幕自适应