安卓中的3D立方体动画

6
我希望在安卓平台上实现3D立方体过渡切换视图或活动。我在谷歌上搜索了很多方法,但是没有找到任何有用的安卓资源。我在应用商店中发现了一些应用程序,可以实现我期望的视图或活动变化动画效果。我的预期屏幕输出应该是这样的: enter image description here 我尝试使用转换函数,但无法获得预期的结果。通过搜索,我只找到了在视图或活动之间实现3D翻转动画效果的方法。
请问有哪位可以帮助我实现3D立方体过渡效果在不同视图或活动之间的切换吗?

可能是Android中活动之间的3D“立方体”动画的重复问题。 - Matti Virkkunen
1个回答

16

导入此项目并在项目属性中将其标记为库,然后将其添加到您的项目中。

创建您的活动如下:

package com.example.testcube;


import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;

import com.jfeinstein.jazzyviewpager.JazzyViewPager;
import com.jfeinstein.jazzyviewpager.JazzyViewPager.TransitionEffect;

public class MainActivity extends Activity {

    private JazzyViewPager vpage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Set window fullscreen and remove title bar, and force landscape orientation
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        setupJazziness(TransitionEffect.CubeOut);
    }

    private void setupJazziness(TransitionEffect effect) {
        vpage = (JazzyViewPager) findViewById(R.id.jazzy_pager);
        vpage.setTransitionEffect(effect);
        vpage.setAdapter(new MainAdapter());
        vpage.setPageMargin(0);
    }

    private class MainAdapter extends PagerAdapter {
        @Override
        public Object instantiateItem(ViewGroup container, final int position) {
            TextView text = new TextView(MainActivity.this);
            text.setGravity(Gravity.CENTER);
            text.setTextSize(30);
            text.setTextColor(Color.WHITE);
            text.setText("Page " + position);
            text.setPadding(30, 30, 30, 30);
            int bg = Color.rgb((int) Math.floor(Math.random()*128)+64, 
                    (int) Math.floor(Math.random()*128)+64,
                    (int) Math.floor(Math.random()*128)+64);
            text.setBackgroundColor(bg);
            container.addView(text, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
            vpage.setObjectForPosition(text, position);
            return text;
        }
        @Override
        public void destroyItem(ViewGroup container, int position, Object obj) {
            container.removeView((View) obj);
        }
        @Override
        public int getCount() {
            return 10;
        }
        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == arg1;
        }       
    }

}

而在您的活动XML中应该是这样的

<com.jfeinstein.jazzyviewpager.JazzyViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/jazzy_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />

在这里输入图像描述


你已经下载了上述项目吗?只需将其作为现有的Android项目导入并按照说明编辑主活动即可,无需导入任何其他库。 - Akilan
@Gangnaminmo 不,我不是。 - Akilan
你能提供任何相关链接吗? - Gangnaminmo Ako
@Akilan,我试图在列表视图中使用缩放动画,但这里mJazzy.setTransitionEffect(effect);是view pager的内置方法,所以我无法实现列表视图中的缩放动画。 那么,在滚动时使列表视图项像您的示例一样缩放,是否有可能实现? - kyogs
能否同时在垂直和水平方向上移动页面? - Ganesh Katikar
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接