android浮层图片拖动并且可点击效果
最近产品出了个新需求,页面上出现浮层并且可点击,代码实现如下:
Activity中实现浮层图片:
@Override publicvoidonResume(){ super.onResume(); createView(); } @Override publicvoidonPause(){ super.onPause(); /在程序退出(Activity销毁)时销毁悬浮窗口 if(floatView!=null&&windowManager!=null){windowManager.removeView(floatView);floatView=null;windowManager=null;windowManagerParams=null;}} privatevoidcreateView(){ if(floatView!=null)return; CmsAPIcmsAPI=RestAdapterUtils.getRestAPI(Config.NEW_CMS_URL,CmsAPI.class,this); cmsAPI.getFloatingAd(newCallback(){//请求数据 @Override publicvoidsuccess(AdFloatingadFloating,Responseresponse){ if(adFloating!=null&&"0".equals(adFloating.getErrorCode())){ longstartTime=adFloating.getStarttime(); longendTime=adFloating.getEndtime(); longcurrentTime=System.currentTimeMillis(); //LOGD(startTime+"+++++"+endTime+""+currentTime+""+(currentTime>startTime&¤tTime startTime&¤tTime 图片控件:
publicclassFloatViewextendsSimpleDraweeView{ privatefloatmTouchX; privatefloatmTouchY; privatefloatx; privatefloaty; privatefloatmStartX; privatefloatmStartY; privateOnClickListenermClickListener; privateWindowManagerwindowManager=(WindowManager)getContext() .getApplicationContext().getSystemService(Context.WINDOW_SERVICE); //此windowManagerParams变量为获取的全局变量,用以保存悬浮窗口的属性 privateWindowManager.LayoutParamswindowManagerParams=((MiGuApplication)getContext() .getApplicationContext()).getWindowParams(); publicFloatView(Contextcontext){ super(context); } publicFloatView(Contextcontext,AttributeSetattrs){ super(context,attrs); } privatelongcurtime=0; @Override publicbooleanonTouchEvent(MotionEventevent){ //获取到状态栏的高度 Rectframe=newRect(); getWindowVisibleDisplayFrame(frame); intstatusBarHeight=frame.top; System.out.println("statusBarHeight:"+statusBarHeight); //获取相对屏幕的坐标,即以屏幕左上角为原点 x=event.getRawX(); y=event.getRawY()-statusBarHeight;//statusBarHeight是系统状态栏的高度 switch(event.getAction()){ caseMotionEvent.ACTION_DOWN://捕获手指触摸按下动作 //获取相对View的坐标,即以此View左上角为原点 mTouchX=event.getX(); mTouchY=event.getY(); mStartX=x; mStartY=y; break; caseMotionEvent.ACTION_MOVE://捕获手指触摸移动动作 updateViewPosition(); curtime=System.currentTimeMillis(); break; caseMotionEvent.ACTION_UP://捕获手指触摸离开动作 //if(System.currentTimeMillis()-curtime>100){ //break; //} updateViewPosition(); mTouchX=mTouchY=0; if(Math.abs(x-mStartX)<5&&Math.abs(y-mStartY)<5){//轻微拖动算点击 if(mClickListener!=null){ mClickListener.onClick(this); } } break; } returntrue; } @Override publicvoidsetOnClickListener(OnClickListenerl){ this.mClickListener=l; } privatevoidupdateViewPosition(){ //更新浮动窗口位置参数 windowManagerParams.x=(int)(x-mTouchX); windowManagerParams.y=(int)(y-mTouchY); windowManager.updateViewLayout(this,windowManagerParams);//刷新显示 } }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。