當前位置:首頁 » 安卓系統 » android下拉scrollview

android下拉scrollview

發布時間: 2023-02-04 22:46:29

❶ android scrollview如何判斷是上拉還是下拉

/**
* 可以監聽ScrollView的上下滑動 ,實現ScrollListener介面,調用setScrollListener(ScrollListener l)方法。
* SCROLL_UP :ScrollView正在向上滑動
* SCROLL_DOWN :ScrollView正在向下滑動
* @author yxw
*/
public class ObservableScrollView extends ScrollView {

private ScrollListener mListener;

public static interface ScrollListener {
public void scrollOritention(int oritention);
}

/**
* ScrollView正在向上滑動
*/
public static final int SCROLL_UP = 0x01;

/**
* ScrollView正在向下滑動
*/
public static final int SCROLL_DOWN = 0x10;

/**
* 最小的滑動距離
*/
private static final int SCROLLLIMIT = 40;

public ObservableScrollView(Context context) {
super(context, null);
}

public ObservableScrollView(Context context, AttributeSet attrs) {
super(context, attrs, 0);
}

public ObservableScrollView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}

@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);

if (oldt > t && oldt - t > SCROLLLIMIT) {// 向下
if (mListener != null)
mListener.scrollOritention(SCROLL_DOWN);
} else if (oldt < t && t - oldt > SCROLLLIMIT) {// 向上
if (mListener != null)
mListener.scrollOritention(SCROLL_UP);
}
}

public void setScrollListener(ScrollListener l) {
this.mListener = l;
}
}

❷ android pulltorefresh scrollview下拉刷新上拉載入怎麼區分

listView.setMode(PullToRefreshBase.Mode.BOTH);
listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
page = 1;
loadData();
}

@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
page++;
loadData();
}
});

首先要上下拉刷新功能先要設置刷新模式 為BOTH,
然後在設置監聽事件,裡面有重寫的兩個方法,一個是下拉的 一個是上啦的,
可以在裡面寫對應的 事件,比如 你上啦要幹些啥,就在onPullUpToRefresh中寫即可
手動打字比較類 ,湊合著看吧

❸ 安卓開發怎麼設置scrollview的下拉刷新

可以實現的,不過scrollview嵌套listview的時候會導致listview只顯示一個條目,你可以計算listview子item的高度,然後加起來設定listview高度,但是這樣的listview失去了高性能,如果一定要使用scrollview和listivew嵌套,不如就把scrollview中listview上面的東西做成listview的header,下面的做成footer,這樣就不用scrollview了。
另,谷歌的support
v4包更新了,出了一個layout叫SwipeRefreshLayout,是單獨的一個下拉刷新layout,你可以更新後使用它,這個下拉控制項可以應用到任何控制項上,比如listview,gridview,webview,等等。

❹ android開發scrollview怎麼判斷是上滑還是下滑

你在左右滑動時,如果手指不是完全水平,稍微傾斜的話,y方向移動達到一定像素就會觸發(這個值可以用ViewConfigration類取得,通常是8像素)scrollView的onInterceptTouchEvent,它返回true,於是你的左右滑動停止,開始了scroll的上下滾動。

❺ 【Android】打造下拉放大效果

在其他App上看到了這樣的一個效果,感覺有點意思,於是決定實現一個類似的效果。
( 其實是iOS的同學在實現功能的時候隨意發揮了一下 )
效果大概值這樣子的:

UI看完後
「這個效果不錯啊」
「要不你們Android也么做?」 於是~~
作為一個有追求的程序員,決定也要實現一個這樣的效果 (滿腦子都是草泥馬在奔騰)

這樣的效果嘛~~
利用自定義的 ViewGroup ,通過對手勢的處理,應該就能實現了吧?

主要應該分兩部分:

比較麻煩的應該是在第一部分,需要對事件的分發有一些理解。

說到手勢的判斷,難免需要對事件分發進行處理。

下拉部分
1、在 onInterceptTouchEvent 中對事件進行處理,如果為下拉事件,則將該事件攔截,交給 onTouchEvent 處理;
2、在 onTouchEvent 中通過計算得到下拉的距離,然後動態改變 Header 的配置,實現放大的效果。

重置部分
在 onTouchEvent 的 ACTION_UP 中重置 Header ,實現回彈

知道思路以後,實現起來就比較簡單了

創建一個 ViewGroup (這么命名為 FlexibleLayout )繼承 LinearLayout

onInterceptTouchEvent的處理

先通過兩個條件判斷是否為下拉事件:

然後通過 mIsBeingDragged 來標記開始拖拽

onTouchEvent的處理

修改頭部大小

得到下拉的距離後,就可以來改變 Header 的大小,實現放大效果了。

放大、重置的部分大家可以自由發揮

這里利用 Math.pow(offsetY, 0.8) 得到實際需要增加的高度,通過計算得到對應的寬度以及偏移(類似阻尼效果)。

重置頭部

直接將寬高以及偏移設置成原來的參數即可。
(如果覺得這樣重置過程不夠絲滑,可以通過動畫來完成一個流暢的重置效果,這里就不演示了)

到這里,一個簡易拉下放大的效果就做完了。試試效果

使用

直接在需要下拉放大的布局外面套上 FlexibleLayout 即可,例如 ScrollView

效果

ScrollVIew:

RecyclerView:

CoordinatorLayout:

大功告成!!!
當然裡面還有一些細節的處理,比如下拉的條件、回彈的動畫、最大高度等,具體內容的可以在 源碼 中看到。

完成下拉放大後,貌似把一個很重要的功能遺忘了下拉刷新 ??
光顧這下拉放大,刷新怎麼辦?【黑人問號】

這個功能留著下周實現吧,我的7小時睡眠已遙遙無期~~

雖然沒有直接實現下拉刷新的功能,不過源碼中已經暴露了一個下拉的監聽,你也可以通過這個監聽實現下拉刷新的操作

到這里就結束了

(來還上周欠下的債~~)

和下拉放大類似,通過希手指下滑的監聽,利用 View translationY rotation 實現移動和旋轉。
具體的實現過程這里就不貼出來了,直接看效果吧

有興趣的可以直接去 Github 上看源碼以及用法。

Github

PullZoomView
Android事件分發機制 詳解攻略,您值得擁有

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:334
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:377
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:611
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:31
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:942
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:739
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:802
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:510
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:371