下拉拖拽關(guān)閉Activity宴卖,下拉返回Activity滋将。
仿大眾點(diǎn)評、快手症昏、小紅書詳情界面:可下滑關(guān)閉詳情界面随闽。
功能(優(yōu)點(diǎn)):
- ?Demo包含
瀑布列表跳轉(zhuǎn)到詳情,帶動畫
+詳情可左滑進(jìn)入個人主頁
+下拉拖拽關(guān)閉Activity
- ?到為了讓Activity的xml布局層級最少肝谭,只需要把本庫設(shè)置為最外層的RelativeLayout
- ?仿大眾點(diǎn)評:下拉過程中除了圖片掘宪,別的部分隨著下拉距離而半透明
- ?仿快手:fling快速下滑也可觸發(fā)關(guān)閉
- ?詳情界面可左滑進(jìn)入個人主頁,你可以自己實(shí)現(xiàn)懶加載
- ?解決下拉返回ImageView閃一下問題
- ?完美解耦分苇,可輕松讓你的任何Activity實(shí)現(xiàn)下拉關(guān)閉效果
作者說明:
- Android系統(tǒng)的Activity過場動畫會讓shareElementImageView.setAlpha(0)添诉;然后回退動畫結(jié)束再進(jìn)行.setAlpha(1)
- 這樣會導(dǎo)致一個問題:我們下拉返回的時(shí)候,由于彈回動畫是我們自己做的医寿。但是系統(tǒng)依然會再進(jìn)行一遍.setAlpha(1),導(dǎo)致回彈動畫結(jié)束時(shí)候圖片會閃一下蘑斧。參考下面的第1個gif
- 為了解決"閃一下"的問題靖秩,我用這種方法把他提前設(shè)為.setAlpha(1)
效果gif圖(Gif圖有點(diǎn)卡,實(shí)際運(yùn)行一點(diǎn)都不卡):
縮回動畫結(jié)束的時(shí)候竖瘾,系統(tǒng)會有“閃一下”的bug
本案已經(jīng)修復(fù)了系統(tǒng)的“閃一下”bug
導(dǎo)入
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.QDong415:QDragClose:v1.0.1'
}
使用
QDragRelativeLayout contentLayout = findViewById(R.id.drag_layout);
contentLayout.setOnDragCloseListener(this);
//傳入列表的點(diǎn)擊項(xiàng)目的ImageView的坐標(biāo)
contentLayout.setupFromImageView(fromX, fromY, fromWidth, fromHeight, transition_share_view);
<declare-styleable name="QDragClose">
<!-- 是否可以手勢下拉沟突,默認(rèn)true -->
<attr name="dragEnable" format="boolean" />
<!-- 下拉距離占總height百分之多少就觸發(fā)關(guān)閉,0 - 1之間捕传,默認(rèn)0.2 -->
<attr name="closeYRatio" format="float" />
<!-- 手指快速下滑也可以觸發(fā)關(guān)閉惠拭,默認(rèn)true -->
<attr name="flingCloseEnable" format="boolean" />
<!-- 手勢下拉過程中,其他View根據(jù)滑動距離半透明庸论,默認(rèn)false -->
<attr name="alphaWhenDragging" format="boolean" />
<!-- 關(guān)閉動畫耗時(shí)职辅,默認(rèn)450 -->
<attr name="closeAnimationDuration" format="integer" />
<!-- 下拉力度不夠,反彈回正常狀態(tài)動畫耗時(shí)聂示,默認(rèn)200 -->
<attr name="rollToNormalAnimationDuration" format="integer" />
</declare-styleable>
Author:DQ
我的其他開源庫域携,給個Star鼓勵我寫更多好庫:
IOS Swift項(xiàng)目框架模版Demo,教科書級標(biāo)準(zhǔn)鱼喉。輕量秀鞭、規(guī)范、易懂扛禽、易移植锋边、解耦
IOS 自定義UIAlertController,支持彈出約束XibView编曼、彈出ViewController
IOS 封裝每條Cell樣式都不一致的UITableView豆巨,告別復(fù)雜的UITableViewDataSource
IOS 仿快手直播界面加載中,頂部的滾動條狀LoadingView
IOS 基于個推+華為push的一整套完善的 IM聊天系統(tǒng)
Android 朋友圈列表Feed流的最優(yōu)化方案灵巧,讓你的RecyclerView從49幀 -> 57幀
Android 仿大眾點(diǎn)評搀矫、仿小紅書 下拉拖拽關(guān)閉Activity
Android 直播間聊天消息列表RecyclerView。一秒內(nèi)收到幾百條消息依然不卡頓
Android 仿快手直播界面加載中瓤球,頂部的滾動條狀LoadingView