android中自定义一个图形,单点移动缩小的效果
来源:互联网 发布:里海运河知乎 编辑:程序博客网 时间:2024/05/16 01:00
public class MainActivity extends Activity { View view; public static final int DRAG = 1; public static final int SCALE = 2; int mode = 1; int height = 10, width = 10; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); view = findViewById(R.id.view); } float length = 1; // 重写 @Override public boolean onTouchEvent(MotionEvent event) { int x = (int) event.getX(); int y = (int) event.getY(); // 多指触控 switch (event.getAction() & event.getActionMasked()) { case MotionEvent.ACTION_DOWN: mode = DRAG; break; case MotionEvent.ACTION_POINTER_DOWN: Log.e("TAG", "多指移动"); mode = SCALE; // 两个手指开始的长度是多少呢? length = calc(event); break; case MotionEvent.ACTION_UP: length = 1; break; case MotionEvent.ACTION_MOVE: if (mode == DRAG) { // 1. 单个手指 FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( width, height); params.setMargins(x, y, 0, 0); view.setLayoutParams(params); } else { // 2. 两个手指 float beilv = calc(event) / length; width = (int) (view.getWidth() * beilv); height = (int) (view.getHeight() * beilv); Log.e("TAG", beilv + " " + width + " " + height); FrameLayout.LayoutParams params = (LayoutParams) view .getLayoutParams(); params.width = width; params.height = height; view.setLayoutParams(params); } break; } return true; } // 类 Ponint public float calc(MotionEvent event) { float x1 = event.getX(); float y1 = event.getY(); float x2 = event.getX(1); float y2 = event.getY(1); return (float) Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); }}
- 1234567891011121171
xml类
<FrameLayout 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="com.example.lesson6_work1.MainActivity" > <View android:id="@+id/view" android:layout_width="30dp" android:layout_height="30dp" android:background="@drawable/oval" /></FrameLayout>
- 1
- 25
自己在shape中定义的一个圆的oval.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@android:color/holo_red_dark"/></shape>
- 1256
用自定义View的方式实现单点触控时拖动图片,跟着拖动点走
QiuView 类
public class QiuView extends View { Paint paint = new Paint(); PointF point = new PointF(); public QiuView(Context context) { super(context); paint.setColor(Color.RED); paint.setAntiAlias(true); paint.setDither(true); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(point.x, point.y, 50, paint); } // 触摸事件 @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_MOVE) { point.set(event.getX(), event.getY()); invalidate(); } return true; }}效果图
阅读全文
0 0
- android中自定义一个图形,单点移动缩小的效果
- Android 自定义shape图形效果
- android自定义view实现可自由放大缩小和移动的imageView
- android 图片的 放大 缩小 移动
- android 自定义view实现图形移动
- Android ListView 头部缩小放大的效果
- 鼠标移动生出四散图形的效果
- 创建一个图形的拷贝----(缩小和放大)
- [移动] 谈谈自定义Android界面切换效果库的使用
- [移动] 谈谈自定义Android界面切换效果库的使用
- 移动开发----Android模仿打字机效果的自定义View实现
- android——单点触控移动,多点触控放大缩小
- android中使用Baidu Map遇到的问题之:移动Mapview上的放大缩小控件
- Android中RatingBar的自定义效果
- android中实现自定义view中图形的缩放
- css3自定义图形的实现效果
- android两种方式中自己画一个圆,实现单点触控时拖动图片,跟着拖动点走,并且可以放大或缩小
- 一个CSS+jQuery的放大缩小动画效果
- Selenium自动化测试框架
- 管道小程序
- 基于NDK编译Android平台的FFmpeg动态库
- 缓存穿透与缓存雪崩
- 接口与抽象类的区别
- android中自定义一个图形,单点移动缩小的效果
- jQuery 将本地时间转换成 UTC 时间,计算时差,将UTC时间转换成 本地 时间
- MySQL学习随记---存储函数
- C语言 搜索字符串中的逗号有感(关于数据中的ASCII码)
- Android 复制和粘贴功能
- hdu5690(快速幂||减半)All X
- [Leetcode] 333. Largest BST Subtree 解题报告
- ORA-12518
- 【已解决】C#获取CPU温度支持Win10(OpenHardwareMonitor)