1. 程式人生 > >fragment中實現listView的滑動隱藏toolbar

fragment中實現listView的滑動隱藏toolbar

要在fragment中實現這個效果。首先你得獲取到toolbar。由於toolbar是在活動中的。通過getActivity獲取的這個類的context。然後進行相關操作。

本人採用的是在fragment中find toolbar 並且setSupportActionBar。所以直接用toolbar。

然後就是listView的的滑動事件監聽 其主要在於幾個方法:

getTranslationY() 獲取控制元件的Y座標
setTranslationY() 設定控制元件的Y座標(控制元件並沒有動)
getY()  獲取觸控位置的Y座標。
還有其他獲取各種長度高度的方法。
利用這些你就可以玩轉滑動事件了,自己設定演算法隨便怎麼玩。
最後一個屬性動畫將toolbar隱藏。屬性動畫也是可以自己做的很漂亮的,可以自己隨意玩的。下面是程式碼。
public class MyFragment1 extends Fragment implements AdapterView.OnItemClickListener{

    ListView listView=null;
    MyAdapter myAdapter=null;
    Context context=null;
    private LinkedList<Data> datas=null;

    private Toolbar ftoolbar=null;
    private float fstartY=0,flastY=0,flastDeltaY;

    public MyFragment1(){
    }

    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
        View view =inflater.inflate(R.layout.f_1,container,false);
        listView= (ListView) view.findViewById(R.id.listview1);

        context=getActivity();
        datas=new LinkedList<Data>();
        datas.add(new Data(R.mipmap.imgid,"wode","我的"));
        myAdapter=new MyAdapter(context,datas);

        View header=LayoutInflater.from(context).inflate(R.layout.listview_header,listView,false);
        listView.addHeaderView(header);//listview新增頭部。
        listView.setAdapter(myAdapter);
        listView.setOnItemClickListener(this);

        ftoolbar= (Toolbar) getActivity().findViewById(R.id.bar);
        ((AppCompatActivity)getActivity()).setSupportActionBar(ftoolbar);

        listView.setOnTouchListener(new View.OnTouchListener() {//滑動事件監聽
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                final float y=event.getY();
                float translationY=ftoolbar.getTranslationY();
                switch (event.getAction()){
                    case MotionEvent.ACTION_DOWN:
                        //手指放下
                        fstartY=y;
                        flastY=fstartY;
                        break;
                    case MotionEvent.ACTION_MOVE:
                        //手指移動
                        float fDetaY=y-flastY;
                        float newtransY=translationY+fDetaY;
                        if(newtransY<=0&&newtransY>=-ftoolbar.getHeight()){
                            ftoolbar.setTranslationY(newtransY);
                        }
                        flastY=y;
                        flastDeltaY=fDetaY;
                        break;
                    case MotionEvent.ACTION_UP:
                        //手指擡起
                        ObjectAnimator animator=null;//屬性動畫。
                        if(flastDeltaY<0&&listView.getFirstVisiblePosition()>1){
                            animator=ObjectAnimator.ofFloat(ftoolbar,"translationY",
                                    ftoolbar.getTranslationY(),-ftoolbar.getHeight());
                        }else{
                            animator=ObjectAnimator.ofFloat(ftoolbar,"translationY",
                                    ftoolbar.getTranslationY(),0);
                        }
                        animator.setDuration(100);
                        animator.start();
                        break;
                }
                return false;
            }
        });

        return view;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(context,"dianji",Toast.LENGTH_SHORT).show();
            if(datas==null){
                    datas=new LinkedList<Data>();
                }

                Data data=new Data(R.mipmap.imgid,"nide","你的");
                datas.add(data);
                myAdapter.notifyDataSetChanged();

    }



相關推薦

fragment實現listView滑動隱藏toolbar

要在fragment中實現這個效果。首先你得獲取到toolbar。由於toolbar是在活動中的。通過getActivity獲取的這個類的context。然後進行相關操作。 本人採用的是在fragment中find toolbar 並且setSupportActionBar

AndroidFragment+Viewpager實現左右滑動和點選

一.佈局檔案 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.view.ViewPager android:id="@+id/viewpager" andr

Android 在fragment實現返回鍵單擊提醒 雙擊退出

make listener 一次 time lean 適配器 == sea dagger2 嘗試用mvp架構加dagger2來重寫了一下,大致功能都實現了,還沒有全部完成。 項目地址 接近完成的時候,想在天氣信息頁面實現一個很常見的功能,也就是點擊屏幕下方的返回鍵的時

fragment實現Android上傳圖片至本地JavaWeb服務器

prop prefix adt ilo err 1.10 response try 轉換成 服務器端: 需要一個接受文件的servlet,以及導入兩個包:commons-fileupload-1.3.1.jar 和 commons-io-2.4.jar import ja

Android Fragment+Viewpager實現左右滑動和點選 實現DrawerLayout

xml佈局程式碼: <android.support.v4.widget.DrawerLayout xmlns:android=“http://schemas.android.com/apk/res/android” xmlns:app=“http://schemas.androi

vue實現上下滑動文字通告的功能

<template> <div class="marquee"> <div class="marquee_title"> <span>免費微報</span>

在Activity或Fragment響應ListView上按鈕的點選方法

通常會有這樣的需求,在item上有一個按鈕是確定,或者刪除或者是其它的什麼按鈕, 需要將按鈕的實現寫著Activity中而且還需要知道點選的是第幾個item。 如上面的item中有三個按鈕,目前這個上面的三個按鈕都是用TextView寫的,首先在Adapter中實現點選方法 在ge

解決fragment與viewpager一起使用時fragmentlistview資料出現重複

activity中需要顯示一個切換頁顯示3個不同的檢視資料,這裡需要使用viewpager+fragment實現切換。在fragment中需要在onstart或者onresume中初始化載入資料。但是viewpager在切換fragment時會呼叫下一個fragmen

Fragment使用listview

按照步驟來就可以達到效果: 1-新建一個listview.xml 是listview中每個items的樣式 <?xml version="1.0" encoding="utf-8"?

css實現顯示和隱藏

QQ:979111986/5730473 微信:ainusers 現就職:新浪 微博:AinUser 微信公眾號:AinUser 郵箱:[email protected] 程式設計技術交流群:540049350 github:g

Android實現上下滑動隱藏/顯示工具欄

對於移動端,為了留出更多的空間來顯示內容,我們在向上滑動檢視的時候,總是希望,頂部工具欄和底部工具欄可以隨著我們向上滑動的手勢而自動隱藏。而當我們瀏覽完內容,向下滑動檢視的時候,又希望工具欄可以自動顯示出來響應我們操作。這是一種很好的互動模式,現在我們來看看這種

fragment ScrollView 同時巢狀viewpager banner和 listview, scrollview 滑動異常·

fragment中 ScrollView                      同時巢狀viewpager banner和        &nbs

Android關於CoordinatorLayout和ListView滑動衝突的解決(上滑ToolBar隱藏,下滑出現)

最近專案中使用到了CoordinatorLayout這種佈局方式,搭配RecycleView,實現起來比較簡單,而且不用自己處理滑動事件,但是改為了ListView後發生了滑動衝突. 所以想到了以下解決方案: 1.使用事件分發,當ListView在Y軸滑動時,將事件交給C

html實現數據的顯示和隱藏

func 隱藏 obj else content cli solid head utf Author: YangQingQing <!DOCTYPE html><html><meta http-equiv="Content-Type" co

Android關於View滑動實現你應該知道的

nan ida gif 當前位置 距離 保存 改變 post 控件 滑動作為Android中最基礎的特效之一,使用場景非常廣泛。實現的方式也有多種,理解各種滑動的實現方式。清楚在開發中根據自己的實際需求,選擇合理的實現方案。這篇文章從:scrollTo()/scrollBy

Androidfragment A裡面點選button跳轉到fragment B實現方法

方法一:直接getActivity,使用activity的fragmenttransation的replace方法替換 假設 class OneFragment extends Fragment{ private Button btn; @Override p

Fragment ListView繫結ContextMenu

package com.example.administrator.imbobo.controller.fragment;import android.content.BroadcastReceiver;import android.content.Context;import android.content

Fragment ListView綁定ContextMenu

cep led utc red setup npr save troy isn package com.example.administrator.imbobo.controller.fragment;import android.content.BroadcastRece

FloatingActionButton在RecycleView滑動隱藏顯示

FloatingActionButton是的Google在com.android.support:design庫中的一個懸浮按鈕,一般簡稱(FCB按鈕),他也是Material Design 設計的一員,FCB和RecycleView搭配是使用也是很常見的操作,譬如在recycleView中下滑隱藏上滑顯示,

使用ViewPager+Fragment實現帶滾動條的多屏滑動-IndicatorFragmentActivity

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!