自定义圆放大缩小
来源:互联网 发布:手机图片尺寸标注软件 编辑:程序博客网 时间:2024/05/01 21:14
/**
* Created by Zhangdake on 2017/4/16.
*/
public class ZhangYiFanView extends View{
private float XR = 400;
private float YR = 400;
private float R = 100;
private int width;
private int height;
private final float increment = 10;
private final float min = 50;
private final float sensitivity = 5;
public ZhangYiFanView(Context context) {
super(context);
}
public ZhangYiFanView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ZhangYiFanView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
width = getWidth();
height = getHeight();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
canvas.drawCircle(XR, YR, R, paint);
}
private float distance;
@Override
public boolean onTouchEvent(MotionEvent event) {
int pointer = event.getPointerCount();
float x = event.getX();
float y = event.getY();
int k = event.getAction();
if(k == MotionEvent.ACTION_POINTER_DOWN){
distance = getDistance(event);
}
if(pointer==1){
if(k == MotionEvent.ACTION_UP||k == MotionEvent.ACTION_MOVE){
if(x>width-R){
XR = width - R;
}else if(x<R){
XR = R;
}else{
XR = x;
}
if(y>height-R){
YR = height - R;
}else if(y<R){
YR = R;
}else{
YR = y;
}
postInvalidate();
}
}else if(pointer==2&&k == MotionEvent.ACTION_MOVE){
float maxR = 0;
if(XR<YR){
maxR = XR;
}else{
maxR = YR;
}
//判断手指方向
if(distance>getDistance(event)){
R -= increment;
if(R<min){
R = min;
}
}else if(distance<getDistance(event)){
R += increment;
if(R>maxR){
R = maxR;
}else if(R>width/2){
R = width/2;
}
}
distance = getDistance(event);
postInvalidate();
}
return true;
}
private float getDistance(MotionEvent event){
float xOne = event.getX(0);
float yOne = event.getY(0);
float xTwo = event.getX(1);
float yTwo = event.getY(1);
return (xOne - xTwo)*(xOne - xTwo)+(yOne - yTwo)*(yOne - yTwo);
}
}
0 0
- 自定义圆放大缩小
- 自定义view圆放大缩小
- 自定义View放大缩小
- 自定义view触摸放大缩小
- 自定义控件(圆)拖动时放大缩小
- android 自定义imageview实现 图片放大缩小
- 自定义View之图片放大、缩小、移动
- 自定义图可以放大和缩小
- 自定义ImageView实现自动放大缩小动画
- 圆的放大和缩小
- 放大 缩小
- 【放大、缩小】
- 自定义imageVIew实现圆角和圆形图,片圆形图片缩小放大正常,圆角图片放大缩小有点问题
- 自定义View_绘制圆_进行拖动(不出屏幕)放大缩小
- ArcEngine开发之自定义工具栏--地图放大、缩小(C#)
- Android 图片拖拽、放大缩小的自定义控件
- 百度地图API制作自定义的放大缩小控件ZoomControlView
- QT自定义窗口标题栏实现拖动双击放大缩小
- UVA-12108
- 常用类
- 了解CMS(Concurrent Mark-Sweep)垃圾回收器
- 1.从顺序表中删除具有最小值的元素
- [AWDwR4] chapter 11 Play time 2th: use blind_up effect
- 自定义圆放大缩小
- 设计模式
- 【Unity&特效&Shader】模糊特效资料集合
- java IO
- html第二天作业
- 最长回文子串
- [翻译]理解C#对象生命周期
- C语言函数指针,结构体阶段总结
- 线性回归