在手持設(shè)備開發(fā)中有一個(gè)ViewPager的控件,通過左右滑動加載不同view或者Fragment咙崎,用來做一些同一個(gè)容器中實(shí)現(xiàn)不同的多種布局桩盲,那手表中有沒有類似的控件?當(dāng)然有湃番,而且體驗(yàn)感覺更佳夭织,那就是今天我們要學(xué)習(xí)的GridViewPager。
1.新建一個(gè)GridViewPagerActivity和一個(gè)activity_grid.xml布局吠撮。
Paste_Image.png
初始化控件
Paste_Image.png
既然GridViewPager和ViewPager類似的控件尊惰,那么核心的部分肯定也是在適配器上面,我們需要自定義一個(gè)繼承FragmentGridPagerAdapter的類泥兰。
package com.tangyx.wear.adapter;
import android.app.Fragment;
import android.app.FragmentManager;
import android.support.wearable.view.CardFragment;
import android.support.wearable.view.FragmentGridPagerAdapter;
import com.tangyx.wear.R;
import java.util.ArrayList;
import java.util.List;
/**
* Created by tangyx on 2016/12/14.
*
*/
public class SampleGridPagerAdapter extends FragmentGridPagerAdapter {
/**
* 一共有多少行(上下滑動的頁面)
*/
private List<Row> mRows;
/**
*上下滑動的頁面
*/
private static class Row{
/**
* 每一個(gè)上下滑動頁面里面又有多少個(gè)其他頁面內(nèi)容
* (左右滑動的頁面)
*/
List<Page> pages;
Row(){
pages = new ArrayList<>();
}
/**
* 添加頁面
* @param page
*/
void addPages(Page page){
pages.add(page);
}
/**
* 每一行左右頁面的總數(shù)
* @return
*/
int size(){
return pages.size();
}
/**
* 獲取左右滑動的頁面
* @param i
* @return
*/
Page getPage(int i){
return pages.get(i);
}
}
/**
* 每一行左右滑動頁面的內(nèi)容
*/
private static class Page {
String title;
String text;
int iconRes;
Page(String title, String text, int iconRes) {
this.title = title;
this.text = text;
this.iconRes = iconRes;
}
}
public SampleGridPagerAdapter(FragmentManager fm) {
super(fm);
mRows = new ArrayList<>();
initData();
}
/**
* 初始化模擬數(shù)據(jù)
*/
private void initData(){
Row row1 = new Row();
row1.addPages(new Page("標(biāo)題1","內(nèi)容1",0));
row1.addPages(new Page("標(biāo)題2","內(nèi)容2",R.mipmap.ic_launcher));
row1.addPages(new Page("標(biāo)題3","內(nèi)容3",R.mipmap.ic_launcher));
Row row2 = new Row();
row2.addPages(new Page("標(biāo)題4","內(nèi)容5",R.mipmap.ic_launcher));
row2.addPages(new Page("標(biāo)題6","內(nèi)容6",0));
Row row3 = new Row();
row3.addPages(new Page("標(biāo)題7","內(nèi)容5",R.mipmap.ic_launcher));
mRows.add(row1);
mRows.add(row2);
mRows.add(row3);
}
@Override
public Fragment getFragment(int i, int i1) {
Page page = mRows.get(i).getPage(i1);
String title = page.title;
String text = page.text;
int icon = page.iconRes;
if(icon==0){
return CardFragment.create(title,text);
}
return CardFragment.create(title,text,icon);
}
/**
* 上下頁面的數(shù)量
* @return
*/
@Override
public int getRowCount() {
return mRows.size();
}
/**
* 每一個(gè)上下滑動頁面的左右滑動頁面
* @param i
* @return
*/
@Override
public int getColumnCount(int i) {
return mRows.get(i).size();
}
}
上面代碼就是適配器的核心內(nèi)容弄屡,每一個(gè)主要的方法我直接把作用和說明寫在了注釋上,如果你了解ViewPager那么這個(gè)肯定也不是問題鞋诗,上面的fragment是我們前面提到過的CardFragment膀捷,所以如果不明白請自行進(jìn)入傳送門(傳送門:http://www.reibang.com/p/e8971daaef80 )。
90845A35A26691C4C970150DB435A21F.jpg
061610746478E9276E28C072606DA23A.jpg
C8BDAB2233A475D9920675D3F3F6E8E3.jpg
總結(jié):其實(shí)如果最開始用手表的時(shí)候你就會發(fā)現(xiàn)表盤上的多個(gè)應(yīng)用消息提示就是通過GridViewPager實(shí)現(xiàn)的削彬,不但可以左右滑動還能上下滑動全庸,是不是感覺體驗(yàn)更好?
<a href="http://www.reibang.com/p/86b3801543bf">下一篇</a>