█ 【安卓学习之UI学习】自定义view实现拖动缩放比例
█ 系列文章目录
提示:这里是收集了UI学习的相关文章
- 【android学习开源项目之BasePopup】BasePopup(PopupWindow)进行二次封装
- 【android学习开源项目之AndroidAutoSize】AndroidAutoSize和DialogFragment的适配
- 【安卓学习之UI学习】 自定义组合控件View 的开发
- 【安卓学习之UI学习】 自定义 弧形等级进度条
- 【安卓学习之UI学习】RecyclerView的使用总结
- 【安卓学习之UI学习】TabLayout的使用总结
- 【安卓学习之UI学习】Dialog的使用总结
█ 文章目录
█ 读前说明
- 本文通过学习别人写demo,学习一些课件,参考一些博客,学习相关知识,如有涉及侵权请告知
- 本文可能只简单罗列了一些相关的代码实现过程,复制了一些大神的高论,如内容有误请自行辨别
- 涉及到的逻辑以及说明可能只做了简单的介绍,主要当做笔记,了解过程而已,如有不同看法,欢迎下方评论
- 本文源码:下载demo
█ 想要实现的效果
- 想要实现的效果(支持固定宽高比、拖动、缩放)
█ DragHelperFrameLayout
- 1.参考SuspendedBall
- 2.ui
<com.bx.dargview.view.DragHelperFrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/drag_fragment"
android:layout_width="160dp"
android:layout_height="90dp"
android:layout_gravity="center_horizontal"
android:background="@android:color/holo_green_dark" />
</com.bx.dargview.view.DragHelperFrameLayout>
- 3.在DragHelperFrameLayout包含的FrameLayout可以自由拖动,并且能记住上次的位置
dragHelper = ViewDragHelper.create(this, new ViewDragHelper.Callback() {
@Override
public boolean tryCaptureView(android.view.View child, int pointerId) {
return true;
}
@Override
public void onViewCaptured(android.view.View capturedChild, int activePointerId) {
super.onViewCaptured(capturedChild, activePointerId);
}
@Override
public int clampViewPositionHorizontal(android.view.View child, int left, int dx) {
return left;
}
@Override
public int clampViewPositionVertical(android.view.View child, int top, int dy) {
return top;
}
@Override
public int getViewHorizontalDragRange(android.view.View child) {
return getMeasuredWidth() - child.getMeasuredWidth();
}
@Override
public int getViewVerticalDragRange(android.view.View child) {
return getMeasuredHeight() - child