Android 自定义可拖拽View界面渲染刷新后不会自动回到起始位置
以自定义ImageView为例:
/** *可拖拽ImageView *Createdbyadminon2017/2/21. */ publicclassFloatingImageViewextendsImageView{ publicFloatingImageView(Contextcontext){ super(context); } publicFloatingImageView(Contextcontext,AttributeSetattrs){ super(context,attrs); } publicFloatingImageView(Contextcontext,AttributeSetattrs,intdefStyleAttr){ super(context,attrs,defStyleAttr); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) publicFloatingImageView(Contextcontext,AttributeSetattrs,intdefStyleAttr,intdefStyleRes){ super(context,attrs,defStyleAttr,defStyleRes); } intstartX; intstartY; intleft; inttop; int[]temp=newint[]{0,0}; @Override publicbooleanonTouchEvent(MotionEventevent){ booleanisMove=false; intx=(int)event.getRawX(); inty=(int)event.getRawY(); switch(event.getAction()){ caseMotionEvent.ACTION_DOWN://touchdownsocheckifthe startX=x; startY=y; temp[0]=(int)event.getX(); temp[1]=y-getTop(); break; caseMotionEvent.ACTION_MOVE://touchdragwiththeball left=x-temp[0]; top=y-temp[1]; if(left<0){//控制左边界不超出 left=0; } layout(left,top,left+getWidth(),top+getHeight());//自由拖拽 break; caseMotionEvent.ACTION_UP: if(Math.abs(x-startX)>2||Math.abs(y-startY)>2){//判断是否移动,再一定范围内不算是移动,解决触发事件冲突 //将最后拖拽的位置定下来,否则页面刷新渲染后按钮会自动回到初始位置 //注意父容器 RelativeLayout.LayoutParamslp=(RelativeLayout.LayoutParams)getLayoutParams(); lp.setMargins(left,top,0,0); setLayoutParams(lp); //确定是拖拽 isMove=true; } break; } returnisMove?true:super.onTouchEvent(event); } }
以上所述是小编给大家介绍的Android自定义可拖拽View界面渲染刷新后不会自动回到起始位置,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!