您的位置:首页 > 其它

安卓之引导页

2016-03-10 14:00 405 查看
当APP安装的时候,一般都需要引导页。

首先当然是写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.support.v4.view.ViewPager

android:id="@+id/vp_guide"

android:layout_width="match_parent"

android:layout_height="match_parent" />

<Button

android:id="@+id/btn_start"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:layout_marginBottom="30dp"

android:background="@drawable/btn_bg"

android:text="开始体验"

android:visibility="invisible"

android:textColor="#FFFFCC" />

<RelativeLayout

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:layout_marginBottom="10dp" >

<LinearLayout

android:id="@+id/ll_point_group"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="horizontal" >

</LinearLayout>

<View

android:id="@+id/view_red_point"

android:layout_width="8dp"

android:layout_height="8dp"

android:background="@drawable/shape_point_red" />

</RelativeLayout>

</RelativeLayout>

然后写你的引导页的业务逻辑,里面有一些位置的计算

public class GuideActivity extends Activity {

private static final int[] mImagIds = new int[] { R.drawable.guide_1,

R.drawable.guide_2, R.drawable.guide_3 };

private ViewPager vp_Guide;

private ArrayList<ImageView> mImageViewList;

private Button btn_start;

private LinearLayout ll_point_group;

private int width;

private View viewRedPoint;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_guide);

vp_Guide = (ViewPager) findViewById(R.id.vp_guide);

btn_start = (Button) findViewById(R.id.btn_start);

ll_point_group = (LinearLayout) findViewById(R.id.ll_point_group);

viewRedPoint = findViewById(R.id.view_red_point);

SharedPreferences sp = getSharedPreferences("updated_at", MODE_PRIVATE);

sp.edit().putString("updated_at", "暂未更新过!").commit();

initViews();

init();

vp_Guide.setAdapter(new GuideAdapter());

vp_Guide.setOnPageChangeListener(new GuidePageListener());

}

protected void init() {

btn_start.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

SharedPreferences sp = getSharedPreferences("config",

MODE_PRIVATE);

sp.edit().putBoolean("is_user_guide_showed", true).commit();

Intent intent = getIntent();

String token = intent.getStringExtra("Token");

GuideActivity.this.startActivity(new Intent(GuideActivity.this,

MainActivity.class).putExtra("Token", token));

GuideActivity.this.finish();

}

});

}

/**

* 初始化数据

*/

public void initViews() {

mImageViewList = new ArrayList<ImageView>();

// 初始化引导页的页面

for (int i = 0; i < mImagIds.length; i++) {

ImageView image = new ImageView(this);

image.setBackgroundResource(mImagIds[i]);

mImageViewList.add(image);

}

// 初始化小圆点

for (int i = 0; i < mImagIds.length; i++) {

View point = new View(this);

point.setBackgroundResource(R.drawable.shape_point_gray);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(

10, 10);

if (i > 0) {

params.leftMargin = 10;

}

point.setLayoutParams(params);

ll_point_group.addView(point); // 讲圆点添加进去

}

// 获取视图树

ll_point_group.getViewTreeObserver().addOnGlobalLayoutListener(

new OnGlobalLayoutListener() {

@Override

public void onGlobalLayout() {

ll_point_group.getViewTreeObserver()

.removeGlobalOnLayoutListener(this);

width = ll_point_group.getChildAt(1).getLeft()

- ll_point_group.getChildAt(0).getLeft();

System.out.println(width + "圆点距离");

}

});

}

class GuideAdapter extends PagerAdapter {

public int getCount() {

return mImagIds.length;

}

public boolean isViewFromObject(View arg0, Object arg1) {

return arg0 == arg1;

}

public Object instantiateItem(ViewGroup container, int

position) {

container.addView(mImageViewList.get(position));

return mImageViewList.get(position);

}

public void destroyItem(ViewGroup container, int position,

Object object) {

container.removeView((View) object);

}

}

class GuidePageListener implements OnPageChangeListener {

@Override

public void onPageScrollStateChanged(int arg0) {

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

System.out.println("当前位置" + arg0 + "百分比" + arg1 + "移动距离" + arg2);

int len = (int) (width * arg1) + arg0 * width;

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewRedPoint

.getLayoutParams();

params.leftMargin = len;

viewRedPoint.setLayoutParams(params);

}

@Override

public void onPageSelected(int arg0) {

if (arg0 == mImagIds.length - 1) {

btn_start.setVisibility(View.VISIBLE);

} else {

btn_start.setVisibility(View.INVISIBLE);

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: