Android实现横向滑动卡片效果

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

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

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent" android:layout_height="match_parent"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:orientation="vertical"
  android:background="@color/colorGrayBg">
  <huazheng.haiereng.views.TitleView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:titleText="搜索框预留位置"
    app:showBackButton="true"
    android:id="@+id/titleView" />
  <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipChildren="false"
    android:layerType="software"
    android:id="@+id/awq_rl_vpc">
  <android.support.v4.view.ViewPager
    android:id="@+id/vp_show_industry_list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:clipChildren="false"
    android:layout_marginLeft="40dp"
    android:layout_marginRight="40dp"
    android:layout_marginBottom="90dp" />

  </RelativeLayout>
</LinearLayout>

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  android:layout_height="match_parent" tools:context="huazheng.haiereng.BlankFragment"
  android:orientation="vertical"
  android:background="@color/colorWhite">

  <!-- TODO: Update blank fragment layout -->

  <FrameLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="300dp" >

    <ImageView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:id="@+id/iv_show_industry_list_pic"
      android:background="@mipmap/show_industry_detail"
      android:layout_gravity="center_horizontal" />

    <FrameLayout
      android:layout_width="match_parent"
      android:layout_height="35dp"
      android:layout_gravity="bottom"
      android:alpha="0.5"
      android:background="#333" />

    <FrameLayout
      android:layout_width="wrap_content"
      android:layout_height="35dp"
      android:layout_gravity="center_horizontal|bottom"
      android:id="@+id/frameLayout" >

      <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textAppearance="?android:attr/textAppearanceMedium"
          android:text="经济型酒店分体空调解决方案"
          android:textColor="@color/colorTextWhite"
          android:layout_gravity="center"
          android:id="@+id/tv_show_industry_list_title" />
      </LinearLayout>
    </FrameLayout>
  </FrameLayout>

  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="广泛应用于住宅地产、宿舍、教学楼、通讯基站等,为其打造舒适空气解决方案"
    android:id="@+id/tv_show_industry_list_detail"
    android:layout_margin="20dp"
    android:textSize="@dimen/font_size_30"
    android:textColor="@color/colorTextGray" />

  <Button
    android:layout_width="120dp"
    android:layout_height="35dp"
    android:text="查看详情"
    android:id="@+id/bt_show_industry_list_cat"
    android:textColor="@color/colorTextWhite"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/drawable_circle_corner" />
</LinearLayout>

主布局类ShowIndustryListActivity.java

public class ShowIndustryListActivity extends BaseActivity {
  private FragmentPagerAdapter pagerada;
  private ShowIndustryListFragment showIndustryListFragment;
  ShowIndustryListFragment fragment1,fragment2,fragment3,fragment4;
  ArrayList<Fragment> 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<Fragment>();
    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<Fragment> listFragments;
  public MyFragmentPagerAdapter(FragmentManager fm, ArrayList<Fragment> 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);
  }
}

}

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

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

(0)

相关推荐

  • Android仿探探卡片式滑动效果实现

    前言 第一次进入探探软件界面,就被这种通过卡片式滑动来选择"喜欢/不喜欢"的设计所吸引了.当时就非常想通过自己来实现这种仿探探式的效果,然而却没什么思路.不过毋庸置疑的是,这种效果的原理肯定和 ListView / RecyclerView 类似,涉及到 Item View 的回收和重用,否则早就因为大量的 Item View 而 OOM 了. 再到后来,看到许多大神也推出了同样仿探探效果的博客,从头到尾阅读下来,写得通俗易懂,基本上没什么问题.于是,实现仿探探效果的想法再次出现在脑海

  • Android自定义View仿探探卡片滑动效果

    Android自定义View仿探探卡片滑动这种效果网上有很多人已经讲解了实现思路,大多都用的是RecyclerView来实现的,但是我们今天来换一种实现思路,只用一个自定义的ViewGroup来搞定这个实现. 下面我们先看一下实现的效果: 这个自定义View用法也很简单,首先从github上下载或者fork这个项目,在布局中添加: <com.liyafeng.view.swipecard.SwipeCardLayout android:id="@+id/scl_layout" a

  • Android实现横向滑动卡片效果

    最近项目上需要实现这样效果的一个页面,本来想找个现成的两下搞定,但是问了半天度娘也没招,索性自己琢磨琢磨(这里边也少不了同事的帮助),先把最终的效果图贴上: 理论上讲,其本质并不复杂,就是一个viewpager,但是第一次实现这样的效果还是要花些时间的,具体的代码如下: 主布局文件:activity_show_industry_list.xml,主要就是一个activity上放个viewpager,但是相对布局是关键 <?xml version="1.0" encoding=&q

  • 利用swift实现卡片横向滑动动画效果的方法示例

    本文主要给大家介绍了关于利用swift实现卡片横向滑动动画效果的相关资料,分享出来供大家参考学习,下面来一起看看详细的介绍吧. 根据惯例,首先上效果图: 那天去面试,面试官突然拿出手机点开了一个app,自个在那点了一会,然后问我 这个效果怎么实现,当时一看可以滑动,肯定用scrollView 或者 collectionView实现,就大概的说了下.今天刚好闲下来,就敲一敲这个效果. 先来分析下这个效果: 卡片是横向滚动,并且每个卡片的位置都是保持在屏幕中间的,而且 左右相邻的卡片都露出来一点边

  • Android自定义横向滑动菜单的实现

    本文讲述了Android自定义横向滑动菜单的实现.分享给大家供大家参考,具体如下: 前言 开发安卓过程中,经常会用到标题栏的样式,有时候传统方式不能满足开发者的需要,这时候就需要自定义控件来实现.(注意:本文提供思路,有关键代码,但是代码不全) 标题栏说明 自定义标题栏ColumnHorizontalScrollView继承HorizontalScrollView 这个安卓原生的控件,HorizontalScrollView是一种FrameLayout(框架布局),其子项被滚动查看时是整体移动的

  • jquery实现仿Flash的横向滑动菜单效果代码

    本文实例讲述了jquery实现仿Flash的横向滑动菜单效果代码.分享给大家供大家参考.具体如下: 这是一个仿Flash的jquery滑动菜单,横向,延时效果明显,如果觉得延时太长的话,自己可以修改参数,通过这个菜单主要是想向大家掌握一些jQuery生成动画的技巧,同时这也是jquery强大功能的体现. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-f-flash-style-move-menu-codes/ 具体代码如下: <!

  • Android SeekBar实现滑动条效果

    本文实例为大家分享了Android SeekBar实现滑动条效果的具体代码,供大家参考,具体内容如下 SeekBar是ProgressBar的一个子类,下面我们用一个可以改变并显示当前进度的拖动条例子来演示一下它的使用: 1.main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/

  • 小程序实现横向滑动日历效果

    本文实例为大家分享了小程序实现横向滑动日历效果的具体代码,供大家参考,具体内容如下 <scroll-view class="scroll-view_H" scroll-x> <view class='list' style='width:{{ width }}rpx'> <view bindtap="select" wx:for="{{ calendar }}" wx:key="" wx:for-

  • Android实现简单底部导航栏 Android仿微信滑动切换效果

    Android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏的设置方法类似于TabLayout的关联,View需要创建关联方法,用来关联VIewPager; 3. 通过关联方法获取ViewPager实例后,根据ViewPager页面数创建底部导航栏的图标按钮; 代码实现: 1. 新建第一个自定义View, 图标 + 文字 的底部按钮; /** * 自定义控件

  • android自定义View滑动删除效果

    View滑动删除效果图 实现功能 1.可以向左滑动,右侧出现删除 2.向左滑动如果删除出现一大半,松手打开删除,反之关闭删除 3.应用场景           微信消息的删除功能 实现原理 1.外面是一个ListView 2.条目是一个自定义控件继承ViewGroup     1).左边一个TextView,右侧屏幕外也有一个TextView     2).所以继承ViewGroup 实现步骤 1.创建一个SlideDeleteView类 1).构造方法要关联 public class Slid

  • 微信小程序实现手势滑动卡片效果

    最近工作中有项目要使用微信小程序技术进行开发,其中一项功能困扰了我很久,卡片滑动动效以及手势识别.经过一番研究和参考,现在把成果展示.记录自己踩到的坑,如果大家有需要,也可以帮助到大家. 效果图: 首先是卡片布局的实现: 图片(一) 如图所示,我采用绝对定位absolute的方式,辅助index,可以实现卡片的层叠效果.注意:三张卡片一定都是相同的定位,否则index可能不起作用. 代码: //设置position: absolute; left:50%:后,再 margin-left:负(一半

  • Android仿人人网滑动侧边栏效果

    很多应用为了节省空间而又使界面能够充足的显示信息,大多数应用都采用了侧边栏的方式,如下图: 来说说它的思路,底下是两个或多个视图,分别通过控制它们的宽度.左边距来控制它们的显示,来看看代码 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

随机推荐