這次要介紹ViewPage這個元件,更正確地說是如何自訂一個叫做NoScrollViewPager的元件。原本我想直接寫教學,但程式是某個老師教的東西所以就不貼,因此寫不使用viewpage滑動功能的教學文

那麼為何使用無滑動的viewpage?如果要短時間寫一個app,那勢必要做一個容易切換功能的公版/元件,這篇文章也有助於了解,如何自己寫一個class,了解class與layout的關系。



首先,在專案名稱右鍵 > new > JavaClass,加上以下的程式碼:
綠色的部份如果去掉false換回註解,把noscroll改成true就是一般的viewpager

package 你的package名稱;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;

public class NoScrollViewPager extends ViewPager {
    private boolean noScroll = false;

    public NoScrollViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    public NoScrollViewPager(Context context) {
        super(context);
    }

    public void setNoScroll(boolean noScroll) {
        this.noScroll = noScroll;
    }

    @Override
    public void scrollTo(int x, int y) {
        super.scrollTo(x, y);
    }

    @Override
    public boolean onTouchEvent(MotionEvent arg0) {
        return false;
        /*if (noScroll)
            return false;
        else
            return super.onTouchEvent(arg0);*/
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent arg0) {
        return false;
        /*
        if (noScroll)
            return false;
        else
            return super.onInterceptTouchEvent(arg0);
*/

    }

    @Override
    public void setCurrentItem(int item, boolean smoothScroll) {
        super.setCurrentItem(item, smoothScroll);
    }

    @Override
    public void setCurrentItem(int item) {
        super.setCurrentItem(item);
    }

}


其次在src/layout
要換成以下的寫法:

<你的package名稱.NoScrollViewPager
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/view"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

傳統的寫法如下,也因此原本的class位置大概在android.support.v4.view這位置

<android.support.v4.view.ViewPager
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/view"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" ></android.support.v4.view.ViewPager>

結果就是上圖只能用按鍵切換fragment,把滑動拿掉的好處是,也許就可以改成最下方有按鈕的模式,兩種方式可以快速切換,程式也就不必做太大的改動。



--
這篇基本上是參考這個網頁寫的。
題外話,因為遇到要用錄影的功能研究了一下,我是先用android studio內建的錄影功能,再用gifs.com轉成gif檔。有機會的話要研究這類型的程式。
--

arrow
arrow
    文章標籤
    ViewPager 無滑動
    全站熱搜

    貓羽 發表在 痞客邦 留言(0) 人氣()