国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android右滑返回上一個界面的實現(xiàn)方法

2019-10-22 18:25:04
字體:
來源:轉載
供稿:網(wǎng)友

Android右滑返回上一個界面的實現(xiàn)方法

public class BaseActivity extends Activity implements OnTouchListener {    public ProgressDialog progressDialog;   public String states;   public RequestQueue mQueue;    /** 觸摸時按下的點 **/   PointF downP = new PointF();   /** 觸摸時當前的點 **/   PointF curP = new PointF();    @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     this.requestWindowFeature(Window.FEATURE_NO_TITLE);     }    @Override   protected void onResume() {     super.onResume();   }       @Override   public boolean onTouchEvent(MotionEvent event) {            curP.x = event.getX();     switch (event.getAction()) {               case MotionEvent.ACTION_DOWN:        downP.x = event.getX();            break;     case MotionEvent.ACTION_MOVE:         if (curP.x- downP.x > 500) {         Log.i("TEST", "move-=-=-=--=-");         finish();              }        break;     case MotionEvent.ACTION_UP:        break;      default:       break;     }          return true;   }    @Override   protected void onPause() {     super.onPause();   }    @Override   protected void onDestroy() {     super.onDestroy();    }      } 

如上所示,既然要滑動返回上一個界面,我給出的方法是重寫onTouchEvent事件,所以我們實現(xiàn)了OnTouchListener 這個接口,

接下來的事情就是,我們要做些什么事呢,沒錯,就是滑動判斷,至于事件 switch 里面的 各個情況對應的是我們對屏幕做了什么樣的操作就不解釋了,(可以自行百度)如上所示,如果滑動距離超過500像素,就結束當前activity,其實寫到這里基本上就沒了,但是我怎么可能寫這么低端的博客,你們說是不是,好的,重點來了,

博主帥哥,我現(xiàn)在就是用的你這個方法,但是為毛 scrollview 下的布局,對這個接口無效呢,好的,問的漂亮,我的回答是:我tm哪知道,....

OK,我們看下scrollview 源碼:

android,右滑返回,android右滑返回,android右滑返回實例

他喵的,果然重寫了這個方法, 根據(jù) view 觸碰事件的傳遞順序,scrollview會先攔截到事件,所以,我們要做的就是,在不對scrollview本來的攔截事件做改變的情況下,加入我們所需要的需求來滿足我們實現(xiàn)功能, 那么就很簡答了, 當然是 自己 定義一個view,代碼如下:

public class BackScrollView extends ScrollView {    /** 觸摸時按下的點 **/   PointF downP = new PointF();   /** 觸摸時當前的點 **/   PointF curP = new PointF();    public BackScrollView(Context context) {     super(context);   }    public BackScrollView(Context context, AttributeSet attrs, int defStyle) {     super(context, attrs, defStyle);   }    public BackScrollView(Context context, AttributeSet attrs) {     super(context, attrs);   }    @Override   public boolean onTouchEvent(MotionEvent event) {      curP.x = event.getX();     switch (event.getAction()) {      case MotionEvent.ACTION_DOWN:        downP.x = event.getX();       Log.i("TEST", "downP.x-=-=-=--=-" + downP.x);       break;     case MotionEvent.ACTION_MOVE:       Log.i("TEST", "downP.x-=-=-=--=-" + curP.x);        if (downP.x < 200) {          if (curP.x - downP.x > 500) {            return false;          }       }        break;     case MotionEvent.ACTION_UP:        break;      default:       break;     }     return super.onTouchEvent(event);   } 

OK,在如上代碼中,可以看到我們做了一個判斷,當觸摸點像素距離屏幕最左邊200像素以內(nèi)時,滑動才有效果,否則執(zhí)行父類方法,沒了? 我僅舉這一例子說明可能存在的一些問題,當然,如果布局中也有其它控件出現(xiàn)類似的情況,那么跟 這個一樣,自己定義一個view,重寫它的 觸摸事件,(其實自定義view很簡單的,哥剛開始也覺得很難,后來 也就那樣....) ,當然,直接finish可能會顯得太單一,你們可以充分發(fā)揮你們的想象,可以添加一些動畫進去,使得界面更加炫,

OK,今天就扯到這里,吃飯 time...

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 泸定县| 广丰县| 分宜县| 靖宇县| 丘北县| 富蕴县| 山东省| 东平县| 崇信县| 邯郸县| 合江县| 武陟县| 利辛县| 临西县| 南昌县| 普宁市| 尼木县| 峡江县| 林芝县| 巴林右旗| 玛纳斯县| 固始县| 会理县| 荔波县| 阿克| 镶黄旗| 新巴尔虎右旗| 盐山县| 塔城市| 屯门区| 义马市| 讷河市| 区。| 丹寨县| 张家川| 黄骅市| 和龙市| 息烽县| 高密市| 社旗县| 观塘区|