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

问题描述

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

设计一个android引导页面的动画,最好是透明渐变动画效果,大概样式就像APP微信精选那个引导页面那种样式,求大神帮忙给个Demo!

解决方案

之前回复的都回复不了,现在重新再给你回复一遍吧,首先创建三个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是依赖于这个包的,你可以用我给的代码试试,不懂的再问。

解决方案二:

用ViewPager,设置监听器OnPageChangeListener,里面有个方法可以知道页面滑动切换的程度,此时设置透明度,形成动画

建议看看相关资料

解决方案三:

 public class DepthPageTransformer implements ViewPager.PageTransformer {
        private static final float MIN_SCALE = 0.75f;

        public void transformPage(View view, float position) {
            int pageWidth = view.getWidth();

            if (position < -1) { // [-Infinity,-1)
                // This page is way off-screen to the left.
                view.setAlpha(0);

            } else if (position <= 0) { // [-1,0]
                // Use the default slide transition when moving to the left page
                view.setAlpha(1);
                view.setTranslationX(0);
                view.setScaleX(1);
                view.setScaleY(1);

            } else if (position <= 1) { // (0,1]
                // Fade the page out.
                view.setAlpha(1 - position);

                // Counteract the default slide transition
                view.setTranslationX(pageWidth * -position);

                // Scale the page down (between MIN_SCALE and 1)
                float scaleFactor = MIN_SCALE + (1 - MIN_SCALE)
                        * (1 - Math.abs(position));
                view.setScaleX(scaleFactor);
                view.setScaleY(scaleFactor);

            } else { // (1,+Infinity]
                // This page is way off-screen to the right.
                view.setAlpha(0);
            }
        }
    }

通过mViewPager.setPageTransformer(true, new DepthPageTransformer());调用就可以实现比较酷炫的动画效果。

解决方案四:

如果有不懂的再问我。

解决方案五:

我被禁言了是怎么回事,回复不了了。

时间: 2024-09-09 12:37:47

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

设计-接受到一个任务,以自己现有的知识还不能解答,求大神帮忙

问题描述 接受到一个任务,以自己现有的知识还不能解答,求大神帮忙 题目:设计一个计时器. 2.功能要求: 完全模拟计时器实现(时间精确到 秒 即可) 1.计时器的开始功能 例如:键盘按键a 开始计时. 2.计时器的暂停功能 例如:键盘按键空格键 计时暂停 3.计时器的停止功能 例如:键盘按键s 计时停止 4.一次计时结束之后,可以再次计时(也就说,如果当前计时停止,按a键可以重新开始下一轮计时) 5.其他功能可以根据需要增加(例如:实现同时多组计时....) 3.实现要求: 1.利用C++中面向

android 类qq空间图片查看器。出现好多错误 求大神帮忙。小女涉入甚浅。

问题描述 android 类qq空间图片查看器.出现好多错误 求大神帮忙.小女涉入甚浅. 11-20 11:26:39.629: E/AndroidRuntime(1136): FATAL EXCEPTION: main 11-20 11:26:39.629: E/AndroidRuntime(1136): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.desktop/co

android播放器点播放后,出现以下错误,求大神帮忙解决

问题描述 android播放器点播放后,出现以下错误,求大神帮忙解决 解决方案 权限设置没设置,要在配置文件把android.permission.access_network_state这个权限加进去

设计-关于一个单词匹配的题目,得不到想要的结果,贴出源程序,求大神帮忙~~~

问题描述 关于一个单词匹配的题目,得不到想要的结果,贴出源程序,求大神帮忙~~~ #include#include#include#include#includeint IsOneCharDifferent(char array[255]);int IsIt(char array[255]);int IsMoreOrLessOneChar(char array[255]);//************************************************************

android:windowIsTranslucent导致转场动画无效,求大神帮忙

问题描述 android:windowIsTranslucent导致转场动画无效,求大神帮忙 最近在使用SwipeBackLayout,由于要用到android:windowIsTranslucent为true才不会黑屏,,但是转场动画无效了,,看了很多人说用android:windowAnimationStyle要继承@android:style/Animation.Translucent就可以了,,,但是看了@android:style/Animation.Translucent里面,,用到

汇编设计-求大神帮忙写一个汇编程序设计

问题描述 求大神帮忙写一个汇编程序设计 汇编实现猜数字游戏 首先用户输入猜的次数, 游戏开始循环. 数字有四位,格式为: 1234 每次用户输入一个数字,游戏都会显示四个字符: A 代表数字和位置都正确 B 代表数字正确, 但是位置不对 ?代表没有这个数字 比如: 假如要猜的数字是4321, 用户输入4321, 程序显示AAAA, 用户获胜! 假如要猜的数字是4321, 用户输入1234, 程序显示BBBB 假如要猜的数字是4321, 用户输入5674, 程序显示???B 假如要猜的数字是432

急!求大神帮忙!!!android棋类游戏!

问题描述 急!求大神帮忙!!!android棋类游戏! 求个android版斗兽棋的源码参考学习一下,有蓝牙联机功能最好了..或者军旗源码也行,有暗棋的游戏方式!大神们~~ 解决方案 国际象棋https://github.com/jcarolus/android-chess 中国象棋https://github.com/zhijie/ChineseChess4Android 解决方案二: 楼主,课程设计要自己完成呀!给自己的大学一个好的交代

recyclerview-进入页面虚拟机崩溃,找不到错误,求大神帮改下源码,谢谢啦

问题描述 进入页面虚拟机崩溃,找不到错误,求大神帮改下源码,谢谢啦 import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.widget.DefaultItemAnimator;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.Sta

js-jqery循环嵌入循环,发现只能选中一个,求大神帮忙看看怎么弄

问题描述 jqery循环嵌入循环,发现只能选中一个,求大神帮忙看看怎么弄 遇到一个jqery循环的问题 求大神帮忙看看 我数据库里面获取到是数据是这样的格式 1.xxx,2xxx,3xxx 然后我进行截取,转换成了数组,然后进行循环这个数组 然后在循环里面嵌入循环,用于循环获取这些数据 然后数据进行比对,对上了,就选择 我现在发现只能选中一个 求解 解决方案 你这么弄,我也不清楚什么原因,或者你说你想要实现什么效果,我帮你调调 解决方案二: this用对了吗????? 解决方案三: var st