zoukankan      html  css  js  c++  java
  • Android开源框架之SwipeListView导入及模拟QQ侧滑

      SwipeListView是Github上的一个开源框架,地址:https://github.com/47deg/android-swipelistview

      SwipeListView was born out of the need to add swipe gestures to ListView on Android.

      因为开发需要整一个类似QQ侧滑删除的ListView,一开始准备自己写一个自定义layout作为item布局,依稀记得有个叫swipelistview的开源框架,结果还真可以拿来用,效果略有差别,但也满足项目要求了。那么,问题也来了,Github上最后的push的SwipelistView使用的是Gradle来构建,无奈鄙人几个月来一直在用es开始开发,考虑到可能要查看或者修改它的源码,就只好手工转为ecplise下的工程。下面先上Demo说明基本使用方法,方法都很简单,主要是网上搜索的资料都不是很完整,自己写一篇备忘,也供新手朋友们参考,再说说Gradle构建的swipelistview Module如何导入eclipse工程。

      一、引用swipelistview库开发带侧滑+按钮的ListView

        swipelistview的使用同listview的使用方法差不多,因为swipelistview是直接继承于ListView的,只是扩展了一些方法。

        官方给出了再XML布局文件中的基本写法:

     1 <com.fortysevendeg.swipelistview.SwipeListView
     2             xmlns:swipe="http://schemas.android.com/apk/res-auto"
     3             android:id="@+id/example_lv_list"
     4             android:listSelector="#00000000"
     5             android:layout_width="fill_parent"
     6             android:layout_height="wrap_content"
     7             swipe:swipeFrontView="@+id/front"
     8             swipe:swipeBackView="@+id/back"
     9             swipe:swipeActionLeft="[reveal | dismiss]"
    10             swipe:swipeActionRight="[reveal | dismiss]"
    11             swipe:swipeMode="[none | both | right | left]"
    12             swipe:swipeCloseAllItemsWhenMoveList="[true | false]"
    13             swipe:swipeOpenOnLongPress="[true | false]"
    14             swipe:swipeAnimationTime="[miliseconds]"
    15             swipe:swipeOffsetLeft="[dimension]"
    16             swipe:swipeOffsetRight="[dimension]"
    17             />

    各属性说明如下:

    swipeFrontView - Required - front view id.
    swipeBackView - Required - back view id.
    swipeActionLeft - Optional - left swipe action Default: 'reveal'
    swipeActionRight - Optional - right swipe action Default: 'reveal'
    swipeMode - Gestures to enable or 'none'. Default: 'both'
    swipeCloseAllItemsWhenMoveList - Close revealed items on list motion. Default: 'true'
    swipeOpenOnLongPress - Reveal on long press Default: 'true'
    swipeAnimationTime - item drop animation time. Default: android configuration
    swipeOffsetLeft - left offset
    swipeOffsetRight - right offset

    Demo地址,效果图:

    我们自己定义swipelistview的item布局:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 
     3 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     4     android:layout_width="fill_parent"
     5     android:layout_height="fill_parent" >
     6 
     7     <LinearLayout
     8         android:id="@+id/backview"
     9         android:layout_width="match_parent"
    10         android:layout_height="70dp"
    11         android:background="#eee"
    12         android:tag="back" >
    13 
    14         <Button
    15             android:id="@+id/example_1"
    16             android:layout_width="0dp"
    17             android:layout_height="wrap_content"
    18             android:layout_weight="2"
    19             android:background="@null" />
    20 
    21         <Button
    22             android:id="@+id/edit"
    23             android:layout_width="0dp"
    24             android:layout_height="60dp"
    25             android:layout_gravity="center"
    26             android:layout_weight="1"
    27             android:background="@drawable/edit"
    28             android:text="编辑" />
    29 
    30         <Button
    31             android:id="@+id/del"
    32             android:layout_width="0dp"
    33             android:layout_height="60dp"
    34             android:layout_gravity="center"
    35             android:layout_marginLeft="10dp"
    36             android:layout_weight="1"
    37             android:background="@drawable/del"
    38             android:text="删除" />
    39     </LinearLayout>
    40 
    41     <RelativeLayout
    42         android:id="@+id/frontview"
    43         android:layout_width="match_parent"
    44         android:layout_height="70dp"
    45         android:background="#ffffff"
    46         android:orientation="vertical"
    47         android:tag="front" >
    48 
    49         <TextView
    50             android:id="@+id/example_row_tv_title"
    51             android:layout_width="fill_parent"
    52             android:layout_height="wrap_content"
    53             android:layout_centerInParent="true"
    54             android:textSize="16sp" />
    55     </RelativeLayout>
    56 
    57 </FrameLayout>

    在布局swipeview所在布局文件中的定义

     1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     xmlns:swipe="http://schemas.android.com/apk/res-auto"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent"
     6     tools:context=".MainActivity" >
     7 
     8     <com.fortysevendeg.swipelistview.SwipeListView
     9         android:id="@+id/example_lv_list"
    10         android:layout_width="match_parent"
    11         android:layout_height="match_parent"
    12         swipe:swipeActionLeft="reveal"
    13         swipe:swipeActionRight="reveal"
    14         swipe:swipeAnimationTime="0"
    15         swipe:swipeBackView="@+id/backview"
    16         swipe:swipeCloseAllItemsWhenMoveList="true"
    17         swipe:swipeFrontView="@+id/frontview"
    18         swipe:swipeMode="both"
    19         swipe:swipeOffsetLeft="0dp"
    20         swipe:swipeOffsetRight="0dp"
    21         swipe:swipeOpenOnLongPress="false" />
    22 
    23 </RelativeLayout>

      使用注意点:

         为了让每次显示滑动一条数据,需要在你自己实现的BaseSwipeListViewListener中重写onStartOpen方法,在里面调用mSwipeListView.closeOpenedItems()。

      二、导入swipelistview到eclipse工程

        也许有人一看是gradle构建的android项目就不知道怎么办了,以为as构建的项目是不能之间导入eclipse工程的。幸运的是,swipelistview工程极其简洁,手工导入eclipse也是比较的容易的。

        1. 新建一个android工程,勾选标记为libraray,且不用创建activity。

          

        2. 将下载下来的android-swipelistview-master工程中android-swipelistview-masterswipelistviewsrcmainjava下的com文件下直接粘贴到新建工程的src目录下。

    同时把android-swipelistview-masterswipelistviewsrcmain目录下的res资源放到eclipse下新建的Android库工程对应目录下。

        3. 做完上面两部还没有完,因为swipelistview依赖nineoldandroids库,且目前的swipelistview版本依赖nineoldandroids-2.4.0+,下载地址https://github.com/JakeWharton/NineOldAndroids,可以只下载

    nineoldandroids-2.4.0.jar,直接放在新建android库工程的libs目录下即可。至此导入工作完成。

  • 相关阅读:
    Linux常用命令大全(非常全!!!)
    洛谷 P3379 【模板】最近公共祖先(LCA)
    POJ 3259 Wormholes
    POJ 1275 Cashier Employment
    POJ 3169 Layout
    POJ 1201 Intervals
    洛谷 P5960 【模板】差分约束算法
    洛谷 P3275 [SCOI2011]糖果
    POJ 2949 Word Rings
    POJ 3621 Sightseeing Cows
  • 原文地址:https://www.cnblogs.com/HackingProgramer/p/4362371.html
Copyright © 2011-2022 走看看