Android中ViewPage的使用
ViewPage的使用
package com.gfive.help; import java.io.File; import java.util.ArrayList; import java.util.List; import com.gfive.help.tools.Tools; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Environment; import android.os.Parcelable; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.Toast; public class ViewPageActivity extends Activity { ViewPager viewPager; ArrayList<View> list; ViewGroup main, group; ImageView imageView; ImageView[] imageViews; private static int c_id = 0 ; private static final String IMAGE_PATH = "/gfive/images" ; /** * 图片类型 */ public static final String IMAGE_TYPE = "image_type" ; private String imageType; @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); this .requestWindowFeature(Window.FEATURE_NO_TITLE); if (!Tools.existSDcard( this )){ //如果没有内存卡,请绕开 finish(); } imageType = getIntent().getStringExtra(IMAGE_TYPE); //获取图片类型 LayoutInflater inflater = getLayoutInflater(); List<Bitmap> lists = getBitmaps(); list = new ArrayList<View>(); ImageView iv = null ; for ( int i = 0 ;i<lists.size();i++){ iv = new ImageView( this ); iv.setImageBitmap(lists.get(i)); list.add(iv); } imageViews = new ImageView[list.size()]; ViewGroup main = (ViewGroup) inflater.inflate(R.layout.tutorials_layout, null ); ViewGroup group = (ViewGroup) main.findViewById(R.id.viewGroup); viewPager = (ViewPager) main.findViewById(R.id.viewPager); for ( int i = 0 ; i < list.size(); i++) { imageView = new ImageView(ViewPageActivity. this ); imageView.setLayoutParams( new LayoutParams( 12 , 12 )); imageViews[i] = imageView; if (i == 0 ) { imageViews[i].setBackgroundResource(R.drawable.guide_dot_white); } else { imageViews[i].setBackgroundResource(R.drawable.guide_dot_black); } group.addView(imageView); } setContentView(main); viewPager.setAdapter( new MyAdapter()); viewPager.setOnPageChangeListener( new MyListener()); viewPager.setCurrentItem( 300 ); } class MyAdapter extends PagerAdapter { @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public int getItemPosition(Object object) { return super .getItemPosition(object); } @Override public void destroyItem(View arg0, int arg1, Object arg2) { } @Override public Object instantiateItem(View arg0, int arg1) { try { ((ViewPager) arg0).addView(list.get(arg1 % list.size()), 0 ); } catch (Exception e) { } return list.get(arg1 % list.size()); } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { } @Override public Parcelable saveState() { return null ; } @Override public void startUpdate(View arg0) { } @Override public void finishUpdate(View arg0) { } } class MyListener implements OnPageChangeListener { // 当滑动状态改变时调用 @Override public void onPageScrollStateChanged( int arg0) { } // 当当前页面被滑动时调用 @Override public void onPageScrolled( int position, float positionOffset, int positionOffsetPixels) { if (position==list.size()- 1 ){ //最后一页是关掉帮助 finish(); } } // 当新的页面被选中时调用 @Override public void onPageSelected( int location) { if (location > 2 && list.size()> 0 ) { location = location % list.size(); } c_id = location; for ( int i = 0 ; i < imageViews.length; i++) { imageViews[location].setBackgroundResource(R.drawable.guide_dot_white); if (location != i) {imageViews[i].setBackgroundResource(R.drawable.guide_dot_black); } } } } @Override protected void onDestroy() { finish(); super .onDestroy(); } /** * 获取手机中的图片集合 * @return */ private List<Bitmap> getBitmaps(){ int i = 1 ; List<Bitmap> bitmaps = new ArrayList<Bitmap>(); StringBuilder sbPath = new StringBuilder(); sbPath.append(Tools.SDCARD_STORAGE_PATH).append(IMAGE_PATH).append(imageType); while ( true ){ File file = new File(sbPath.toString()+( "guide_img" +i+ ".png" ).toString()); if (!file.exists()) break ; bitmaps.add(BitmapFactory.decodeFile(sbPath.toString()+( "guide_img" +i+ ".png" ))); i++; } return bitmaps; } } |
布局文件:
<? xml version="1.0" encoding="utf-8"?> < FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > < android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="fill_parent" android:layout_height="wrap_content" /> < RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > < LinearLayout android:id="@+id/viewGroup" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="30dp" android:gravity="center_horizontal" android:orientation="horizontal" /> </ RelativeLayout > </ FrameLayout > |
有些东西会,但不精通,而我现在要做的就是精通,复习回顾,整理自己的框架,举一反三。。。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步