iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
0
自我挑戰組

Android的學習歷程系列 第 26

[Day 26]Android-onDraw的基本使用方法

  • 分享至 

  • twitterImage
  •  

今天要進入到onDraw的部分,通過使用onDraw可以讓我們的圖像是可變動的,像是可以畫出一條波形圖再依據其他元件來影響圖像的顯示,或是一般的圖形也可以使用onDraw來達成,下面會先說明onDraw的基本使用過程。

開始使用onDraw首先開一個新的class並繼承View。

public class MyView extends View {
    public MyView(Context context) {
        super(context);
    }
}

接下來先來畫出幾個基本的圖形,在這之前要先新增畫筆,通過畫筆可以決定繪出的圖形顏色、粗細等等。

public class MyView extends View {
    private Paint paint;

    public MyView(Context context) {
        super(context);
        paint = new Paint();
        paint.setColor(Color.RED);
        paint.setStrokeWidth(10);
        paint.setAntiAlias(true);
        paint.setStyle(Paint.Style.FILL);
    }
}

完成後按下ctrl+o鍵來叫出onDraw後便可以開始來畫一些東西出來。

public class MyView extends View {
    private Paint paint;

    public MyView(Context context) {
        super(context);
        paint = new Paint();
        paint.setColor(Color.RED);
        paint.setStrokeWidth(10);
        paint.setAntiAlias(true);
        paint.setStyle(Paint.Style.FILL);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //直線
        canvas.drawLine(50, 50, 150, 50, paint);
    }
}
//矩形
canvas.drawRect(0,0,200,200,paint);
//圓形
canvas.drawCircle(200,200,100,paint);

最後還有波型的部分,需要使用Path來完成。

public class MyView extends View {
    private Paint paint;
    private Path path;

    public MyView(Context context) {
        super(context);
        paint = new Paint();
        paint.setColor(Color.RED);
        paint.setStrokeWidth(10);
        paint.setAntiAlias(true);
        paint.setStyle(Paint.Style.FILL);
        path = new Path();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        path.moveTo(100, 100);
        path.quadTo(300, 300, 500, 100);
        canvas.drawPath(path, paint);
    }
}

上一篇
[Day 25]Android-繪製基本圖形的方法
下一篇
[Day 27]Android-使用onDraw繪製波形圖
系列文
Android的學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言