Android 立方体过渡效果动画在Tabactivity中不工作

Android 立方体过渡效果动画在Tabactivity中不工作,android,Android,我正在制作多维数据集转换效果动画,但当我尝试添加选项卡活动时,它会失去多维数据集转换效果,在没有选项卡的情况下效果很好,我正在使用ToxicBakery/ViewPagerTransforms库来实现此效果 我的代码是 package com.ToxicBakery.viewpager.transforms.example; import android.annotation.SuppressLint; import android.app.TabActivity; import androi

我正在制作多维数据集转换效果动画,但当我尝试添加选项卡活动时,它会失去多维数据集转换效果,在没有选项卡的情况下效果很好,我正在使用ToxicBakery/ViewPagerTransforms库来实现此效果

我的代码是

package com.ToxicBakery.viewpager.transforms.example;

import android.annotation.SuppressLint;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TabHost;
import android.widget.Toast;

import com.ToxicBakery.viewpager.transforms.CubeOutTransformer;

import java.util.ArrayList;

@SuppressLint("ResourceAsColor")
@SuppressWarnings("deprecation")
public class MainActivity extends TabActivity {
    TabHost tabHost;
    ImageButton ib;
    private ViewPager mPager;


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        tabHost = getTabHost();
        setTabs();
    }

    private void setTabs() {
        addTab("", R.drawable.home, HomeActivity.class);
        addTab("", R.drawable.search, ListActivity.class);
        addTab("", R.drawable.camerabg, HomeActivity.class);
        addTab("", R.drawable.like, AlarmActivity.class);
        addTab("", R.drawable.profile, SettingActivity.class);

        ib = (ImageButton) findViewById(R.id.ibHome);
        ib.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Toast.makeText(MainActivity.this, "Hello", Toast.LENGTH_LONG)
                        .show();
            }
        });
    }

    private void addTab(String labelId, int drawableId, Class<?> c) {
        Intent intent = new Intent(this, c);
        TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);

        View tabIndicator = LayoutInflater.from(this).inflate(
                R.layout.tab_indicator, getTabWidget(), false);

        ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
        icon.setImageResource(drawableId);
        spec.setIndicator(tabIndicator);
        spec.setContent(intent);
        tabHost.addTab(spec);


    }

}
package com.ToxicBakery.viewpager.transforms.example;
导入android.annotation.SuppressLint;
导入android.app.TabActivity;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v4.view.ViewPager;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.Window;
导入android.widget.ImageButton;
导入android.widget.ImageView;
导入android.widget.TabHost;
导入android.widget.Toast;
导入com.ToxicBakery.viewpager.transforms.CubeOutTransformer;
导入java.util.ArrayList;
@SuppressLint(“资源色”)
@抑制警告(“弃用”)
公共类MainActivity扩展了TabActivity{
TabHost-TabHost;
图像按钮ib;
私人寻呼机;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
setContentView(R.layout.activity_main);
tabHost=getTabHost();
setTabs();
}
私有void setTabs(){
addTab(“”,R.drawable.home,HomeActivity.class);
addTab(“”,R.drawable.search,ListActivity.class);
addTab(“”,R.drawable.camerabg,HomeActivity.class);
addTab(“”,R.drawable.like,AlarmActivity.class);
addTab(“”,R.drawable.profile,SettingActivity.class);
ib=(ImageButton)findViewById(R.id.ibHome);
ib.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
Toast.makeText(MainActivity.this,“Hello”,Toast.LENGTH\u LONG)
.show();
}
});
}
私有void addTab(字符串labelId,int-drawableId,c类){
意向=新意向(本,c);
TabHost.TabSpec spec=TabHost.newTabSpec(“tab”+labelId);
视图选项卡indicator=layoutinger.from(this).充气(
R.layout.tab_指示器,getTabWidget(),false);
ImageView图标=(ImageView)选项卡indicator.findViewById(R.id.icon);
icon.setImageResource(drawableId);
规格设置指示器(tabIndicator);
规格设置内容(意图);
tabHost.addTab(spec);
}
}
立方体转换活动是

package com.example.turnster;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.os.Bundle;
import android.support.v13.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ImageView;
import android.widget.ListView;

import com.ToxicBakery.viewpager.transforms.CubeOutTransformer;

import java.util.ArrayList;
import java.util.HashMap;

import adapters.SampleAdapter;

public class HomeActivity extends Activity{
    ListView Lv;
    SampleAdapter adapter;
    private PageAdapter mAdapter;
    private ViewPager mPager;
    private static final ArrayList<TransformerItem> TRANSFORM_CLASSES;
    static {
        TRANSFORM_CLASSES = new ArrayList<>();


        TRANSFORM_CLASSES.add(new TransformerItem(CubeOutTransformer.class));
        //TRANSFORM_CLASSES.add(new TransformerItem(CubeInTransformer.class));
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.list_home_lv);
        mPager=(ViewPager)findViewById(R.id.container);
//      Lv = (ListView)findViewById(R.id.listView);
//      ArrayList<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
//      HashMap<String,String> temp4 = new HashMap<String,String>();
//      temp4.put("name", "Korigad");
//      temp4.put("heightt", "3000ft");
//      temp4.put("heightt", "3000ft");
//      temp4.put("heightt", "3000ft");
//      temp4.put("heightt", "3000ft");
//      data.add(temp4);
//      adapter = new SampleAdapter(HomeActivity.this,
//              android.R.layout.simple_list_item_1, data,
//              getApplication());
//      Lv.setAdapter(adapter);
        mAdapter = new PageAdapter(getFragmentManager());

        mPager.setAdapter(mAdapter);


    }
    public static class PlaceholderFragment extends Fragment {

        private static final String EXTRA_POSITION = "EXTRA_POSITION";
        private static final int[] COLORS = new int[] { R.drawable.imgone, R.drawable.imgtwo, R.drawable.imgthree, R.drawable.imgfour };

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            final int position = getArguments().getInt(EXTRA_POSITION);
            final ImageView textViewPosition = (ImageView) inflater.inflate(R.layout.fragment_main, container, false);

            textViewPosition.setBackgroundResource(COLORS[position - 1]);

            return textViewPosition;
        }

    }
    private static final class TransformerItem {

        final String title;
        final Class<? extends ViewPager.PageTransformer> clazz;

        public TransformerItem(Class<? extends ViewPager.PageTransformer> clazz) {
            this.clazz = clazz;
            title = clazz.getSimpleName();
        }

        @Override
        public String toString() {
            return title;
        }

    }
    private static final class PageAdapter extends FragmentStatePagerAdapter {

        public PageAdapter(FragmentManager fragmentManager) {
            super(fragmentManager);
        }

        @Override
        public Fragment getItem(int position) {
            final Bundle bundle = new Bundle();
            bundle.putInt(PlaceholderFragment.EXTRA_POSITION, position + 1);

            final PlaceholderFragment fragment = new PlaceholderFragment();
            fragment.setArguments(bundle);

            return fragment;
        }

        @Override
        public int getCount() {
            return 4;
        }

    }
}
package com.example.turnster;
导入android.app.Activity;
导入android.app.Fragment;
导入android.app.FragmentManager;
导入android.os.Bundle;
导入android.support.v13.app.FragmentStatePagerAdapter;
导入android.support.v4.view.ViewPager;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.view.Window;
导入android.widget.ImageView;
导入android.widget.ListView;
导入com.ToxicBakery.viewpager.transforms.CubeOutTransformer;
导入java.util.ArrayList;
导入java.util.HashMap;
导入adapters.samapter;
公共类HomeActivity扩展了活动{
ListView Lv;
Samapter适配器;
专用页面适配器;
私人寻呼机;
私有静态最终数组列表转换类;
静止的{
TRANSFORM_CLASSES=new ArrayList();
TRANSFORM_CLASSES.add(新TransformerItem(CubeOutTransformer.class));
//TRANSFORM_CLASSES.add(新TransformerItem(CubeInTransformer.class));
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
setContentView(R.layout.list\u home\u lv);
mPager=(ViewPager)findViewById(R.id.container);
//Lv=(ListView)findViewById(R.id.ListView);
//ArrayList数据=新的ArrayList();
//HashMap temp4=新的HashMap();
//temp4.put(“名称”、“科里加特”);
//temp4.put(“高度”、“3000英尺”);
//temp4.put(“高度”、“3000英尺”);
//temp4.put(“高度”、“3000英尺”);
//temp4.put(“高度”、“3000英尺”);
//添加数据(temp4);
//适配器=新的SamdecAdapter(HomeActivity.this,
//android.R.layout.simple_list_item_1,数据,
//getApplication());
//低压设置适配器(适配器);
mAdapter=newpageadapter(getFragmentManager());
mPager.setAdapter(mAdapter);
}
公共静态类占位符片段扩展了片段{
私有静态最终字符串EXTRA\u POSITION=“EXTRA\u POSITION”;
私有静态final int[]COLORS=new int[]{R.drawable.imgone,R.drawable.imgtwo,R.drawable.imgthree,R.drawable.imgfour};
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
final int position=getArguments().getInt(额外位置);
最终图像视图文本视图位置=(图像视图)充气器。充气(R.layout.fragment_main,container,false);
textViewPosition.setBackgroundResource(颜色[position-1]);
返回textViewPosition;
}
}
私有静态最终类TransformerItem{
最后的字符串标题;

final Class您可以使用提供的setPageTransformer()类

MainActivity.java

...
viewPager = (ViewPager)findViewById(R.id.view);
viewPager.setAdapter(new PageAdapter(getSupportFragmentManager()));
viewPager.setPageTransformer(true,new CubeOutPageTransformer());
...
CubeOutPagetTransformer.java

public class CubeOutPageTransformer implements ViewPager.PageTransformer {
    @Override
    public void transformPage(View view, float position) {
        view.setPivotX(position < 0f ? view.getWidth() : 0f);
        view.setPivotY(view.getHeight() * 0.5f);
        view.setRotationY(90f * position);
    }
}
公共类CubeOutPagetTransformer实现ViewPager.PageTransformer{
@凌驾
公共页面(视图、浮动位置){
view.setPivotX(位置<0f?view.getWidth():0f);
view.setPivotY(view.getHeight()*0.5f);
视图。设置旋转Y(90f*位置);
}
}
如果您想使用其他不同的动画,请参考