Android 向右滑動關閉頁面

2021-06-27 07:57:49 字數 2951 閱讀 5158

前言:

用最簡單的例子來說明此問題。

1.在activity中加上預設的布局layout

2.在自定義的layout中實現右滑關閉activity的邏輯

直接上**!

自定義的布局hffinishrelativelayout!

package com.huofar.widget;

import android.content.context;

import android.content.res.typedarray;

import android.util.attributeset;

import android.view.motionevent;

import android.view.viewgroup;

import android.widget.relativelayout;

import com.huofar.util.logutil;

/** * created by zhangxiwei on 14/11/25.

*/public class hffinishrelativelayout extends relativelayout

fragmentactivity activity;

private scrollleftfinishlistener scrollleftfinishlistener;

public void setscrollleftfinishlistener(scrollleftfinishlistener scrollleftfinishlistener)

// 滑動距離及座標

private float xdistance, ydistance, xlast, ylast;

public hffinishrelativelayout(context context)

public hffinishrelativelayout(context context, attributeset attrs)

public void attachtoactivity(fragmentactivity activity) );

int background = a.getresourceid(0, 0);

a.recycle();

viewgroup decor = (viewgroup) activity.getwindow().getdecorview();

viewgroup decorchild = (viewgroup) decor.getchildat(0);

decorchild.setbackgroundresource(background);

decor.removeview(decorchild);

addview(decorchild);

decor.addview(this);

}@override

public boolean onintercepttouchevent(motionevent event)

return super.onintercepttouchevent(event);

}

@override
public boolean dispatchtouchevent(motionevent event) 

}xlast = curx;

ylast = cury;

}return super.dispatchtouchevent(event);

}@override

public boolean ontouchevent(motionevent event)return true;}

}

重點**上面的紅色加粗字段。

我處理的是每次滑動向右滑動300px執行關閉操作,在需要的使用的activity實現藉口直接finish就ok了!

activity中的呼叫:

package com.huofar.activity;

import android.os.bundle;

import android.os.handler;

import android.view.layoutinflater;

import com.huofar.r;

import com.huofar.widget.hffinishrelativelayout;

/** * created by zhangxiwei on 14/11/25.

*/public class hfbaseactivity extends fragmentactivity implements hffinishrelativelayout.scrollleftfinishlistener

},1000);

}public void setfinishscrollleft(boolean isfinishscrollleft) }}

@override

public void finishpage()

}

所有的**就是這點,延遲一秒的就是為了接受isfinishscrollleft變數,我是在已有的工程中修改的,就是為了在有些頁面不需要關閉傳此變數就ok了!。方法有點笨。大家有好方法可以提供。先多謝!

接下來就是頭疼的問題,為什麼要這麼做:

除此之外看的迷迷糊糊的可以自己寫乙個demo實踐一下 或者多google幾個介紹看看,就是事件的傳遞,然後在dispatchtouchevent接受一下。然後直接關閉就行。

其實也沒有什麼,幫助想要該功能的童鞋。

有什麼問題可以跟帖詢問。

補上activity_finish_base.xml

<?xml version="1.0" encoding="utf-8"?>

ios 滑動手勢向右移動

我們來學習滑動手勢。人類最擅長的就是使用工具,手機是我們人類內心世界的延伸,我們渴望擁有上帝的力量。所以我們自己創造了乙個世界,網際網路。我們可以控制裡面所有的一切。現在我們來控制一張是怎麼向右移動的。在現實世界,我們是怎麼控制物體移動呢?是不是要給它施加乙個方向的力,然後它就會朝我們遇到的方向移動...

Appium scroll滑動頁面

方法介紹 舉個例子 encoding utf 8 from time import sleep desired caps driver webdriver.remote desired caps sleep 15 獲取手機螢幕寬 高 x driver.get window size width y ...

Android彈性滑動

1 view使用scroller滑動 在scroller.startscroll 方法中,會將scrollx和deltax相加存入mfinalx中 invalidate 方法會呼叫draw 方法,draw 會呼叫computescroll 方法,而在view 中computescroll 方法是空實...