以自定义ImageVIEw为例:
/** * 可拖拽ImageVIEw * Created by admin on 2017/2/21. */public class floatingImageVIEw extends ImageVIEw{ public floatingImageVIEw(Context context) { super(context); } public floatingImageVIEw(Context context,AttributeSet attrs) { super(context,attrs); } public floatingImageVIEw(Context context,AttributeSet attrs,int defStyleAttr) { super(context,attrs,defStyleAttr); } @TargetAPI(Build.VERSION_CODES.LolliPOP) public floatingImageVIEw(Context context,int defStyleAttr,int defStyleRes) { super(context,defStyleAttr,defStyleRes); } int startX; int startY; int left; int top; int[] temp = new int[]{ 0,0 }; @OverrIDe public boolean ontouchEvent(MotionEvent event) { boolean isMove = false; int x = (int) event.getRawX(); int y = (int) event.getRawY(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: // touch down so check if the startX = x; startY = y; temp[0] = (int) event.getX(); temp[1] = y - gettop(); break; case MotionEvent.ACTION_MOVE: // touch drag with the ball left = x - temp[0]; top = y - temp[1]; if(left < 0){//控制左边界不超出 left = 0; } layout(left,top,left + getWIDth(),top + getHeight());//自由拖拽 break; case MotionEvent.ACTION_UP: if (Math.abs(x - startX) > 2 || Math.abs(y - startY) > 2){//判断是否移动,再一定范围内不算是移动,解决触发事件冲突 //将最后拖拽的位置定下来,否则页面刷新渲染后按钮会自动回到初始位置 //注意父容器 relativeLayout.LayoutParams lp = (relativeLayout.LayoutParams) getLayoutParams(); lp.setmargins(left,0); setLayoutParams(lp); //确定是拖拽 isMove = true; } break; } return isMove ? true : super.ontouchEvent(event); }}
以上所述是小编给大家介绍的AndroID 自定义可拖拽VIEw界面渲染刷新后不会自动回到起始位置,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
总结以上是内存溢出为你收集整理的Android 自定义可拖拽View界面渲染刷新后不会自动回到起始位置全部内容,希望文章能够帮你解决Android 自定义可拖拽View界面渲染刷新后不会自动回到起始位置所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)