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

zhongyuanceshi 2012-09-04 09:52:15
主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>
...全文
706 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
huajun3098 2012-09-24
  • 打赏
  • 举报
回复
可以参考这个网址,或许对你有所帮助。
http://www.cnblogs.com/hanyonglu/archive/2012/09/24/2693465.html
zhongyuanceshi 2012-09-11
  • 打赏
  • 举报
回复
咋没人呢?
zhongyuanceshi 2012-09-10
  • 打赏
  • 举报
回复
贴不了图呀,可以下载项目包:http://www.cnblogs.com/hzy-8/admin/Files.aspx
mimitracely 2012-09-09
  • 打赏
  • 举报
回复
有图才有兴趣看
zhongyuanceshi 2012-09-09
  • 打赏
  • 举报
回复
貌似没发贴图,项目包:http://www.cnblogs.com/hzy-8/admin/Files.aspx。
请大家帮忙看看,谢谢!
透心凉 2012-09-05
  • 打赏
  • 举报
回复
哇塞 是不是呀 你们讨论的都是什么,郁闷 代码~~
AMinfo 2012-09-05
  • 打赏
  • 举报
回复
你图要上一个上来,或者项目打包发到群里。
zhongyuanceshi 2012-09-05
  • 打赏
  • 举报
回复
没哪位做过类似应用?有点像带章节的书籍,读到章节末尾,再翻页接着读下一章,到每个章节索引,也可以选择章节阅读
zhangjingxuan891 2012-09-04
  • 打赏
  • 举报
回复
好像是和我要的效果差不多,我不需要点击事件...比lz的简单,学习学习
zhongyuanceshi 2012-09-04
  • 打赏
  • 举报
回复
没有人做过类似的应用吗?不知道用ViewPager和Adapter能不能实现这效果?哪些函数需复写呢?

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧