当前位置: 代码迷 >> Android >> Android之ViewPager(仿微信引导界面以及动画效果 )(2)
  详细解决方案

Android之ViewPager(仿微信引导界面以及动画效果 )(2)

热度:71   发布时间:2016-04-28 01:48:53.0
Android之ViewPager(仿微信引导界面以及动画效果 )(二)


大多数人想要改造这个世界,但却罕有人想改造自己。


本讲内容:仿微信引导界面以及动画效果


效果图:

   


下面是res/layout/activity_main.xml 布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="wrap_content"    android:layout_height="wrap_content" >    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="match_parent" />    <LinearLayout        android:id="@+id/layout1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_centerHorizontal="true"        android:layout_marginBottom="25dp"        android:orientation="horizontal" >        <ImageView            android:id="@+id/paint0"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:clickable="true"            android:padding="7dp"            android:src="@drawable/page_indicator_focused" />        <ImageView            android:id="@+id/paint1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:clickable="true"            android:padding="7dp"            android:src="@drawable/page_indicator_unfocused" />        <ImageView            android:id="@+id/paint2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:clickable="true"            android:padding="7dp"            android:src="@drawable/page_indicator_unfocused" />        <ImageView            android:id="@+id/paint3"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:clickable="true"            android:padding="7dp"            android:src="@drawable/page_indicator_unfocused" />        <ImageView            android:id="@+id/paint4"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:clickable="true"            android:padding="7dp"            android:src="@drawable/page_indicator_unfocused" />        <ImageView            android:id="@+id/paint5"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:clickable="true"            android:padding="7dp"            android:src="@drawable/page_indicator_unfocused" />    </LinearLayout></RelativeLayout>


下面是res/layout/guide_view01.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:background="@drawable/w01"    android:orientation="vertical" >    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_marginTop="35dp"        android:gravity="center"        android:text="@string/guide_text01"        android:textColor="@color/TextColor"        android:textSize="25sp" /></RelativeLayout>


下面是res/layout/guide_view02.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:background="@drawable/w02"    android:orientation="vertical" >    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_marginTop="35dp"        android:gravity="center"        android:text="@string/guide_text02"        android:textColor="@color/TextColor"        android:textSize="25sp" /></LinearLayout>


下面是res/layout/guide_view03.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:background="@drawable/w03"    android:orientation="vertical" >    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_marginTop="35dp"        android:gravity="center"        android:text="@string/guide_text03"        android:textColor="@color/TextColor"        android:textSize="25sp" /></LinearLayout>

下面是res/layout/guide_view04.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:background="@drawable/w04"    android:orientation="vertical" >    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_marginTop="35dp"        android:gravity="center"        android:text="@string/guide_text04"        android:textColor="@color/TextColor"        android:textSize="25sp" /></LinearLayout>

下面是res/layout/guide_view05.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:background="@drawable/w05"    android:orientation="vertical" >    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_marginTop="35dp"        android:gravity="center"        android:text="@string/guide_text05"        android:textColor="@color/TextColor"        android:textSize="25sp" /></LinearLayout>

下面是res/layout/guide_view06.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:background="@drawable/w06"    android:orientation="vertical" >    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_marginTop="35dp"        android:gravity="center"        android:text="@string/guide_text06"        android:textColor="@color/TextColor"        android:textSize="25sp" />        <Button         android:id="@+id/startBtn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_centerHorizontal="true"        android:layout_gravity="center_vertical"        android:layout_marginBottom="120dp"        android:background="@drawable/start_weixin_btn"        android:text="@string/guide_btn_text"        android:textColor="@color/TextColor"        android:textSize="20sp"/></RelativeLayout>


下面是res/layout/guide_door.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" >    <ImageView        android:id="@+id/imageLeft"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_alignParentLeft="true"        android:scaleType="fitXY"        android:src="@drawable/w_left" />    <ImageView        android:id="@+id/imageRight"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_alignParentRight="true"        android:scaleType="fitXY"        android:src="@drawable/w_right"        android:visibility="visible" />    <TextView        android:id="@+id/anim_text"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_marginTop="35dp"        android:gravity="center"        android:text=" \n \n微信,是一个生活方式\n \n "        android:textColor="#fff"        android:textSize="25sp" /></RelativeLayout>


下面是res/layout/activity_other.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"     android:background="@drawable/bg">    <TextView        android:id="@+id/textView1"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:text="亲,可以开始你的微信生活了!"        android:gravity="center_horizontal|center"        android:textSize="20sp" /></LinearLayout>



 下面是res/drawable/start_weixin_btn.xml 文件:(自定义按钮的效果)

<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/whatsnew_btn_pressed" android:state_enabled="true" android:state_pressed="true"/>    <!-- 按下时的效果 -->    <item android:drawable="@drawable/whatsnew_btn_nor" android:state_enabled="true"/>    <!-- 正常状态的效果 --></selector>


下面是ViewPagerAdapter.java文件:

//ViewPager适配器,用来绑定数据和view  public class ViewPagerAdapter extends PagerAdapter {	 //界面列表	private ArrayList<View> views;	public ViewPagerAdapter(ArrayList<View> views) {		this.views = views;	}	// 获得当前页卡的数量	public int getCount() {		if (views != null) {			return views.size();		}		return 0;	}	// 实例化(初始化)页卡	public Object instantiateItem(View container, int position) {		((ViewPager) container).addView(views.get(position), 0);// 添加页卡		return views.get(position);	}	// 销毁页卡	public void destroyItem(View container, int position, Object object) {		((ViewPager) container).removeView(views.get(position));// 删除页卡	}	// 判断是否由对象生成界面	public boolean isViewFromObject(View arg0, Object arg1) {		return (arg0 == arg1);// 官方提示这样写	}}


下面是MainActivity.java主界面文件:

public class MainActivity extends Activity implements OnPageChangeListener {	private ViewPager viewPager;// 定义ViewPager对象	private ViewPagerAdapter vpAdapter;// 定义ViewPager适配器	private ArrayList<View> views;// 定义一个ArrayList来存放View	// 定义各个界面View对象	private View view1, view2, view3, view4, view5, view6;	// 定义底部小点图片	private ImageView paint0, paint1, paint2, paint3, paint4, paint5;	// 定义开始按钮对象	private Button startBt;	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		initView();		initData();	}	// 初始化组件	private void initView() {		// 实例化各个界面的布局对象		LayoutInflater mLi = LayoutInflater.from(this);		view1 = mLi.inflate(R.layout.guide_view01, null);		view2 = mLi.inflate(R.layout.guide_view02, null);		view3 = mLi.inflate(R.layout.guide_view03, null);		view4 = mLi.inflate(R.layout.guide_view04, null);		view5 = mLi.inflate(R.layout.guide_view05, null);		view6 = mLi.inflate(R.layout.guide_view06, null);		// 实例化ArrayList对象		views = new ArrayList<View>();		// 将要分页显示的View装入数组中		views.add(view1);		views.add(view2);		views.add(view3);		views.add(view4);		views.add(view5);		views.add(view6);		// 实例化ViewPager		viewPager = (ViewPager) findViewById(R.id.viewpager);		// 实例化ViewPager适配器		vpAdapter = new ViewPagerAdapter(views);		// 实例化底部小点图片对象		paint0 = (ImageView) findViewById(R.id.paint0);		paint1 = (ImageView) findViewById(R.id.paint1);		paint2 = (ImageView) findViewById(R.id.paint2);		paint3 = (ImageView) findViewById(R.id.paint3);		paint4 = (ImageView) findViewById(R.id.paint4);		paint5 = (ImageView) findViewById(R.id.paint5);		// 实例化开始按钮		startBt = (Button) view6.findViewById(R.id.startBtn);	}	// 初始化数据	private void initData() {		// 设置监听		viewPager.setOnPageChangeListener(this);		// 设置适配器数据		viewPager.setAdapter(vpAdapter);		// 给开始按钮设置监听		startBt.setOnClickListener(new OnClickListener() {			public void onClick(View v) {				startButton();			}		});	}	// 当滑动状态改变时调用	public void onPageScrollStateChanged(int arg0) {	}	// 当前页面被滑动时调用	public void onPageScrolled(int arg0, float arg1, int arg2) {	}	// 当新的页面被选中时调用	public void onPageSelected(int position) {		switch (position) {		case 0:			paint0.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused));			paint1.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused));			break;		case 1:			paint1.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused));			paint0.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused));			paint2.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused));			break;		case 2:			paint2.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused));			paint1.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused));			paint3.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused));			break;		case 3:			paint3.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused));			paint4.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused));			paint2.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused));			break;		case 4:			paint4.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused));			paint3.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused));			paint5.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused));			break;		case 5:			paint5.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused));			paint4.setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused));			break;		}	}	// 相应按钮点击事件	private void startButton() {		Intent intent = new Intent();		intent.setClass(MainActivity.this, GuideViewDoor.class);		startActivity(intent);		this.finish();	}}


下面是GuideViewDoor.java界面文件:(要注册)

//功能描述:实现动画效果的入口activitypublic class GuideViewDoor extends Activity {	private ImageView mLeft, mRight;// 定义左右两张图片对象	private TextView mText;// 定义一个文本对象	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.guide_door);		// 实例化对象		mLeft = (ImageView) findViewById(R.id.imageLeft);		mRight = (ImageView) findViewById(R.id.imageRight);		mText = (TextView) findViewById(R.id.anim_text);		// 实例化动画对象		AnimationSet anim = new AnimationSet(true);		// 实例化位移动画对象		TranslateAnimation mytranslateanim = new TranslateAnimation(			Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,				-1f, Animation.RELATIVE_TO_SELF, 0f,				Animation.RELATIVE_TO_SELF, 0f);		// 设置动画持续时间		mytranslateanim.setDuration(2000);		// 设置启动时间		anim.setStartOffset(800);		// 将位移动画添加进动画效果中		anim.addAnimation(mytranslateanim);		// 动画结束后,保留在终止位		anim.setFillAfter(true);		// 左边图启动该动画效果		mLeft.startAnimation(anim);		AnimationSet anim1 = new AnimationSet(true);		TranslateAnimation mytranslateanim1 = new TranslateAnimation(			Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,				+1f, Animation.RELATIVE_TO_SELF, 0f,				Animation.RELATIVE_TO_SELF, 0f);		mytranslateanim1.setDuration(1500);		anim1.addAnimation(mytranslateanim1);		anim1.setStartOffset(800);		anim1.setFillAfter(true);		mRight.startAnimation(anim1);// 右边图启动该动画效果		AnimationSet anim2 = new AnimationSet(true);		ScaleAnimation myscaleanim = new ScaleAnimation(1f, 3f, 1f, 3f,		Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);		myscaleanim.setDuration(1000);		AlphaAnimation myalphaanim = new AlphaAnimation(1, 0.0001f);		myalphaanim.setDuration(1500);		anim2.addAnimation(myscaleanim);		anim2.addAnimation(myalphaanim);		anim2.setFillAfter(true);		mText.startAnimation(anim2);// 文字启动该动画效果		//public final boolean postDelayed(Runnable r, long delayMillis)		//从当前时间开始延迟delayMillis时间后执行Runnable,只执行一次		new Handler().postDelayed(new Runnable() {			public void run() {		Intent intent = new Intent(GuideViewDoor.this,OtherActivity.class);				startActivity(intent);				GuideViewDoor.this.finish();			}		}, 2300);	}}


下面是OtherActivity.java界面文件: (要注册)

public class OtherActivity extends Activity {	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_other);	}}



Take your time and enjoy it 要原码的、路过的、学习过的请留个言,顶个呗~~


  相关解决方案