android学习——实现欢迎界面图片动画滑动切换

刚学习的时候想做两个activity之间滑动切换的效果,就查了几个博客写了之前的一篇“activity实现动画切换”,现在看来这个功能好水,难看且基本不会有用到的。

但第一次启动APP欢迎界面滑动进入的效果很常见,所以就查资料写了这么一个。

当然这是跟程序第一次启动结合着用的,具体判断是否第一次启动,请看上一篇android学习——判断APP(程序)是否第一次启动


首先要了解一下ViewPager,简单的说它的的功能就是可以使视图左右滑动那样。下面详细介绍这个效果步骤:

1,在activity_main中加载ViewPager
,其他不需要布局


2,创建几个layout,用来显示需要滑动的图片,我这里是三个,每个layout中可以做自己需要的布局,背景图片设置为自己设计好的,放在drawable文件夹中,我又在右上角加了一个透明且有边框的“跳过”按钮,代码如下




    


 其他两个跟这个一样,背景图片换了,button按钮id换成pass2 和in

3,创建一个WelcomeActivity,里面的代码如下

public class WelcomeActivity extends Activity implements OnClickListener {
	private ViewPager mViewPager;
	List viewList;


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.splash_activity);


		
		@SuppressWarnings("static-access")
		// 用LayoutInflater中的getLayoutInflater加载要显示的界面
		// 获得 LayoutInflater 实例
		LayoutInflater mInflater = getLayoutInflater().from(this);


		// 加载要显示的界面
		View v1 = mInflater.inflate(R.layout.welcome1, null);
		View v2 = mInflater.inflate(R.layout.welcome2, null);
		View v3 = mInflater.inflate(R.layout.welcome3, null);


		// 将要分页显示的View装入数组中
		viewList = new ArrayList();
		viewList.add(v1);
		viewList.add(v2);
		viewList.add(v3);


		// 实例化ViewPager组件,并设置它的PagerAdapter,在这里一般需要重写PagerAdapter,具体设置和重写见WelcomeActivityAdapter
		mViewPager = (ViewPager) findViewById(R.id.viewpager);
		mViewPager.setAdapter(new WelcomePagerAdapter(viewList));
		mViewPager.setCurrentItem(0);


		/*
		 * 另外一种初始化写法:
		 *  // 初始化Adapter 
		 * private ViewPagerAdapter vpAdapter; 
				 * vpAdapter = new ViewPagerAdapter(viewList, this); 
		 * vp = (ViewPager)findViewById(R.id.viewpager); 
		 * vp.setAdapter(vpAdapter); 
		 * // 绑定回调
		 * vp.setOnPageChangeListener(this);
		 */


		//获取列表中的每个界面
		View view0 = viewList.get(0);
		View view1 = viewList.get(1);
		View view2 = viewList.get(2);


		// 找到界面中的“跳过”按钮
		Button pass1 = (Button) view0.findViewById(R.id.pass1);
		Button pass2 = (Button) view1.findViewById(R.id.pass2);
		Button in = (Button) view2.findViewById(R.id.in);
		
		//设置onClick
		pass1.setOnClickListener(this);
		pass2.setOnClickListener(this);
		in.setOnClickListener(this);


	}
	//设置onClick方法,点击跳转到主界面,因为每一个按钮的点击事件都是进入程序,所以不需要switch了
	@Override
	public void onClick(View v) {
		
		Intent intent = new Intent(WelcomeActivity.this, LoginActivity.class);
		WelcomeActivity.this.startActivity(intent);
		WelcomeActivity.this.finish();
	}

4,创建WelcomePagerAdapterActivity,代码如下:

//PagerAdapter是viewpager的适配器,必须继承它
public class WelcomePagerAdapter extends PagerAdapter {

	//界面列表
	private List mListView;
	public WelcomePagerAdapter(List mListView) {
		super();
		this.mListView = mListView;
	}

	// 销毁arg1位置的界面
	public void destroyItem(View arg0, int arg1, Object arg2) {
		((ViewGroup) arg0).removeView(mListView.get(arg1));
	}

	@Override
	public void finishUpdate(View arg0) {

	}

	// 获取当前窗体界面数
	public int getCount() {
		return mListView.size();
	}

	// 初始化arg1位置的界面
	@Override
	public Object instantiateItem(View arg0, int arg1) {
		((ViewGroup) arg0).addView(mListView.get(arg1), 0);
		return mListView.get(arg1);
	}

	// 判断是否由对象生成界面
	public boolean isViewFromObject(View arg0, Object arg1) {
		return arg0 == (arg1);
	}

	@Override
	public void restoreState(Parcelable arg0, ClassLoader arg1) {

	}

	@Override
	public Parcelable saveState() {
		return null;
	}

	@Override
	public void startUpdate(View arg0) {

	}

}

5,创建一个欢迎界面结束后要进入的Activity,我设置的是一个登陆界面,这个根据自己的需要编写,下一篇写,登陆功能的实现。

你可能感兴趣的:(Android)