主Activity为GridLayout九宫格,点击其中一个宫格(如设置),左右滑动显示设置操作指引的图片,当显示完该宫格图片,再手指滑动可显示下一个宫格(如音乐)的指引操作图片,请问该如何实现:当显示完该宫格图片,再手指滑动可显示下一个宫格(如音乐)的指引操作图片。目前使用ViewPager和Adapter,实现了:点击每个宫格,左右滑动显示该宫格操作指引的图片。就是不知道如何实现连续滑动实现下一宫格图片,请大侠指教。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>

解决方案 »

  1.   

    没有人做过类似的应用吗?不知道用ViewPager和Adapter能不能实现这效果?哪些函数需复写呢?
      

  2.   

    貌似没发贴图,项目包:http://www.cnblogs.com/hzy-8/admin/Files.aspx。
    请大家帮忙看看,谢谢!
      

  3.   

    贴不了图呀,可以下载项目包:http://www.cnblogs.com/hzy-8/admin/Files.aspx
      

  4.   

    可以参考这个网址,或许对你有所帮助。
    http://www.cnblogs.com/hanyonglu/archive/2012/09/24/2693465.html