当前位置: 代码迷 >> Android >> Android第一贴:主界面九宫格,点击每个宫格显示完该宫格图片后,再滑动可以显示上一个宫格图片
  详细解决方案

Android第一贴:主界面九宫格,点击每个宫格显示完该宫格图片后,再滑动可以显示上一个宫格图片

热度:76   发布时间:2016-05-01 13:29:58.0
Android第一贴:主界面九宫格,点击每个宫格显示完该宫格图片后,再滑动可以显示下一个宫格图片
主Activity为GridLayout九宫格,点击其中一个宫格(如设置),左右滑动显示设置操作指引的图片,当显示完该宫格图片,再手指滑动可显示下一个宫格(如音乐)的指引操作图片,请问该如何实现:当显示完该宫格图片,再手指滑动可显示下一个宫格(如音乐)的指引操作图片。

目前使用ViewPager和Adapter,实现了:点击每个宫格,左右滑动显示该宫格操作指引的图片。就是不知道如何实现连续滑动实现下一宫格图片,请大侠指教。
Java code
public class MainActivity extends Activity {    ImageView music;    ImageView sms;    ImageView setting;    private final static String MUSIC="android.intent.action.Music";    private final static String SMS="android.intent.action.Sms";    private final static String SETTING="android.intent.action.Setting";    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                sms=(ImageView)findViewById(R.id.sms_iv);        sms.setOnClickListener(smsListener);                music=(ImageView)findViewById(R.id.music_iv);        music.setOnClickListener(musicListener);                setting=(ImageView)findViewById(R.id.setting_iv);        setting.setOnClickListener(settingListener);    }    OnClickListener musicListener=new OnClickListener() {                @Override        public void onClick(View v) {            // TODO Auto-generated method stub            System.out.println("music");            Intent intent=new Intent(MUSIC);            intent.setClass(MainActivity.this, MySlid.class);            startActivity(intent);        }    };        OnClickListener smsListener=new OnClickListener() {                @Override        public void onClick(View v) {            // TODO Auto-generated method stub            System.out.println("sms");            Intent intent=new Intent(SMS);            intent.setClass(MainActivity.this, MySlid.class);            startActivity(intent);        }    };        OnClickListener settingListener=new OnClickListener() {                @Override        public void onClick(View v) {            // TODO Auto-generated method stub            System.out.println("setting");            Intent intent=new Intent(SETTING);            intent.setClass(MainActivity.this, MySlid.class);            startActivity(intent);        }    };}public class MySlid extends Activity {    private ViewPager mViewPager;    private MyPagerAdapter myPagerAdapter;    private List<View> mListViews;    private List<View> mListViewsExt;    private Context cxt;    private LayoutInflater mInflater;    int mCount;    boolean musicFlag=false;    int musicLen=0;    int len=0;    int numberofImg[]={3,5,6};        public MySlid() {        // TODO Auto-generated constructor stub    }    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                cxt=this;        mInflater=getLayoutInflater();                mListViews=new ArrayList<View>();        mListViewsExt=new ArrayList<View>();        Intent intent=getIntent();                mListViews.add(mInflater.inflate(R.layout.layout1, null));        mListViews.add(mInflater.inflate(R.layout.layout2, null));        mListViews.add(mInflater.inflate(R.layout.layout3, null));        mListViews.add(mInflater.inflate(R.layout.layout4, null));        mListViews.add(mInflater.inflate(R.layout.layout5, null));        mListViews.add(mInflater.inflate(R.layout.layout6, null));            len=mListViews.size();        mListViewsExt=mListViews;                if(intent.getAction()=="android.intent.action.Sms")        {            mListViews=mListViews.subList(0, 3);            mListViewsExt=mListViewsExt.subList(numberofImg[0], len);            musicFlag=true;            musicLen=mListViews.size();        }        else if(intent.getAction()=="android.intent.action.Music")        {            mListViews=mListViews.subList(3, 5);            mListViewsExt=mListViewsExt.subList(numberofImg[1], len);        }        else if(intent.getAction()=="android.intent.action.Setting")        {            mListViews=mListViews.subList(5, 6);            mListViewsExt=mListViewsExt.subList(numberofImg[2], len);        }        myPagerAdapter=new MyPagerAdapter(cxt,mListViews);        mViewPager=(ViewPager)findViewById(R.id.mysomepager);        mViewPager.setAdapter(myPagerAdapter);        mViewPager.setOnPageChangeListener(ViewPagerChangeListener);    }        OnPageChangeListener ViewPagerChangeListener=new OnPageChangeListener() {                @Override        public void onPageSelected(int arg0) {            // TODO Auto-generated method stub            if(arg0>mListViews.size())            {                mCount++;                mListViews=mListViewsExt;            }        }                @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                    }    };    private class MyPagerAdapter extends PagerAdapter {        public MyPagerAdapter(Context context,List<View> views) {               mListViews = views;               cxt=context;                  mCount = views.size();              }        @Override        public int getCount() {            // TODO Auto-generated method stub            return mCount+1;        }        @Override        public boolean isViewFromObject(View view, Object object) {            // TODO Auto-generated method stub            return view==(object);        }        @Override        public Object instantiateItem(View collection, int position) {                           if (position >= mListViews.size()) {                    int newPosition = position%mListViews.size();                                                                position = newPosition;                                mCount++;                   }                   if(position <0){                    position = -position;                    mCount--;                   }                   try {                    ((ViewPager) collection).addView(mListViews.get(position), 0);                   } catch (Exception e) {                         }            //((ViewPager) collection).addView(mListViews.get(position), 0);                   return mListViews.get(position);        }                @Override        public void destroyItem(View collection, int position, Object view) {                           if (position >= mListViews.size()) {                    int newPosition = position%mListViews.size();                                   position = newPosition;//            ((ViewPager) collection).removeView(mListViews.get(position));               }               if(position <0){                    position = -position;//                    ((ViewPager) collection).removeView(views.get(position));                   }            //((ViewPager) collection).removeView(mListViews.get(position));        }                    @Override        public void finishUpdate(View arg0) {}                @Override        public void restoreState(Parcelable arg0, ClassLoader arg1) {}        @Override        public Parcelable saveState() {            return null;        }        @Override        public void startUpdate(View arg0) {}    }}以下是布局文件:activity_main.xml<?xml version="1.0" encoding="utf-8"?><GridLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:columnCount="3"    android:rowCount="3"     android:background="@drawable/bg">     <ImageView        android:id="@+id/sms_iv"        android:layout_width="wrap_content"         android:layout_height="wrap_content"        android:src="@drawable/sms_iv"/>        <ImageView        android:id="@+id/music_iv"        android:layout_width="wrap_content"         android:layout_height="wrap_content"        android:src="@drawable/sms_iv"/>        <ImageView        android:id="@+id/setting_iv"        android:layout_width="wrap_content"         android:layout_height="wrap_content"        android:src="@drawable/sms_iv"/>           <ImageView        android:id="@+id/theme_iv"        android:layout_width="wrap_content"         android:layout_height="wrap_content"        android:src="@drawable/sms_iv"/>        <ImageView        android:id="@+id/home_iv"        android:layout_width="wrap_content"         android:layout_height="wrap_content"        android:src="@drawable/sms_iv"/>        <ImageView        android:id="@+id/photo_iv"        android:layout_width="wrap_content"         android:layout_height="wrap_content"        android:src="@drawable/sms_iv"/>           <ImageView        android:id="@+id/video_iv"        android:layout_width="wrap_content"         android:layout_height="wrap_content"        android:src="@drawable/sms_iv"/>        <ImageView        android:id="@+id/image_iv"        android:layout_width="wrap_content"         android:layout_height="wrap_content"        android:src="@drawable/sms_iv"/>        <ImageView        android:id="@+id/paly_iv"        android:layout_width="wrap_content"         android:layout_height="wrap_content"        android:src="@drawable/sms_iv"/></GridLayout>以下为:main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"><android.support.v4.view.ViewPager    android:layout_width="match_parent"     android:layout_height="match_parent"     android:id="@+id/mysomepager"/></LinearLayout>每个宫格下的图片都是ImageView,layout1.xml,这只是其中一张图片,其他一样,不贴了<?xml version="1.0" encoding="utf-8"?>    <ImageView         android:id="@+id/iv1"         android:layout_width="wrap_content"         android:layout_height="wrap_content"        android:src="@drawable/iv1"        xmlns:android="http://schemas.android.com/apk/res/android">            </ImageView>
  相关解决方案