package com.example.user.demopine; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.RectF; import android.support.annotation.Nullable; import android.util.AttributeSet; /** * @author ${pym} * @creatDate 2017/9/6 15:47 * @description ${description} * @updateAuthor ${Author} * @updateDate$ 2017/9/6 15:47 */ public class View extends android.view.View { private int w; private int h; public View(Context context) { super(context); } public View(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public View(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public View(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } public View(Context context, int w, int h) { super(context); this.w = w; this.h = h; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); String text = "测试"; Paint pain = new Paint(); pain.setAntiAlias(true); pain.setColor(Color.RED); pain.setStyle(Paint.Style.STROKE); pain.setStrokeWidth(2); float radius = Math.min(w, h) / 2; Rect rect = new Rect(w, h, h, h); canvas.drawCircle(rect.centerX(), rect.centerY(), radius, pain); RectF rectF = new RectF(w/2, h/2, w+(w/2), h+(h/2)); pain.setColor(Color.RED); pain.setStyle(Paint.Style.FILL_AND_STROKE); canvas.drawArc(rectF, 0, 180, false, pain); pain.setStyle(Paint.Style.FILL_AND_STROKE); pain.setTextSize(28); pain.setStrokeWidth(0); canvas.drawText(text, rect.centerX() - 20, rect.centerY() - 20, pain); pain.setColor(Color.WHITE); pain.setStrokeWidth(5); canvas.drawLine(rect.centerX(), rect.centerY() + 25, rect.centerX(), rect.centerX() + 75, pain); canvas.drawLine(rect.centerX() - 25, rect.centerX() + 50, rect.centerX() + 25, rect.centerY() + 50, pain); } }package com.example.user.demopine; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.LinearLayout; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LinearLayout ll1 = (LinearLayout) findViewById(R.id.ll); LinearLayout ll2 = (LinearLayout) findViewById(R.id.ll2); View view2 = new View(this, 800, 800); ll2.addView(view2); } }
自定义View,绘制图文混合
最新推荐文章于 2019-05-22 09:44:03 发布