Android之最炫的旋转引导页

来源:互联网 发布:淘宝购买的模板在哪里 编辑:程序博客网 时间:2024/04/23 18:40


     每个APP都会有一个自己的引导页,下面我就分享一个最炫的旋转的引导页效果:

当然这里需要nineoldandroids-2.4.0.jar这个jar包的帮助,下载地址:http://download.csdn.net/my

1.------------------------------MainActivity.java-----------------------------

import java.util.ArrayList;import com.example.day9viewpager1.rotate.RotateDownTransformer;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.PageTransformer;import android.view.View;public class MainActivity extends Activity {private ViewPager vp;private ArrayList<Integer> list;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);vp = (ViewPager) findViewById(R.id.vp);list = new ArrayList<Integer>();list.add(R.drawable.ty1);list.add(R.drawable.ty2);list.add(R.drawable.ty3);list.add(R.drawable.ty4);list.add(R.drawable.ty5);vp.setAdapter(new MyPager(MainActivity.this, list));//记得把相应的包发进来=nineoldandroids-2.4.0.jar包vp.setPageTransformer(true, new RotateDownTransformer());}}


2.------------------------------pager.xml-----------------------------

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <ImageView        android:id="@+id/imageView"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:src="@drawable/ic_launcher" /></LinearLayout>


3.----------------------------activity_main.xml-------------------------------

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"     >     <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="match_parent"        android:layout_height="match_parent" /></RelativeLayout>


4.--------------------------MyPager.java---------------------------------

import java.util.ArrayList;import android.content.Context;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;public class MyPager extends PagerAdapter {private Context context;private ArrayList<Integer> list;public MyPager(Context context,ArrayList<Integer> list) {// TODO Auto-generated constructor stubthis.context=context;this.list=list;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0==arg1;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {// TODO Auto-generated method stubView view = View.inflate(context, R.layout.pager, null);ImageView imagView = (ImageView) view.findViewById(R.id.imageView);imagView.setImageResource(list.get(position));container.addView(view);return view;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {// TODO Auto-generated method stubcontainer.removeView((View) object);}}


5.--------------------旋转的类---------RotateDownTransformer.java------------------------------

import android.support.v4.view.ViewPager.PageTransformer;import android.util.Log;import android.view.View;import com.nineoldandroids.view.ViewHelper;/** * ViewPager自定义旋转动画 *  */public class RotateDownTransformer implements PageTransformer {// 旋转的最大角度为20度private static final float MAX_ROTATE = 20.0f;// 旋转过程中的角度private float currentRotate;@Overridepublic void transformPage(View view, float position) {int pageWidth = view.getWidth();//Log.i("TAG", "view = " + view + ",position = " + position);if (position < -1) {ViewHelper.setRotation(view, 0);} else if (position <= 0) {// position范围[-1.0,0.0],此时A页动画移出屏幕currentRotate = position * MAX_ROTATE;// 设置当前页的旋转中心点,横坐标是屏幕宽度的1/2,纵坐标为屏幕的高度ViewHelper.setPivotX(view, pageWidth / 2);ViewHelper.setPivotY(view, view.getHeight());ViewHelper.setRotation(view, currentRotate);} else if (position <= 1) {// position范围(0.0,1.0],此时B页动画移到屏幕currentRotate = position * MAX_ROTATE;// 设置当前页的旋转中心点,横坐标是屏幕宽度的1/2,纵坐标为屏幕的高度ViewHelper.setPivotX(view, pageWidth / 2);ViewHelper.setPivotY(view, view.getHeight());ViewHelper.setRotation(view, currentRotate);} else {ViewHelper.setRotation(view, 0);}}}


0 0