更新日期 : 20160217 切換頁面監聽更改
相信各位在安裝 App 時候一定有引導教學左右滑動頁面
經過測試後
其實跟我們常用的 ListView 、GridView 大同小異
如果對 BaseAdapter 熟悉的朋友
一定很快就能上手
注意 : 要使用此功能,必須匯入 V4 包
順序
1 . 抓出畫面共同點!? ( 有些App會在最後一頁有 Button ,可以先隱藏 )
2 . 設計畫面UI
3 . 設計選配器
4 . 將 選配器放進 ViewPager ( 像 ListView )內
這次的 Sample 以單純圖片顯示
1 . cell_pager_image.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView"
android:scaleType="fitXY"
android:layout_gravity="right" />
</LinearLayout>
2 . MyPagerAdapter.java
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import java.util.List;
public class MyPagerAdapter extends PagerAdapter {
private Context context;
private List<Integer> list;
private LayoutInflater inflater;
public MyPagerAdapter(Context context, List<Integer> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// 佈局
View itemView = inflater
.inflate(R.layout.cell_pager_image, container, false);
// 佈局元件內容
ImageView imageView = (ImageView)itemView.findViewById(R.id.imageView);
imageView.setImageResource(list.get(position));
// 加載
(container).addView(itemView);
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// LinearLayout 是以 cell_pager_image 主體變更
container.removeView((LinearLayout) object);
}
}
3 . activity_main.xml (將設定好的選配器設置到 ViewPager 上
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</android.support.v4.view.ViewPager>
</RelativeLayout>
4 . MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity implements ViewPager.OnPageChangeListener{
ViewPager viewPager;
MyPagerAdapter myPagerAdapter;
// 在專案內放的測試圖
private static final int[] pictures = { R.drawable.icon_01,
R.drawable.icon_02, R.drawable.icon_03 };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewpager);
List<Integer> list = new ArrayList<Integer>();
for(int i : pictures){
list.add(i);
}
myPagerAdapter = new MyPagerAdapter(this, list);
viewPager.setAdapter(myPagerAdapter);
}
}
如果要對頁面設定監聽器
ViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
參考資料 : Viewpager setonpagechangelistener deprecated
有關於底下原點,必須要在MainActivity設定
簡單的說必須配合監聽換頁
如果有時間會在寫一些 Sample
參考資料 : Android ViewPager Gallery Images and Texts Tutorial
參考資料 : Android通用圆点指示器——android-Universal-CircleIndicator
參考資料 : ViewPagerIndicator 分頁指示器
參考資料 : VIEW PAGER WITH CIRCULAR INDICATOR (WITHOUT ANY LIBRARY)
歡迎轉載,請註明出處。
沒有留言:
張貼留言