主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>
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>
请大家帮忙看看,谢谢!
http://www.cnblogs.com/hanyonglu/archive/2012/09/24/2693465.html