Android实现横向滑动卡片效果

最近项目上需要实现这样效果的一个页面,本来想找个现成的两下搞定,但是问了半天度娘也没招,索性自己琢磨琢磨(这里边也少不了同事的帮助),先把最终的效果图贴上:

Android实现横向滑动卡片效果_第1张图片

理论上讲,其本质并不复杂,就是一个viewpager,但是第一次实现这样的效果还是要花些时间的,具体的代码如下:

主布局文件:activity_show_industry_list.xml,主要就是一个activity上放个viewpager,但是相对布局是关键



  
  
  
 
  

fragment布局文件:fragment_show_industry_list.xml  该布局对应的类比较简单,就不往上贴了


 
  
 
  
 
    
 
    
 
    
 
      
 
        
      
    
  
 
  
 
  

主布局类ShowIndustryListActivity.java

public class ShowIndustryListActivity extends BaseActivity {
  private FragmentPagerAdapter pagerada;
  private ShowIndustryListFragment showIndustryListFragment;
  ShowIndustryListFragment fragment1,fragment2,fragment3,fragment4;
  ArrayList fragments;
  @Bind(R.id.vp_show_industry_list)
  ViewPager viewPager;
  FragmentManager fragmentManager;
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show_industry_list);
    ButterKnife.bind(this);
    fragmentManager = getSupportFragmentManager();
    fragments= new ArrayList();
    fragment1 = new ShowIndustryListFragment();
    fragment2 = new ShowIndustryListFragment();
    fragment3 = new ShowIndustryListFragment();
    fragment4 = new ShowIndustryListFragment();
    fragments.add(fragment1);
    fragments.add(fragment2);
    fragments.add(fragment3);
    fragments.add(fragment4);
 
    viewPager.setOffscreenPageLimit(fragments.size());//卡片数量
    viewPager.setPageMargin(10);//两个卡片之间的距离,单位dp
 
    if (viewPager!=null){
      viewPager.removeAllViews();
    }
 
    MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), fragments);
 
    viewPager.setAdapter(myFragmentPagerAdapter);
  }
 
  class MyFragmentPagerAdapter extends FragmentPagerAdapter {
    private ArrayList listFragments;
  public MyFragmentPagerAdapter(FragmentManager fm, ArrayList al) {
    super(fm);
    listFragments = al;
  }
 
  public MyFragmentPagerAdapter(FragmentManager fm) {
    super(fm);
  }
 
  @Override
  public Fragment getItem(int position) {
    return listFragments.get(position);
  }
 
  @Override
  public int getCount() {
    return listFragments.size();
  }
 
  @Override
  public int getItemPosition(Object object) {
    return super.getItemPosition(object);
  }
}
 
}

至此,效果就可以实现了,上手试试吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(Android实现横向滑动卡片效果)