Android 自定义View
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/linear_root" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.jiyun.zidingyiview.MainActivity"> </LinearLayout>
package com.jiyun.zidingyiview; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.LinearLayout; public class MainActivity extends AppCompatActivity { private LinearLayout root; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); root = (LinearLayout) findViewById(R.id.linear_root); MyView myView = new MyView(this); //绘制 myView.invalidate(); root.addView(myView); } }
package com.jiyun.zidingyiview; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; import android.view.View; /** * Created by DELL zhanghuirong on 2018/2/20. */ public class MyView extends View { public MyView(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //画笔 Paint paint = new Paint(); //给画笔设置颜色 paint.setColor(Color.GREEN); /*** * 自定义View画圆 */ canvas.drawCircle(100, 100, 40, paint); /** * 画线 */ paint.setColor(Color.RED); canvas.drawLine(200, 100, 300, 100, paint); /** * 画矩形 */ canvas.drawRect(400, 100, 500, 600, paint); /** * 画圆角矩形 */ canvas.drawRoundRect(600, 100, 700, 600, 10, 10, paint); /** *画扇形 */ // startAngle 开始的角度,sweepAngle 扫描的角度 RectF rectF = new RectF(100, 200, 300, 400); canvas.drawArc(rectF, 230, 130, true, paint); /** *画弧 */ // startAngle 开始的角度,sweepAngle 扫描的角度 RectF rectF1 = new RectF(100, 400, 300, 600); paint.setColor(Color.BLACK); //画弧必须设置样式为空 paint.setStyle(Paint.Style.STROKE); canvas.drawArc(rectF1, 230, 130, false, paint); /** * 画文字 */ paint.setColor(Color.RED); paint.setTextSize(88); canvas.drawText("hello", 800, 100, paint); /** * 画三角形 */ //路径 Path path = new Path(); //起始点 path.moveTo(100, 500); //其他两条线的点 path.lineTo(50, 600); path.lineTo(150, 600); path.close(); canvas.drawPath(path, paint); /** * 画图片 */ Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher); canvas.drawBitmap(bitmap, 300, 800, paint); /** * 画椭圆 */ RectF rectF2 = new RectF(500, 800, 700, 1500); canvas.drawOval(rectF2, paint); } }
效果图: