工作内容:
1.自定义控件继承自View
2.进度条ProgressBar,SeekBar的基础使用
3.<layer-list>,<shap>的使用
学习分享:
1.自定义控件继承自View
I.java文件
public class MyView extends View {
//cx坐标x,cy坐标y,cr半径
private float cx = 30f,cy = 30f,cr = 30f;
//最少需重写父类的以下2个构造方法
public MyView(Context context) {
super(context);
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}
//最少重写父类的onDraw方法
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();//画笔
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(2);
//画布上面绘画
canvas.drawCircle(cx,cy,cr,paint);
//【演示结果:1条圆环】
}
}
II.在布局文件中引入(包名+类名)
<azsecuer.androidy.com.mobelmanager.activity.MyView android:layout_width="match_parent" android:layout_height="wrap_content" />
2.ProgressBar,SeekBar的常规使用
I.在布局文件中放入<ProgressBar>组件,并设置属性
style="@style/Widget.AppCompat.ProgressBar.Horizontal" //横向进度条
android:max="100" //进度条的最大值
android:progress="20" //当前进度
II.在Java文件中可以通过在子线程中通过handler发送信息来提示进度条增加
常用到方法(setProgress(int progress),setMax(int progress))
III.SeekBar与progress类似,但不需要设置Style属性,默认是水平(同于音乐播放器中的播放事件进度条)IV.给SeekBar添加事件SeekBar.OnSeekBarChangeListener,在其重写的方法中的stopTrackingTouch(SeekBar seekBar)的方法块中
写入处理代码(如:获取用户点击之后,的SeekBar的progress属性)
3.设置Progress的样式<layer-list>,<shap>的使用:【注意尝试:<item android:id="@android:id/属性">去尝试填入各种属性】以下代码在drawable → 右键选择new → "Drawable resource file",命名为“progress_fill”
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> //item--表示是要设置的属性 <shape> <corners android:radius="15dp"/> <solid android:color="@color/progress_bg_orange"/> </shape> </item> <item android:id="@android:id/progress"> <clip> //clip--表示剪切 <shape> //表示形状 <corners android:radius="15dp"/> //表示圆角的半径 <solid android:color="#00ff0f"/> //表示填充颜色
//<stroke width = "2dp" color="#F00"> //表示边框宽度2,颜色为红色 </shape> </clip> </item> </layer-list>
实例使用:在ProgressBar中
style = "@style/Widget.AppCompat.ProgressBar.Horizontal"不变
添加属性 android:progressDrawable="@drawable/progress_fill"