Android 絲滑切換展示頁的ViewPager最簡單用法
網(wǎng)上帖子都狠復(fù)雜,我整個(gè)最簡單的,能用就好,希望能幫到大家:
用到的類列表如下,用到的具體都貼出來了,根據(jù)需要直接拿走改把。
A_LogInActivity (需要添加控件的對(duì)應(yīng)類)
activity_a__log_in (就布局,我這里就添加了一個(gè)ViewPager 下面貼出來了,直接拷走)
PagerAdapater (ViewPager用到的具體類,對(duì)應(yīng)的東西在里面改也行,傳出去也行)
item_launch(ViewPager用到的最簡單布局)
首先是用到的xml
這個(gè)放到對(duì)應(yīng)的activity的xml布局里面
? ? <android.support.v4.view.ViewPager
? ? ? ? android:id="@+id/vp_content"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="300dp" />
----------------------我是分割線-------------------------------
然后 activity? ?具體代碼,紅色部分就是新的,你可以直接拷走用:
public class A_LogInActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {
? ? private List<String> mStringList;
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_a__log_in);
? ? ? ? mStringList =? new ArrayList<>();
? ? ? ? mStringList.add("1");
? ? ? ? mStringList.add("2");// 這個(gè)隨便弄 我改成要不要都行,一般都會(huì)動(dòng)態(tài)創(chuàng)建就是了
? ? ? ? // 構(gòu)建一個(gè)商品圖片的翻頁適配器
? ? ? ? PagerAdapater adapter = new PagerAdapater(this, mStringList);
? ? ? ? // 從布局視圖中獲取名叫vp_content的翻頁視圖
? ? ? ? ViewPager vp_content = (ViewPager) findViewById(R.id.vp_content);
? ? ? ? vp_content.setAdapter(adapter); // 設(shè)置翻頁視圖的適配器
? ? ? ? vp_content.setCurrentItem(0); // 設(shè)置翻頁視圖顯示第一頁? 切換頁面可以用這個(gè)方法
? ? ? ? vp_content.addOnPageChangeListener(this); // 給翻頁視圖添加頁面變更監(jiān)聽器
? ? }
? ? // 翻頁狀態(tài)改變時(shí)觸發(fā)。state取值說明為:0表示靜止,1表示正在滑動(dòng),2表示滑動(dòng)完畢
? ? // 在翻頁過程中,狀態(tài)值變化依次為:正在滑動(dòng)→滑動(dòng)完畢→靜止
? ? public void onPageScrollStateChanged(int state) {}
? ? // 在翻頁過程中觸發(fā)。該方法的三個(gè)參數(shù)取值說明為 :第一個(gè)參數(shù)表示當(dāng)前頁面的序號(hào)
? ? // 第二個(gè)參數(shù)表示頁面偏移的百分比,取值為0到1;第三個(gè)參數(shù)表示頁面的偏移距離
? ? public void onPageScrolled(int position, float ratio, int offset) {}
? ? // 在翻頁結(jié)束后觸發(fā)。position表示當(dāng)前滑到了哪一個(gè)頁面
? ? public void onPageSelected(int position) {
? ? ? ? Toast.makeText(this, "測(cè)試滑動(dòng):" + mGoodsList.get(position), Toast.LENGTH_SHORT).show();
? ? }
}
----------------------我是分割線-------------------------------
然后是 PagerAdapater的內(nèi)容,整個(gè)直接挪走改吧:
? ? public class PagerAdapater extends PagerAdapter {
? ? // 聲明一個(gè)視圖列表
? ? private List<View> mViewList = new ArrayList<View>();
? ? // 這個(gè)值沒用了
? ? private List<String> stringList = new ArrayList<String>();
? ? // 圖像翻頁適配器的構(gòu)造方法,可以根據(jù)傳入的list來創(chuàng)建多少個(gè)頁面 我這里沒用到 只留下個(gè)寫法
? ? public PagerAdapater(Context context, List<String> stringList) {
? ? ? ? stringList = stringList;
? ? ? ? /**
? ? ? ? ?* 第一個(gè)頁面
? ? ? ? ?* item_launch 這個(gè)是我新建的xml頁面 里面就一個(gè)按鈕,你完全可以自己隨意新建隨意改
? ? ? ? ?*/
? ? ? ? View LiView = LayoutInflater.from(context).inflate(R.layout.item_launch, null);
? ? ? ? ?// 將對(duì)應(yīng)的布局添加進(jìn)去? add幾次就會(huì)有幾個(gè)頁面?。。∫獛讉€(gè)頁面就只管加
? ? ? ? mViewList.add(LiView);
? ? ? ? Button btn_start = LiView.findViewById(R.id.btn_start);
? ? ? ? /**
? ? ? ? ?* 第一個(gè)頁面
? ? ? ? ?*/
? ? ? ? View LiView1 = LayoutInflater.from(context).inflate(R.layout.item_launch1, null);
? ? ? ? mViewList.add(LiView1); // 將對(duì)應(yīng)的布局添加進(jìn)去
? ? ? ? Button btn_start2 = LiView1.findViewById(R.id.btn_start);
? ? }
? ? // 獲取頁面項(xiàng)的個(gè)數(shù)
? ? public int getCount() {
? ? ? ? return mViewList.size();
? ? }
? ? // 判斷當(dāng)前視圖是否來自指定對(duì)象
? ? public boolean isViewFromObject(View view, Object object) {
? ? ? ? return view == object;
? ? }
? ? // 從容器中銷毀指定位置的頁面
? ? public void destroyItem(ViewGroup container, int position, Object object) {
? ? ? ? container.removeView(mViewList.get(position));
? ? }
? ? // 實(shí)例化指定位置的頁面,并將其添加到容器中
? ? public Object instantiateItem(ViewGroup container, int position) {
? ? ? ? container.addView(mViewList.get(position));
? ? ? ? return mViewList.get(position);
? ? }
? ? // 獲得指定頁面的標(biāo)題文本
? ? public CharSequence getPageTitle(int position) {
? ? ? ? return mGoodsList.get(position);
? ? }
}
----------------------我是分割線-------------------------------
對(duì)應(yīng)的Adapater用到的xml
這個(gè)可以隨便改,隨便創(chuàng)建,自己把名字對(duì)應(yīng)上就好?
item_launch
item_launch1 兩個(gè)XML我這里一樣的內(nèi)容? 根據(jù)自己需要直接改吧
單純就一個(gè)button,不加太多復(fù)雜的東西了
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent"
? ? android:orientation="vertical">
? ? <Button
? ? ? ? android:layout_gravity="center_horizontal"
? ? ? ? android:id="@+id/btn_start"
? ? ? ? android:layout_width="300dp"
? ? ? ? android:layout_height="45dp"
? ? ? ? android:text="登錄"
? ? ? ? ?/>
</LinearLayout>
----------------------我是分割線-------------------------------
附上兩張我修改好的頁面截圖,根據(jù)上面代碼你應(yīng)該能得到一個(gè)滑動(dòng)切換的ViewPager
如果要像我一樣點(diǎn)擊切換就用
?vp_content.setCurrentItem(0);?
方法參數(shù)代表第幾個(gè)頁面。

