これは私がここにインスピレーションを得た2点を持っている、オーディオ、音楽、スクロールバーを定義するビューの実装プロセスから書き込まれ、後のレビューのためにそれを書き留めます。
どのビューにハンドラを使用して基本的な仕組みは、ハンドラメカニズムが練習の範囲内ではないという見解をリフレッシュするためにpostInvalidateDelayed(ロングミル)メソッドを使用して、それらを繰り返しません。
次のようにメインのコードは次のようになります。
private float offset = 5;//矩形条之间的间距
private float width ;//矩形条的宽度
private float baseheight;//此View的高度
private float height ;//每个矩形条的高度(随机获取,每次不一样)
private int rectSize = 10;//矩形条的数量
private Paint mpaint;
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (int i=0 ; i <rectSize ; i++){
//每次绘制前随机计算一个矩形条的高度
double random = Math.random();
height = (float)(baseheight*random);
canvas.drawRect((width +offset)*i,
height,
(width+offset)*i+width,
baseheight,mpaint);
}
//刷新view,每300毫秒执行一次ondraw()
postInvalidateDelayed(300);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
//再次方法中初始化一些变量,次方发在View测量大小后执行
baseheight = getMeasuredHeight();
width = (getMeasuredWidth()- offset*9)/rectSize ;
initPaint();
}
public void initPaint(){
mpaint = new Paint();
mpaint.setColor(Color.BLUE);
mpaint.setStyle(Paint.Style.FILL);
}
レイアウト引用:
<com.demo.alldemos.diyviews.MusicView
android:layout_width="200dp"
android:layout_height="200dp" />
長方形のバーコード番号は、カスタムプロパティを変更する必要があれば10人の子供が、与えられ死亡しています。