Android 引导页动态加载(多页面 ViewPager联动RadioButton)
2016-03-21 11:54
573 查看
viewPager图片是借鉴其他项目的网络资源,忘了是谁了。但是必须表示谢意! 第一次发博客不太会,下面贴上关键代码:private final static int RADIOBUTTON_ID =0X101;private List<View> pageview;private RadioGroup rdgp;private ViewPager vp;
private void initData() { // TODO Auto-generated method stub rdgp=findViewById(...); vp=findViewById(...); pageview = new ArrayList<View>(); LinearLayout ll_img; /** * 这里的for循环是动态生成viewPager的子布局,给的默认值为3,其值可随意更改。 * */ for (int i = 0; i < 3; i++) { ll_img = new LinearLayout(this); ll_img.setOrientation(LinearLayout.VERTICAL); ll_img.setLayoutParams(newLinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f)); //同时动态生成RadioButton RadioButton rd = new RadioButton(this); rd.setLayoutParams(newLinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1.0f));
//① 固定写法
switch (i) { case 0: ll_img.setBackgroundResource(R.drawable.view1); //在这里给动态控件设置ID,为了方便找到(也可以不设置) rd.setId(RADIOBUTTON_ID+ i); rd.setChecked(true); break; case 1: ll_img.setBackgroundResource(R.drawable.view2); rd.setId(RADIOBUTTON_ID+ i); break; case 2: ll_img.setBackgroundResource(R.drawable.view3); rd.setId(RADIOBUTTON_ID+ i); break; default: break; }
//②动态写法
if (i == 0) { <span style="white-space:pre"> </span>img.setImageBitmap(bm[i]); <span style="white-space:pre"> </span>rd.setId(RADIOBUTTON_ID + i); <span style="white-space:pre"> </span>rd.setChecked(true);//第一个默认给RadioButton 为true <span style="white-space:pre"> </span>} else if (i > 0) { <span style="white-space:pre"> </span>img.setImageBitmap(bm[i]); <span style="white-space:pre"> </span>rd.setId(RADIOBUTTON_ID + i); <span style="white-space:pre"> </span>}
//装进RadioGroup rdgp.addView(rd); //装进list<View> pageview.add(ll_img); } // 绑定适配器 vp.setAdapter(mPagerAdapter); }
// 数据适配器 PagerAdapter mPagerAdapter = new PagerAdapter() { @Override // 获取当前窗体界面数 public int getCount() { // TODO Auto-generated method stub return pageview.size(); } @Override // 断是否由对象生成界面 public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0 == arg1; } // 是从ViewGroup中移出当前View public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView(pageview.get(arg1)); } // 返回一个对象,这个对象表明了PagerAdapter适配器选择哪个对象放在当前的ViewPager中 public Object instantiateItem(View arg0, int position) { ((ViewPager) arg0).addView( pageview.get(position % pageview.size()), 0); return pageview.get(position); } }; @Override public void onPageScrollStateChanged(int arg0) { // 到了最后一张并且还继续拖动,出现蓝色限制边条了,右滑动进入主窗口 if (rightEdge != null && !rightEdge.isFinished()) { startActivity(new Intent(MainActivity.this, FirstActivity.class)); MainActivity.this.finish(); } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub /*右滑动进入主窗口.第二种方式 * if(arg0==-1){ Intent in=new Intent(GuideInformationsActivity.this, * FirstActivity.class); startActivity(in); finish(); } */ } @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub /** * viewPager带 RadioButton联动 * */ RadioButton rd = (RadioButton) rdgp.getChildAt(arg0); <span style="white-space:pre"> </span>rd.setChecked(true); }
//RadioGroup的点击方法 @Override public void onCheckedChanged(RadioGroup group, int checkedId) { // TODO Auto-generated method stub /** * RadioButton带 viewPager联动 * */ RadioButton rd = (RadioButton) findViewById(checkedId); if (rd != null) {
//① switch case:是固定写法 switch (rd.getId()) { case RADIOBUTTON_ID: rd.setChecked(true); vp.setCurrentItem(0); break; case RADIOBUTTON_ID+ 1: rd.setChecked(true); vp.setCurrentItem(1); break; case RADIOBUTTON_ID + 2: rd.setChecked(true); vp.setCurrentItem(2); break; <pre name="code" class="java">default: break;
//②for循环是动态写法
for(i=0;i<picName.length;i++){
if (rd.getId() == RADIOBUTTON_ID + i) {<span style="white-space:pre"> </span>rd.setChecked(true);<span style="white-space:pre"> </span>vp.setCurrentItem(i);<span style="white-space:pre"> </span>}
}}}}
下面是XML:(这里主要是体现引导页的相关代码)<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><android.support.v4.view.ViewPagerandroid:id="@+id/viewPager"android:layout_width="match_parent"android:layout_height="match_parent"android:flipInterval="30"android:persistentDrawingCache="animation" /><RadioGroupandroid:id="@+id/guide_info_radioGroup"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:orientation="horizontal"android:layout_marginBottom="50dp" ></RadioGroup></RelativeLayout>
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories