关键代码如下:

package com.chinaideal.bkclient.tabmain;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.View;import android.view.ViewGroup;import android.view.ViewTreeObserver.OnPreDrawListener;import android.view.animation.TranslateAnimation;import android.widget.ImageView;import android.widget.ImageView.ScaleType;public class WelComeActivity extends Activity {// 首次使用程序的显示的欢迎图片private int[] ids = { R.drawable.webcom_frist_image,R.drawable.webcom_two_image, R.drawable.webcom_three_image,R.drawable.niwodai_welcom };SharedPreferences share;private List<View> guides = new ArrayList<View>();private ViewPager pager;private ImageView curDot;// 位移量private int offset;// 记录当前的位置private int curPos = 0;Editor editor;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);share = getSharedPreferences("showWelcomm", Context.MODE_PRIVATE);editor = share.edit();// 判断是否首次登录程序if (share.contains("shownum")) {setContentView(R.layout.welcomniwo);int num = share.getInt("shownum", 0);editor.putInt("shownum", num++);editor.commit();skipActivity(1);} else {editor.putInt("shownum", 1);editor.commit();setContentView(R.layout.welcometabx);initView();}}private void initView() {for (int i = 0; i < ids.length; i++) {ImageView iv = new ImageView(this);iv.setImageResource(ids[i]);ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);iv.setLayoutParams(params);iv.setScaleType(ScaleType.FIT_XY);guides.add(iv);}curDot = (ImageView) findViewById(R.id.cur_dot);curDot.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {public boolean onPreDraw() {offset = curDot.getWidth();return true;}});WecommPagerAdapter adapter = new WecommPagerAdapter(guides);pager = (ViewPager) findViewById(R.id.showwelom_page);pager.setAdapter(adapter);pager.setOnPageChangeListener(new OnPageChangeListener() {public void onPageSelected(int arg0) {moveCursorTo(arg0);if (arg0 == ids.length - 1) {// 到最后一张了skipActivity(2);}curPos = arg0;}public void onPageScrolled(int arg0, float arg1, int arg2) {}public void onPageScrollStateChanged(int arg0) {}});}/** * 移动指针到相邻的位置 *  * @param position *            指针的索引值 * */private void moveCursorTo(int position) {TranslateAnimation anim = new TranslateAnimation(offset * curPos,offset * position, 0, 0);anim.setDuration(300);anim.setFillAfter(true);curDot.startAnimation(anim);}/** * 延迟多少秒进入主界面 * @param min 秒 */private void skipActivity(int min) {new Handler().postDelayed(new Runnable() {@Overridepublic void run() {Intent intent = new Intent(WelComeActivity.this,TabHostMain.class);startActivity(intent);WelComeActivity.this.finish();}}, 1000*min);}}

public class WecommPagerAdapter extends PagerAdapter{private List<View> views;public GuidePagerAdapter(List<View> views){this.views=views;}@Overridepublic void destroyItem(View arg0, int arg1, Object arg2) {((ViewPager) arg0).removeView(views.get(arg1));}@Overridepublic void finishUpdate(View arg0) {}@Overridepublic int getCount() {return views.size();}@Overridepublic Object instantiateItem(View arg0, int arg1) {((ViewPager) arg0).addView(views.get(arg1), 0);return views.get(arg1);}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == (arg1);}@Overridepublic void restoreState(Parcelable arg0, ClassLoader arg1) {}@Overridepublic Parcelable saveState() {return null;}@Overridepublic void startUpdate(View arg0) {}}


<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <android.support.v4.view.ViewPager        android:id="@+id/showwelom_page"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:layout_gravity="center"        android:flipInterval="30"        android:persistentDrawingCache="animation" />    <FrameLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_centerHorizontal="true"        android:gravity="center"         android:paddingBottom="22.0dip">        <LinearLayout            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:gravity="center"            android:orientation="horizontal" >            <ImageView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_weight="1.0"                android:src="@drawable/dot1_w" />            <ImageView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_weight="1.0"                android:src="@drawable/dot1_w" />            <ImageView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_weight="1.0"                android:src="@drawable/dot1_w" />            <ImageView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_weight="1.0"                android:src="@drawable/dot1_w" />         </LinearLayout>        <ImageView            android:id="@+id/cur_dot"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@drawable/dot2_w" />    </FrameLayout></RelativeLayout>



更多相关文章

  1. android:giavity和layout_gravity的区别
  2. android jni (jni_onload方式)
  3. Android(安卓)在百度地图上显示自己的实时位置
  4. Android瀑布流的实现
  5. android view滑动助手类OverScroller
  6. Android智能指针SP WP使用方法介绍
  7. Android架构分析之Android智能指针(二)
  8. Android中的动画详解系列【2】——飞舞的蝴蝶
  9. Android开发之实现图片自动滚动显示标签的ViewPager

随机推荐

  1. android动态加载外部资源文件
  2. Android(安卓)Gradle权威指南
  3. android开发教程之listview使用方法
  4. Android沉浸式
  5. android获取应用信息,判断应用来源,监听应
  6. 轻松使用xmlpull解析xml
  7. centos编译安装ffmpeg支持AMR
  8. 关于Android中自定义ClassLoader耗时问题
  9. 一起学android之利用ColorMatrix进行图片
  10. 生命周期组件 Lifecycle 源码解析(一)