Android自定义View画圆功能
作者:xcjean 发布时间:2023-05-18 10:47:24
标签:Android,View,画圆
本文实例为大家分享了Android自定义View画圆的具体代码,供大家参考,具体内容如下
引入布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.bwie.test.xuejian1508a20170928.MainActivity">
<com.bwie.test.xuejian1508a20170928.ViView
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
自定义View的java类,继承View
public class ViView extends View{
Paint paint;
Context context;
//构造方法
public ViView(Context context) {
super(context);
}
public ViView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ViView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public ViView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
this.context=context;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
}
/*绘图*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//得到屏幕宽高
int width = getWidth();
int radius = width - 450/2;
int height = getHeight();
// 创建画笔
Paint paint1 = new Paint();
Paint paint2 = new Paint();
Paint paint3= new Paint();
// 消除锯齿
paint1.setAntiAlias(true);
paint2.setAntiAlias(true);
paint3.setAntiAlias(true);
//画笔颜色
paint1.setColor(Color.RED);
paint2.setColor(Color.WHITE);
paint3.setColor(Color.BLUE);
// 画圆。确定位置
// canvas.drawRect(100,100,width/2,height/2,paint1);
// canvas.drawCircle(100,100,100,paint1);
// canvas.drawCircle(250,250,200,paint2);
// canvas.drawCircle(500,500,300,paint3);
//设置圆环形状和大小
RectF oval = new RectF(width-radius,width-radius,width+radius,width+radius);
paint1.setStrokeWidth(450);
canvas.drawArc(oval,-90,90,false,paint1);
canvas.drawCircle(width/2,height/2,450,paint1);
canvas.drawCircle(width/2,height/2,300,paint2);
canvas.drawCircle(width/2,height/2,200,paint3);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
}
效果图:
来源:http://blog.csdn.net/xcjean/article/details/78137200
0
投稿
猜你喜欢
- 1.最近的项目中,有一个Activity用到Fragment+ViewPager,其中一个fragment中实现了视频播放的功能,包含有Su
- 前文本章是关于Java流程控制语句的最全汇总,本篇为汇总上篇。流程是人们生活中不可或缺的一部分,它表示人们每天都在按照一定的流程做事。比如出
- 前言:对于一个程序员来说,尤其是在java web端开发的程序员,三大框架:Struts+Hibernate+Spring是必须要掌握熟透的
- 一. Window 分类应用 Window(ApplicationWindow: 对应一个 Acitivity)
- 一、创建springboot项目(采用骨架方式)创建完成;我们分析下pom文件中内容:所使用到的关键依赖: <!--springBoo
- 要求: * 判断用户输入的年份是平年还是闰年实现代码:import java.util.Scanner;/** * 要
- 参数校验主要使用两个标签@Validated和@Valid;@Valid是Hibernate的注解校验,@Validated是spring的
- 前言相信小伙伴一定用过 @Transaction 注解,那 @Transaction 背后的秘密又知道多少呢?Spring 是如何开启事务的
- 由于又开了新机器所以又要重新布置Jenkins从老项目拷贝过来,发现Job Import Plugin 这个插件更新了,和以前的有些出入所以
- OAuth 简介OAuth 是由 Blaine Cook、Chris Messina、Larry Halff 及 David Recordo
- 1. 布局: GridBagLayout官方JavaDocsApi: java.awt.GridBagLayoutGridBagLayout
- 本文实例为大家分享了Java实现图形界面计算器的具体代码,供大家参考,具体内容如下 代码:import javax.swing.*
- 前提准备:1. 项目中至少需要引入的jar包,注意版本: a) core-renderer.jar&nb
- rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用
- private void button1_Click(object sender, EventArgs e) &nbs
- 目录Java 中线程池创建的几种方式🐱🏍Executors 工厂方法创建👏 new ThreadPoolExecutor() 自
- 1. 问题描述springboot的面世,成为Java开发者的一大福音,大大提升了开发的效率,其实springboot只是在maven的基础
- 想必大家都知道,国内的Android应用基本都是免费的
- 代码如下所示:package com.hoo.util; import java.awt.Color; import
- java web 实现分页功能,分享给大家,具体如下:使用框架:ssm数据库:oracle话说 oracle 的分页查询比 mysql 复杂