1. 程式人生 > >Android右滑關閉Activity介面功能-自定義控制元件實現

Android右滑關閉Activity介面功能-自定義控制元件實現

引言

Android右滑關閉Activity介面功能,網上已經有好多優秀的開原始碼和專案,不過大部分都是結合ViewDragHelper來實現的,這裡要討論的是通過結合ValueAnimator來實現,目前我的控制元件只實現了從左往右(上往下)滑關閉介面。

需求

  • 在介面上從左往右滑,View位置根據手勢移動。
  • 只攔截左右滑動,上下方向的滑動無影響。
  • 子View的左右滑動事件無影響。

預覽圖

image

實現思路

  • SwipeBackLayout:左右滑動View
  • onInterceptTouchEvent:該方法只要做左右移動攔截,上下移動不攔截。
  • ValueAnimator:該動畫只要改變SwipeBackLayout View的位置,在ACTION_UP和介面開啟時呼叫。
  • ACTION_MOVE時,根據移動的X位移,修改SwipeBackLayout View的位置。

主要程式碼分析

onFinishInflate

image

該方法只要實現兩種方式,一種是通過佈局xml檔案來初始化SwipeBackLayout;另外一種是新new SwipeBackLayout。

onLayout

image
image

該方法只要是在初始化成功之後,修改SwipeBackLayout的位置。

onInterceptTouchEvent

image
image

該方法只要是攔截左右移動和判斷是否在左右不攔截的子View集合裡面。

onTouchEvent

image

該方法只要在使用者左右移動的時候,修改SwipeBackLayout的位置。

image
image

該方法只要是ACTION_UP的時候,需要判斷當前SwipeBackLayout的left位置,如果left位置小於螢幕的一半,則使用ValueAnimator動畫,讓SwipeBackLayout位置還原到正常位置。否則,關閉SwipeBackLayout。

dispatchDraw

image

該方法只要是在SwipeBackLayout移動的時候,繪畫陰影。

原始碼

最後

如果有問題,可到github上面留言。

相關推薦

Android關閉Activity介面功能-定義控制元件實現

引言Android右滑關閉Activity介面功能,網上已經有好多優秀的開原始碼和專案,不過大部分都是結合ViewDragHelper來實現的,這裡要討論的是通過結合ValueAnimator來實現,目前我的控制元件只實現了從左往右(上往下)滑關閉介面。需求在介面上從左往右滑

android 關閉activity

自定義實現了一個開發過程中遇到的一個需求。即右滑關閉當前acitvity,沒有像某個大神一樣考慮那麼多情況,只是滿足個人需要。 下面看實現 定義View /** * 用於右滑關閉acti

定義控制元件 實現 抽獎轉盤功能

先來看看佈局頁面 so easy 簡簡單單的佈局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.

Android定義控制元件實現可滑動的開關(switch)

介紹 昨天晚上寫了一個Android的滑動開關, 即SlideSwitch。效果如下: 實現 實現的思路其實很簡單,監聽控制元件上的touch事件,並不斷重新整理,讓滑塊在手指的位置上繪出,達到滑塊跟著手指滑動的顯示效果。 先看一下程式碼

Android運用定義控制元件實現閃爍字

專案中要用到閃爍字來標識一些重要的提醒以及醒目的文字等,這裡Android並沒有為我們提供一些元件,這裡可以使用自定義的TextView,運用paint設定漸變渲染器LinearGradient來實現。 先看一下實現的效果,由於寫的倉促就沒有做動圖了。。。就是一個藍色的漸變

Android實戰簡易教程-第六十九槍(定義控制元件實現雪花飄落效果)

現在APP要求越來越高了,不只是要求實現功能,顏值的要求也越來越高,下面我們通過自定義控制元件來實現雪花飄落的效果,可以作為介面背景哦。1.自定義控制元件:package com.test.a; import java.util.Random; import androi

Android定義控制元件實現圓形進度CircleProgressBar

近日有朋友問我有沒有如下圖效果的開源控制元件 , 相信大家無論是用IOS還是Android,都對這種效果不陌生,很多主流APP都會有這樣或類似的效果,之前也打算研究一下這類控制元件的程式碼,苦於一直不知道應該怎麼搜尋這種效果(就是關鍵詞)或者所搜的結

【UI學習】Android github開源專案,酷炫定義控制元件(View)彙總

近期整理的比較酷炫並且我們會經常用到的custom view,也有一些不是custom view,但是也是android UI相關的,實現了酷炫UI效果的開源庫,總結的專案最後維護時間一般不會超過6個月,會持續更新,如果覺的不錯,歡迎star。如果描述有誤的話,歡迎大家

Android定義控制元件實現帶百分比顯示進度條,可定義顏色

介紹 前天做了一個帶百分比顯示的條形進度條,效果如下: 實現 這個自定義進度條, 看起來簡單, 做起來。。。其實也很簡單: 主要通過繼承View類, 並重寫其onDraw方法實現。 思路分為3步: 1. 畫進圖條背景(圖中灰色部分 2. 根據

定義控制元件--實現步驟

前言:       在android開發中我們常常會用到自定義控制元件,可是為什麼要自定義呢?自定義控制元件又該怎麼實現呢?下面我們來了解下自定義控制元件的常用知識。 1:為什麼要自定義控制元件   &nb

定義控制元件實現階梯佈局

public class JieTiViewGroup extends ViewGroup { public JieTiViewGroup(Context context) { this(context,null); } public JieTiVi

安卓定義控制元件-實現IOS版UC瀏覽器三點載入動畫效果

1.實現分析 廢話不多說,看下IOS版UC瀏覽器的載入效果 簡單畫個圖看下整個過程 1.B圓的圓心移動的座標為:A圓和B圓的圓心的距離L的中點為圓心O1的下半圓的運動軌跡經過的座標,就有一個由B位置到A位置圓周運動的軌跡。 2.C圓的圓心

AjaxPanel定義控制元件實現頁面無重新整理資料互動(做了個示例程式, 效果確實比較Cool, 用法非常簡單! )(示例程式碼下載)

(一) . 簡要           AjaxPanel, 一個自定義控制元件, 只要在頁面中將AjaxPanel作為父控制元件, 則它內部的控制元件在執行時無重新整理.            做了個程式試了一下果然比較Cool !  下面介紹一下具體配置, 配置也比較簡單.

定義控制元件之側關閉 Activity 控制元件

隔壁 iOS 的小夥伴有一個功能就是左手向右手一個慢動作,輕輕一劃就可以關閉介面,這種操作感覺還是很絲滑的,而且這還是 iOS 系統自帶的功能,由於 Android 手機早期是有 back 鍵,home 鍵 和選單鍵(現在大部分手機都只保留一個鍵了),所以 Android 是沒有這個功能的。現在

Android定義控制元件----繼承ViewGroup側選單3,普通側選單,新增選單切換按鈕(完結)

專案結構: 思路: 對外暴露一個選單開啟和關閉選單的方法toggle 當開啟時this.smoothScrollTo(0, 0);滑動選單顯示 當關閉時this.smoothScrollTo(mMenuWidth, 0);選單隱藏

Android定義控制元件實戰——仿淘寶商品瀏覽介面

用手機淘寶瀏覽商品詳情時,商品圖片是放在後面的,在第一個ScrollView滾動到最底下時會有提示,繼續拖動才能瀏覽圖片。仿照這個效果寫一個出來並不難,只要定義一個Layout管理兩個ScrollView就行了,當第一個ScrollView滑到底部時,再次向上滑動進入第二

Android 高仿 QQ5.0 側選單效果 定義控制元件來襲

上一篇部落格帶大家實現了:Android 自定義控制元件打造史上最簡單的側滑選單 ,有兄弟看了以後說,你這滑動選單過時了呀~QQ5.0的效果還不錯~~嗯,的確,上一篇也承諾過,稍微修改上一篇的程式碼,實現QQ5.0側滑選單~~好了,下面就開始為大家展示寫一個類QQ的側滑有多e

android定義控制元件View在Activity中使用findByViewId得到結果為null,解決方法。。

androidの自定義控制元件View在Activity中使用findByViewId得到結果為null 1.  大家常常自定義view,,然後在xml 中新增該view 元件。。如果在Activity 中使用findByViewId 方法獲取該view 時候,返回物件總為

Android定義控制元件-EditText(可用於登陸介面)

最近在研究前輩寫的程式碼,看到了有關於登陸介面的使用者名稱和密碼,使用的是自定義EditText的,所以寫兩篇相關文章來記錄。 其實使用者名稱和密碼使用的EditText控制元件非常相似,拿使用者名稱處使用的控制元件為例,它包括如下功能: 在沒內容

Android介面實現】資訊更新小紅點顯示——定義控制元件BadgeView的使用介紹

在現在大部分的資訊釋出類應用,都有這樣的一個功能:當後臺資料更新,比如有系統訊息或者是使用者間有互動的時候,通過在控制元件上顯示一個小紅點來提示使用者有新的資訊。一般來說,這種業務需求,我們可以在佈局檔案中隱藏一個小紅點,然後當檢測到有資料更新的時候,我們將隱藏的小紅點顯示