问题是过渡不会起作用,但整个应用程序都运行良好。这只是过渡效果无效。我已经尝试了所有这些,但没有运气。代码中也没有错误我不知道我做错了所以请帮助。这也是我的第一个应用程序,所以请善待。 :) 我没有在pageradapter上包含instantiateitem,因为如果我这样做会有一个nullpointerexception。 :/
activity_main xml
<com.jfeinstein.jazzyviewpager.JazzyViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:app1="http://schemas.android.com/apk/res/com.eight.yamjay"
android:id="@+id/jazzy_pager"
app1:style="cubeout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
主要活动:
公共类MainActivity扩展了FragmentActivity {
//private static FragmentAdapter mAdapter;
private JazzyViewPager mJazzy;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupJazziness(TransitionEffect.CubeIn);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("Toggle Fade");
String[] effects = this.getResources().getStringArray(R.array.jazzy_effects);
for (String effect : effects)
menu.add(effect);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getTitle().toString().equals("Toggle Fade")) {
mJazzy.setFadeEnabled(!mJazzy.getFadeEnabled());
} else {
TransitionEffect effect = TransitionEffect.valueOf(item.getTitle().toString());
setupJazziness(effect);
}
return true;
}
private void setupJazziness(TransitionEffect effect) {
mJazzy = (JazzyViewPager) findViewById(R.id.jazzy_pager);
mJazzy.setTransitionEffect(effect);
mJazzy.setAdapter(new FragmentAdapter(getSupportFragmentManager()));
mJazzy.setPageMargin(30);
}
}
FragmentStatePagerAdapter:
公共类FragmentAdapter扩展了FragmentStatePagerAdapter {
public FragmentAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int position)
{
// TODO Auto-generated method stub
Fragment fragment = new Fragment1();
switch(position){
case 0:
fragment = new Fragment1();
break;
case 1:
fragment = new Fragment2();
break;
case 2:
fragment = new Fragment3();
break;
}
return fragment;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 3;
}
@Override
public boolean isViewFromObject(View view, Object object) {
if(object != null){
return ((Fragment)object).getView() == view;
}else{
return false;
}
}
}
片段1:
公共类Fragment1扩展了Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View v = inflater.inflate(R.layout.fragment1_layout, null);
return v;
}
}
答案 0 :(得分:1)
您必须使用 instantiateItem 导致its author said that。你可以使用这个代码示例,你可以去。
@Override
public Object instantiateItem(ViewGroup container, final int position) {
Object obj = super.instantiateItem(container, position);
mJazzy.setObjectForPosition(obj, position);
return obj;
}
请检查链接。
答案 1 :(得分:0)
您只需调用 MainAdapter 类并覆盖其方法,而不是调用 ScreenSlidePagerAdapter 类。它不是一个巨大的变化。如果你仍然想要我可以给你整个代码以及如何调用MainAdapter类。我也使用ScreenSlidePagerAdapter但后来我改为JazzyViewPager,现在我使用MainAdapter类填充视图寻呼机。您也可以根据滑块的位置传递根视图,而不是像示例中所示传递对象。