LenoLen 2015-08-13 06:52 采纳率: 20%
浏览 3013
已采纳

设计一个android引导页面的动画,最好是透明渐变动画效果,求大神帮忙!

设计一个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是依赖于这个包的,你可以用我给的代码试试,不懂的再问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?