生活随笔
收集整理的這篇文章主要介紹了
用DirectionalViewPager代替ViewPager
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實際應用中,我們直接用DirectionalViewPager代替ViewPager,再設置其滑動方向即可,既可以水平,也可以垂直,一個setOritation直接搞定.
看到了吧,實現上下滑動的效果就這么簡單.在此不得不致敬JakeWharton這位大牛在開源項目上的貢獻,讓我們這些開發者受益頗深..
?
例子中其他部分,我只替換了資源圖片:
TestFragment:
[java] view plaincopyprint?
package?com.way.verticalguider;????import?com.way.newversion.R;????import?android.os.Bundle;??import?android.support.v4.app.Fragment;??import?android.view.LayoutInflater;??import?android.view.View;??// http://www.openeim.com/import?android.view.ViewGroup;??import?android.widget.Button;??import?android.widget.ImageView;????public?class?TestFragment?extends?Fragment?{??????private?static?final?String?KEY_CONTENT?=?"TestFragment:Content";??????private?static?final?String?KEY_ISLASTPIC?=?"TestFragment:IsLastPic";??????private?int?mContent;??????private?boolean?mIsLastPic;????????public?static?TestFragment?newInstance(int?content,?boolean?isLastPic)?{??????????TestFragment?fragment?=?new?TestFragment();????????????fragment.mContent?=?content;??????????fragment.mIsLastPic?=?isLastPic;??????????return?fragment;??????}????????@Override??????public?View?onCreateView(LayoutInflater?inflater,?ViewGroup?container,??????????????Bundle?savedInstanceState)?{??????????if?((savedInstanceState?!=?null)??????????????????&&?savedInstanceState.containsKey(KEY_CONTENT))?{??????????????mContent?=?savedInstanceState.getInt(KEY_CONTENT);??????????????mIsLastPic?=?savedInstanceState.getBoolean(KEY_ISLASTPIC);??????????}??????????View?root?=?inflater??????????????????.inflate(R.layout.fragment_layout,?container,?false);??????????ImageView?iv?=?(ImageView)?root.findViewById(R.id.iv);??????????iv.setImageResource(mContent);??????????Button?btn?=?(Button)?root.findViewById(R.id.btn);??????????if?(mIsLastPic)??????????????btn.setVisibility(View.VISIBLE);??????????else??????????????btn.setVisibility(View.GONE);??????????return?root;??????}????????@Override??????public?void?onSaveInstanceState(Bundle?outState)?{??????????super.onSaveInstanceState(outState);??????????outState.putInt(KEY_CONTENT,?mContent);??????????outState.putBoolean(KEY_ISLASTPIC,?mIsLastPic);??????}??}??
package com.way.verticalguider;import com.way.newversion.R;import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;public class TestFragment extends Fragment {private static final String KEY_CONTENT = "TestFragment:Content";private static final String KEY_ISLASTPIC = "TestFragment:IsLastPic";private int mContent;private boolean mIsLastPic;public static TestFragment newInstance(int content, boolean isLastPic) {TestFragment fragment = new TestFragment();fragment.mContent = content;fragment.mIsLastPic = isLastPic;return fragment;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {if ((savedInstanceState != null)&& savedInstanceState.containsKey(KEY_CONTENT)) {mContent = savedInstanceState.getInt(KEY_CONTENT);mIsLastPic = savedInstanceState.getBoolean(KEY_ISLASTPIC);}View root = inflater.inflate(R.layout.fragment_layout, container, false);ImageView iv = (ImageView) root.findViewById(R.id.iv);iv.setImageResource(mContent);Button btn = (Button) root.findViewById(R.id.btn);if (mIsLastPic)btn.setVisibility(View.VISIBLE);elsebtn.setVisibility(View.GONE);return root;}@Overridepublic void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);outState.putInt(KEY_CONTENT, mContent);outState.putBoolean(KEY_ISLASTPIC, mIsLastPic);}
}
TestFragmentAdapter:
[java] view plaincopyprint?
package?com.way.verticalguider;????import?com.way.newversion.R;????import?android.support.v4.app.Fragment;??import?android.support.v4.app.FragmentManager;??import?android.support.v4.app.FragmentPagerAdapter;????class?TestFragmentAdapter?extends?FragmentPagerAdapter?{??????protected?static?final?int[]?CONTENT?=?new?int[]?{??????????????R.drawable.biz_ad_new_version1_img0,??????????????R.drawable.biz_ad_new_version1_img1,??????????????R.drawable.biz_ad_new_version1_img2,??????????????R.drawable.biz_ad_new_version1_img3?};????????public?TestFragmentAdapter(FragmentManager?fm)?{??????????super(fm);??????}????????@Override??????public?Fragment?getItem(int?position)?{??????????boolean?isLastPic?=?false;??????????if?(position?==?CONTENT.length?-?1)??????????????isLastPic?=?true;??????????return?TestFragment.newInstance(CONTENT[position],?isLastPic);??????}????????@Override??????public?int?getCount()?{??????????return?CONTENT.length;??????}??}??
package com.way.verticalguider;import com.way.newversion.R;import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;class TestFragmentAdapter extends FragmentPagerAdapter {protected static final int[] CONTENT = new int[] {R.drawable.biz_ad_new_version1_img0,R.drawable.biz_ad_new_version1_img1,R.drawable.biz_ad_new_version1_img2,R.drawable.biz_ad_new_version1_img3 };public TestFragmentAdapter(FragmentManager fm) {super(fm);}@Overridepublic Fragment getItem(int position) {boolean isLastPic = false;if (position == CONTENT.length - 1)isLastPic = true;return TestFragment.newInstance(CONTENT[position], isLastPic);}@Overridepublic int getCount() {return CONTENT.length;}
}
下面是我修改后例子的下載鏈接:
?
其實無論像這種上下滑動引導頁的效果,可以有多種方式去實現,在此僅提供不敢說是最優化,但一定是 最便捷的一種方法.
有時間的話我會再研究下聚合閱讀的那個動畫效果,在此先記錄下, 大家如有好的意見,歡迎討論.
總結
以上是生活随笔為你收集整理的用DirectionalViewPager代替ViewPager的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。