Android 引导页动态加载(多页面 ViewPager联动RadioButton)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21451721/article/details/50945253

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.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:flipInterval="30"
        android:persistentDrawingCache="animation" />


  <RadioGroup
      android: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>


猜你喜欢

转载自blog.csdn.net/qq_21451721/article/details/50945253