android canvas\paint\path簡單使用(自定義view必學)
最近學到自定義view,也是涉及到了canvas、paint、path的使用,此內容比較簡單。
寫此文章,一方面是筆者自己知識點的記錄。另一方面希望能給部分新手啟發。
此三者一般會在自定義view的onDraw()中用到:
canvas:決定view的佈局(位置,畫布顏色,形狀)
paint:決定view的屬性(顏色,字型大小,風格)
path:路徑(path的用法深入比較複雜,此處由於是入門,就不多加闡述混淆新手了)
大致繪製步驟:
首先定義paint的屬性,然後獲取到view的寬高(一般繪製會根據view的大小來適配),隨後根據獲取到的view的大小使用canvas來繪製出形狀。
效果:(程式碼在文章結尾)
MainAcitivity:
package com.example.double2.canvaspainttest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
MyView:
package com.example.double2.canvaspainttest;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
/**
* Created by Double2號 on 2016/4/1.
*/
public class MyView extends View {
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//把整張畫布繪製成白色
canvas.drawColor(Color.WHITE);
Paint paint = new Paint();
//去鋸齒
//設定paint的顏色
//設定paint的風格
//設定畫筆寬度
paint.setAntiAlias(true);
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(4);
//獲取到view的寬度
int viewWidth=this.getWidth();
int viewHight=this.getHeight();
//繪製圓形
//drawCircle(float cx, float cy, float radius, Paint paint)
canvas.drawCircle(viewWidth / 10 + 60, viewHight / 10 + 10, viewWidth / 10 + 10, paint);
//繪製矩形
//drawRect(float left, float top, float right, float bottom, Paint paint)
canvas.drawRect(100, viewHight / 5 + 20, viewWidth / 5 + 10, viewHight * 2 / 5 + 20, paint);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
//繪製圓角矩形
//RectF(float left, float top, float right, float bottom)
RectF rel=new RectF(10,viewHight/2 +40,viewWidth/5+10,viewHight*3/5+40);
canvas.drawRoundRect(rel, 40, 10, paint);
paint.setTextSize(48);
//drawText(String text, float x, float y, Paint paint)
canvas.drawText("xujiajia",viewWidth/2,viewHight/2,paint);
//通過path繪製一個三角形
Path path=new Path();
path.moveTo(300, 400);
path.lineTo(500, 100);
path.lineTo(800, 200);
path.close();
canvas.drawPath(path, paint);
}
}
activity_main:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.example.double2.canvaspainttest.MyView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
相關文章
- Android自定義View工具:Paint&Canvas(二)AndroidViewAICanvas
- Android自定義View工具:Paint&Canvas(一)AndroidViewAICanvas
- Android自定義View之Canvas的使用AndroidViewCanvas
- Android的Paint、Canvas和Path基本使用總結AndroidAICanvas
- Android自定義View之Paint繪製文字和線AndroidViewAI
- Android 入門(三)簡單自定義 ViewAndroidView
- Android自定義View-Canvas基本操作AndroidViewCanvas
- 自定義View:Paint的常用屬性介紹及使用ViewAI
- 【Android自定義View】繪圖之Path篇(二)AndroidView繪圖
- 自定義View相關學習(一) (SlantedTextView ,canvas)TextViewCanvas
- Android Paint應用之自定義View實現進度條控制元件AndroidAIView控制元件
- Android自定義View:View(二)AndroidView
- 簡單介紹Android自定義View實現時鐘功能AndroidView
- Android 自定義viewAndroidView
- Android: 自定義ViewAndroidView
- HenCoder Android 開發進階: 自定義 View 1-2 Paint 詳解AndroidViewAI
- Android自定義View整合AndroidView
- Android自定義view-自繪ViewAndroidView
- flutter-簡單實現找妹子自定義viewFlutterView
- Android自定義view --Path 的高階用法之-搜尋按鈕動畫AndroidView動畫
- android簡單的自定義動畫Android動畫
- android自定義view(自定義數字鍵盤)AndroidView
- android自定義View&自定義ViewGroup(下)AndroidView
- android自定義View&自定義ViewGroup(上)AndroidView
- 安卓自定義 View 進階:Path 完結篇(偽)安卓View
- 重拾Android自定義ViewAndroidView
- Android自定義view詳解AndroidView
- Android 自定義 view 詳解AndroidView
- 直播軟體開發,Android自定義簡單的音訊波譜viewAndroid音訊View
- Android自定義View之實現簡單炫酷的球體進度球AndroidView
- Android自定義View播放Gif動畫AndroidView動畫
- Android 自定義View基礎(一)AndroidView
- Android自定義View:ViewGroup(三)AndroidView
- android自定義View——座標系AndroidView
- Android自定義View之捲尺AndroidView
- Android 自定義View之下雨動畫AndroidView動畫
- Android自定義View之分貝儀AndroidView
- Android自定義View注意事項AndroidView