這是android中的viewPager中常用的壹種效果
例如APP首次啟動的歡迎界面,通常都會帶幾個這種小點,用於告訴用戶,當前是第幾個界面
實效果如下:
android.support.v4.ViewPager類在?API 4+ Support?支持包中開始為我們提供,它可以讓我們有能力左右滑動以'頁'的形式展示數據。我們可以通過繼承?PagerAdapter?來生成頁面形式的視圖。介紹具體的使用方式之前先來看下效果
2.實現代碼:
首先需要在layout文件中配置ViewPager View
<android.support.v4.view.ViewPager?
android:id="@+id/pager"?
android:layout_width="wrap_content"?
android:layout_height="wrap_content"?
android:layout_marginBottom="50dp"?/>?
3.Activity的實現代碼
public?class?MainActivity?extends?Activity?{?
ArrayList<View>?mViewList?=?new?ArrayList<View>();?
LayoutInflater?mLayoutInflater;?
LinearLayout?mNumLayout;?
Button?mPreSelectedBt;?
MyPagerAdapter?mPagerAdapter;?
@Override?
protected?void?onCreate(Bundle?savedInstanceState)?{?
super.onCreate(savedInstanceState);?
setContentView(R.layout.activity_main);?
mLayoutInflater?=?getLayoutInflater();?
//可以按照需求進行動態創建Layout,這裏暫用靜態的xml?layout?
mViewList.add(mLayoutInflater.inflate(R.layout.per_pager1,?null));?
mViewList.add(mLayoutInflater.inflate(R.layout.per_pager2,?null));?
mViewList.add(mLayoutInflater.inflate(R.layout.per_pager3,?null));?
ViewPager?viewPager?=?(ViewPager)?findViewById(R.id.pager);?
mPagerAdapter?=?new?MyPagerAdapter();?
viewPager.setAdapter(mPagerAdapter);?
mNumLayout?=?(LinearLayout)?findViewById(R.id.ll_pager_num);?
Bitmap?bitmap?=?BitmapFactory.decodeResource(getResources(),?R.drawable.icon_dot_normal);?
for?(int?i?=?0;?i?<?mViewList.size();?i++)?{?
Button?bt?=?new?Button(this);?
bt.setLayoutParams(new?ViewGroup.LayoutParams(bitmap.getWidth(),bitmap.getHeight()));?
bt.setBackgroundResource(R.drawable.icon_dot_normal);?
mNumLayout.addView(bt);?
}?
viewPager.setOnPageChangeListener(new?OnPageChangeListener()?{?
@Override?
public?void?onPageSelected(int?position)?{?
if(mPreSelectedBt?!=?null){?
mPreSelectedBt.setBackgroundResource(R.drawable.icon_dot_normal);?
}?
Button?currentBt?=?(Button)mNumLayout.getChildAt(position);?
currentBt.setBackgroundResource(R.drawable.home_page_dot_select);?
mPreSelectedBt?=?currentBt;?
//Log.i("INFO",?"current?item:"+position);?
}?
@Override?
public?void?onPageScrolled(int?arg0,?float?arg1,?int?arg2)?{?
//?TODO?Auto-generated?method?stub?
}?
@Override?
public?void?onPageScrollStateChanged(int?arg0)?{?
//?TODO?Auto-generated?method?stub?
}?
});?
}?
class?MyPagerAdapter?extends?PagerAdapter{?
@Override?
public?int?getCount()?{?
return?mViewList.size();?
}?
@Override?
public?Object?instantiateItem(View?container,?int?position)?{?
Log.i("INFO",?"instantiate?item:"+position);?
((ViewPager)?container).addView(mViewList.get(position),0);? return?mViewList.get(position);?}?
@Override?
public?void?destroyItem(View?container,?int?position,?Object?object)?{?
Log.i("INFO",?"destroy?item:"+position);?
((ViewPager)?container).removeView(mViewList.get(position));
}?
@Override?
public?boolean?isViewFromObject(View?arg0,?Object?arg1)?{?
return?arg0?==?arg1;?
}?
}?
} ?
有關viewPager + Adapter的更多用法,建議查看使用教程