布局代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Activity_dfs">
<com.example.day04.MyView3
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/myview3"
/>
</RelativeLayout>
java代码:
package com.example.day04;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
public class MyView3 extends View implements Runnable{
private Context context;
private Paint paint1;
private Paint paint2;
private Paint paint3;
private Paint paint4;
private int height;
private int width;
public MyView3(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
initPaint();
}
private void initPaint() {
paint1 = new Paint();
paint1.setAntiAlias(true);
paint1.setColor(Color.RED);
paint1.setStrokeWidth(5);
paint1.setStyle(Paint.Style.FILL_AND_STROKE);
paint2 = new Paint();
paint2.setAntiAlias(true);
paint2.setColor(Color.GREEN);
paint2.setStrokeWidth(5);
paint2.setStyle(Paint.Style.FILL_AND_STROKE);
paint3 = new Paint();
paint3.setAntiAlias(true);
paint3.setColor(Color.BLUE);
paint3.setStrokeWidth(5);
paint3.setStyle(Paint.Style.FILL_AND_STROKE);
paint4 = new Paint();
paint4.setAntiAlias(true);
paint4.setColor(Color.GRAY);
paint4.setStrokeWidth(5);
paint4.setStyle(Paint.Style.FILL_AND_STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
RectF rectFo = new RectF(width/2-80,300,width/2+80,350);
canvas.drawOval(rectFo,paint4);
canvas.drawLine(width/2,300,width/2,height/2,paint4);
RectF rectF = new RectF(-(width/4),-(width/4),(width/4),(width/4));
canvas.translate(width/2,height/2);
canvas.drawArc(rectF,startAngle1,30,true,paint1);
canvas.drawArc(rectF,startAngle2,30,true,paint2);
canvas.drawArc(rectF,startAngle3,30,true,paint3);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
this.height = h;
this.width = w;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
private int startAngle1;
private int startAngle2;
private int startAngle3;
@Override
public void run() {
while(true){
startAngle1 += 10;
startAngle2 = startAngle1+120;
startAngle3 = startAngle2+120;
postInvalidate();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
主类代码:
package com.example.day04;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class Activity_dfs extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dfs);
MyView3 myView3 = findViewById(R.id.myview3);
new Thread(myView3).start();
}
}