设计一个android引导页面的动画,最好是透明渐变动画效果,大概样式就像APP微信精选那个引导页面那种样式,求大神帮忙给个Demo!
5条回答 默认 最新
- 胖子爱你520 2015-08-14 07:43关注
之前回复的都回复不了,现在重新再给你回复一遍吧,首先创建三个Fragment,我现在给你举一个例子:
public class WelcomeFragment1 extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_welcome1, null); return view; } }
下面是fragment对应的布局文件:
<?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:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:src="@drawable/jpg_1" /> </LinearLayout>
同理,你自己新建另外两个Fragment和布局文件,下面是一个引导页GuideActivity:
package com.example.splashdemo; import java.util.ArrayList; import java.util.List; import com.nineoldandroids.view.ViewHelper; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.Log; import android.view.View; public class GuideActivity extends FragmentActivity { private WelcomeFragment1 fragment1; private WelcomeFragment2 fragment2; private WelcomeFragment3 fragment3; private FragAdapter adapter; private ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_guide); viewPager = (ViewPager) findViewById(R.id.viewpager); List<Fragment> fragments = new ArrayList<Fragment>(); fragment1 = new WelcomeFragment1(); fragment2 = new WelcomeFragment2(); fragment3 = new WelcomeFragment3(); fragments.add(fragment1); fragments.add(fragment2); fragments.add(fragment3); if (adapter == null) { adapter = new FragAdapter(getSupportFragmentManager(), fragments); viewPager.setAdapter(adapter); viewPager.setPageTransformer(true, new RotateDownPageTransformer()); }else{ adapter.notifyDataSetChanged(); } viewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); } @Override protected void onResume() { super.onResume(); } public class FragAdapter extends FragmentPagerAdapter{ private List<Fragment> mFragments; public FragAdapter(FragmentManager fm,List<Fragment> fragments) { super(fm); mFragments = fragments; } @Override public Fragment getItem(int arg0) { return mFragments.get(arg0); } @Override public int getCount() { return mFragments.size(); } } public class RotateDownPageTransformer implements ViewPager.PageTransformer { private static final float ROT_MAX = 20.0f; private float mRot; public void transformPage(View view, float position) { Log.e("TAG", view + " , " + position + ""); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. ViewHelper.setRotation(view, 0); } else if (position <= 1) // a页滑动至b页 ; a页从 0.0 ~ -1 ;b页从1 ~ 0.0 { // [-1,1] // Modify the default slide transition to shrink the page as well if (position < 0) { mRot = (ROT_MAX * position); ViewHelper.setPivotX(view, view.getMeasuredWidth() * 0.5f); ViewHelper.setPivotY(view, view.getMeasuredHeight()); ViewHelper.setRotation(view, mRot); } else { mRot = (ROT_MAX * position); ViewHelper.setPivotX(view, view.getMeasuredWidth() * 0.5f); ViewHelper.setPivotY(view, view.getMeasuredHeight()); ViewHelper.setRotation(view, mRot); } // Scale the page down (between MIN_SCALE and 1) // Fade the page relative to its size. } else { // (1,+Infinity] // This page is way off-screen to the right. ViewHelper.setRotation(view, 0); } } } }
不过你这个时候还需要到网上下载一个jar包,nineoldAndroid.jar,这个jar包主要是兼容3.0以下的,还有上面使用的ViewHelper是依赖于这个包的,你可以用我给的代码试试,不懂的再问。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报