【发布时间】:2018-03-03 08:33:41
【问题描述】:
我想要的应用程序如下: 当用户单击其中一个按钮时,它会转到另一个包含卡片堆栈视图分页器的卡片活动,用户将读取卡片并在卡片完成后刷卡。然后会出现另一张卡片。如果他回到主要活动并回到卡片活动,那么卡片活动应该从他离开的卡片开始。
这是我的viewpager初始化:
//Viewpager initialization
mViewPager = (ViewPager)findViewById(R.id.viewpager);
CardStackAdapter mAdapter = new CardStackAdapter(getSupportFragmentManager());
mViewPager.setPageTransformer(true,new CardStackTransformer());
mViewPager.setOffscreenPageLimit(6);
mViewPager.setPadding(0,0,0,10);
mViewPager.setAdapter(mAdapter);
这是适配器:
public class CardStackAdapter extends FragmentStatePagerAdapter{
public CardStackAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch(position){
case 0:
return new overview1();
case 1:
return new overview2();
case 2:
return new overview2();
case 3:
return new overview2();
case 4:
return new overview2();
case 5:
return new overview2();
default:
break;
}
return null;
}
@Override
public int getCount() {
return 6;
}
}
这是我的整个活动
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
public class overview extends AppCompatActivity {
private ViewPager mViewPager;
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putInt("ViewPagerPosition",mViewPager.getCurrentItem());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_overview);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
this.setTitle("");
this.getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_close_white_24dp);
this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//Viewpager initialization
mViewPager = (ViewPager)findViewById(R.id.viewpager);
CardStackAdapter mAdapter = new CardStackAdapter(getSupportFragmentManager());
mViewPager.setPageTransformer(true,new CardStackTransformer());
mViewPager.setOffscreenPageLimit(6);
mViewPager.setPadding(0,0,0,10);
mViewPager.setAdapter(mAdapter);
if(savedInstanceState!=null){
int lastPosition = savedInstanceState.getInt("ViewPagerPosition",0);
mViewPager.setCurrentItem(lastPosition);
}
}
public class CardStackAdapter extends FragmentStatePagerAdapter{
public CardStackAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch(position){
case 0:
return new overview1();
case 1:
return new overview2();
case 2:
return new overview2();
case 3:
return new overview2();
case 4:
return new overview2();
case 5:
return new overview2();
default:
break;
}
return null;
}
@Override
public int getCount() {
return 6;
}
}
private class CardStackTransformer implements ViewPager.PageTransformer
{
@Override
public void transformPage(View page, float position)
{
if(position>=0)
{
page.setScaleX(0.93f - 0.015f * position);
page.setScaleY(0.93f);
page.setTranslationX(- page.getWidth()*position);
page.setTranslationY(10 * position);
}
}
}
}
【问题讨论】:
-
尝试 StartActivityForResult 而不是 startActivity()
-
你能详细说明一下吗?
标签: android android-fragments android-viewpager android-cardview android-pageradapter