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&¤tTimestartTime&¤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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。