上篇文章给大家介绍了 Android控件实现图片缩放功能,需要的朋友点击查看。
1.简介
话不多说先来张效果图
控件缩放移动.gif
上面的gif中,依次进行了拖动——>触摸右上角放大,缩小——>触摸上方与右测边缘——>双指放大缩小。
2 使用步骤
2.1 布局。外层一个LinearLayout,里面一个自定义的控件DragScaleView,为了能够更清楚的看到控件的变化过程,就给控件加了一个灰色带虚线的边框bg_dashgap。
layout文件
android:orientation="vertical"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80ce3d3a"
android:gravity="center_horizontal"
android:fitsSystemWindows="true">
android:id="@+id/hair_dv"
android:src="@drawable/ic_sure"
android:background="@drawable/bg_dashgap"
android:adjustViewBounds="true"
android:layout_marginLeft="50dp"
android:layout_marginTop="10dp"
android:layout_width="100dp"
android:layout_height="120dp"
android:clickable="true"/>
在drawable文件夹下的bg_dashgap.xml
android:bottomLeftRadius="8dp"
android:bottomRightRadius="8dp"
android:radius="15dp"
android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
android:dashGap="4dp"
android:dashWidth="4dp"
android:width="2dp"
android:color="@color/my_gery" />
2.2 自定义的控件
单指触摸:
当ACTION_DOWN时如果坐标为1.2.3.4四个区域,则对View进行相应的左上/右上/左下/右下拉伸;
当ACTION_DOWN时如果坐标为5.6.7.8四个区域,则分别对上/右/下/左四个方向进行拉伸;
当ACTION_DOWN时如果坐标为9这个区域,则对View进行移动;
双指触摸:
先计算出触摸时双指的距离,float oriDist=distance(event);
再得到双指离开屏幕的距离,float newDist =distance(event);
得到两者之间的比例 float scale = newDist / oriDist;
计算双指间距离的方法
/**
* 计算两个手指间的距离
* @param event 触摸事件
* @return 放回两个手指之间的距离
*/
private float distance(MotionEvent event) {
float x