第四十天 自定义View(时钟)---convas
来源:互联网 发布:如何使用遮瑕膏 知乎 编辑:程序博客网 时间:2024/06/04 18:48
Convas
activity_main
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"><com.example.administrator.myview.view.MyView android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>
MyView
public class MyView extends View { private Paint mPaintLine; private Paint mPaintCircel; private Paint mPaintText; private int width; private int height; private Calendar calendar; private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 0x23: calendar=Calendar.getInstance(); invalidate(); handler.sendEmptyMessageDelayed(0x23, 1000); break; } } }; public MyView(Context context) { super(context); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); mPaintLine=new Paint(); mPaintLine.setColor(Color.BLUE);//设置颜色 mPaintLine.setStrokeWidth(10);//设置线条宽度 mPaintLine.setAntiAlias(true);//线条是否是齿状 mPaintCircel=new Paint(); mPaintCircel.setColor(Color.BLUE); mPaintCircel.setStrokeWidth(10); mPaintCircel.setStyle(Paint.Style.STROKE);//设置为空心 //mPaintCircel.setStyle(Paint.Style.FILL);//设置为实心,默认为实心 mPaintText=new Paint(); mPaintText.setColor(Color.BLACK); mPaintText.setTextSize(30); mPaintText.setTextAlign(Paint.Align.CENTER);//文本居中 calendar=Calendar.getInstance(); handler.sendEmptyMessage(0x23); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); width=getDefaultSize(getSuggestedMinimumWidth(),widthMeasureSpec); height=getDefaultSize(getSuggestedMinimumHeight(),widthMeasureSpec); setMeasuredDimension(width,height); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(width/2,height/2,300,mPaintCircel);//圆心位置(x,y),半径 canvas.drawCircle(width/2,height/2,5,mPaintCircel); for(int i=1;i<=12;i++){ canvas.rotate(30,width/2,height/2); canvas.drawLine(width/2,height/2-300,width/2,height/2-280,mPaintLine);//(height/2-300,height/2-280)为时钟标志线条长度,即20 canvas.drawText(""+i,width/2,height/2-250,mPaintText);//数字位于线条下方 } //设置分针 int minute=calendar.get(Calendar.MINUTE); float minuteDegree=minute/60f*360; canvas.save(); canvas.rotate(minuteDegree,width/2,height/2); canvas.drawLine(width/2,height/2-200,width/2,height/2+20,mPaintLine); canvas.restore(); //设置时针 int hour=calendar.get(Calendar.HOUR); float houeDegree=(hour*60+minute)/12f/60*360; canvas.save(); canvas.rotate(houeDegree,width/2,height/2); canvas.drawLine(width/2,height/2-150,width/2,height/2+20,mPaintLine); canvas.restore(); //设置秒针 int second=calendar.get(Calendar.SECOND); float secondDegree=second*6; canvas.save(); canvas.rotate(secondDegree,width/2,height/2); canvas.drawLine(width/2,height/2-220,width/2,height/2+20,mPaintLine); canvas.restore(); }}
MainActivity
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}
0 0
- 第四十天 自定义View(时钟)---convas
- 自定义view-绘图时钟
- 自定义view绘制时钟
- <3> 自定义view 时钟
- 自定义View绘制时钟
- 自定义View实现米老鼠时钟
- 初尝试自定义view-时钟
- android 自定义view实现时钟
- 自定义View之手绘时钟
- Android 自定义View 时钟效果
- Android自定义View---秒表/时钟
- Android自定义View时钟效果
- 自定义View-酷炫时钟
- android 自定义View模拟时钟
- android自定义view之自定义时钟wacthview
- Android自定义View之数字时钟
- 自定义View之canvas绘制时钟
- 自定义View+Handle 实现模拟时钟效果
- JSP四大作用域
- Xcode启动缓慢+内存快速减少
- 各种编程语言的深度学习库
- 24 Ultimate Data Scientists To Follow in the World Today
- 正则表达式之group
- 第四十天 自定义View(时钟)---convas
- 51nod 1191:消灭兔子 贪心+优先队列
- 在Centos6上构建Mesos平台
- 核心动画基础动画(CABasicAnimation)关键帧动画
- 数据结构中的常用查找
- android Spinner控件详解
- 全文检索之中文分词
- 578C. Weakness and Poorness(Codeforces Round #320)
- 证书、描述文件、App ID的解释