自定义View之 继承View
自定义View源代码
package com.example.administrator.youku_animi.MyView;
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;
import android.view.WindowManager;
/** * Created by Administrator on 2017/7/24 0024. */
public class NewView extends View {
int mWindowWidth;
//中心点
int mCircleXY ;
float mSweepAngle = 25f;
float mRadius;
RectF mArcRectF;
Paint mCirclePaint, mArcPaint, mTextPaint;
String mShowText;
int mShowTextSize;
public NewView(Context context, AttributeSet attrs)
{
super(context, attrs);
WindowManager wm = (WindowManager) getContext()
.getSystemService(Context.WINDOW_SERVICE);
mWindowWidth = wm.getDefaultDisplay().getWidth();
mCircleXY = mWindowWidth / 2;
mRadius = (float) (mWindowWidth*0.5/2) ;
mShowText = "It 's OK";
mShowTextSize = mShowText.length();
mArcRectF = new RectF(
(float)(mWindowWidth*0.2),
(float)(mWindowWidth*0.2),
(float)(mWindowWidth*0.8),
(float)(mWindowWidth*0.8)
);
mCirclePaint = new Paint();
//给画笔设置颜色
mCirclePaint.setColor(getResources().getColor(android.R.color.holo_blue_bright));
mCirclePaint.setStyle(Paint.Style.FILL);
mCirclePaint.setStrokeWidth(4);
mArcPaint= new Paint();
mArcPaint.setColor(getResources().getColor(android.R.color.holo_red_dark));
mArcPaint.setStyle(Paint.Style.STROKE);
mArcPaint.setStrokeWidth(20);
mTextPaint = new Paint();
mTextPaint.setColor(getResources().getColor(android.R.color.secondary_text_light));
mTextPaint.setStyle(Paint.Style.STROKE);
//设置画笔粗细
mTextPaint.setStrokeWidth(1);
//设置文字居中
mTextPaint.setTextAlign(Paint.Align.CENTER);
//设置抗锯齿
mTextPaint.setAntiAlias(true);
//设置文字大小
mTextPaint.setTextSize(100);
}
@Override
protected void onDraw(Canvas canvas)
{
//绘制圆
canvas.drawCircle(mCircleXY, mCircleXY, mRadius, mCirclePaint);
//绘制弧线
canvas.drawArc(mArcRectF, 270, mSweepAngle, false, mArcPaint);
//绘制文字
canvas.drawText(mShowText, 0, mShowTextSize,
mCircleXY, mCircleXY + (mShowTextSize / 4), mTextPaint);
// canvas.save();
super.onDraw(canvas);
// canvas.restore();
}
//改变外圆的角度
public void setmSweepValue(float sweepValue)
{
if (sweepValue != 0)
{
mSweepAngle += 5;
}
else
{
mSweepAngle = 25;
}
this.invalidate();
}
}
xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:newview="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">
<com.example.administrator.youku_animi.MyView.NewView android:id="@+id/newview_test" android:layout_width="match_parent" android:layout_height="500dp" />
<Button android:id="@+id/btn" android:text="click" android:layout_width="match_parent" android:layout_height="wrap_content" />
</LinearLayout>
Activity..
package com.example.administrator.youku_animi;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.example.administrator.youku_animi.MyView.NewView;
/** * Created by Administrator on 2017/7/24 0024. */
public class NewViewTest extends Activity {
NewView newView;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.new_view_test);
newView = (NewView) findViewById(R.id.newview_test);
button = (Button) findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
newView.setmSweepValue(1);
}
});
}
}
还没有评论,来说两句吧...