Android 는 SwipeListView 를 사용 하여 QQ 와 유사 한 슬라이딩 삭제 효 과 를 구현 합 니 다.

QQ 의 슬라이딩 삭제 효과 가 매우 좋 습 니 다.이 효 과 를 실현 하려 면 SwipeListView 를 사용 할 수 있 습 니 다.
1.com.fortyseevendeg.swipelistview 이 항목 을 다운로드 합 니 다.(이전 에는 GitHub 에 있 었 는데,지금 은 GitHub 에 없어 졌 습 니 다.바 이 두 에서 여러 번 다운로드 한 것 입 니 다.)Eclipse 를 가 져 오고 오른쪽 단 추 를 누 르 고 Properties->Android 를 선택 하 십시오.Library 아래 의 IsLibrary 를 선택 하 십시오.

2.프로젝트 MySwipeListView 를 새로 만 들 고 SwipeListView 라 이브 러 리 에 추가 합 니 다.

3.메 인 창 에 SwipeListView 컨트롤 을 넣 습 니 다:

<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"
  android:orientation="vertical"
  android:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  tools:context="com.hzhi.myswipelistview.MainActivity" >
  
    <com.fortysevendeg.swipelistview.SwipeListView
      xmlns:swipe="http://schemas.android.com/apk/res-auto"
      android:id="@+id/exampleSwipeListView"
      android:listSelector="#00000000"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      swipe:swipeBackView="@+id/back"
      swipe:swipeCloseAllItemsWhenMoveList="true"
      swipe:swipeDrawableChecked="@drawable/choice_selected"
      swipe:swipeDrawableUnchecked="@drawable/choice_unselected"
      swipe:swipeFrontView="@+id/front"
      swipe:swipeMode="both" 
      swipe:swipeActionLeft="reveal"
      swipe:swipeActionRight="dismiss"
      swipe:swipeOpenOnLongPress="true"
    />

</LinearLayout>

그 중 두 가지 중요 한 속성:
swipe:swipe FrontView:위의 View,즉 미 끄 러 지지 않 을 때 보 이 는 View.
swipe:swipe BackView:아래 의 View,즉 미 끄 러 진 후에 보 이 는 View.
이 두 View 는 모두 SwipeListView 의 줄 레이아웃 파일 에 정의 되 어 있 습 니 다. 

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
    >
    
  <LinearLayout
    android:id="@+id/back"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#ffcccccc"
    android:gravity="right"
    android:tag="back" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_delete"
        android:text="  "/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_update"
        android:text="  "/>

  </LinearLayout>

  <RelativeLayout
      android:orientation="vertical"
      android:id="@+id/front"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:background="#ffffffff"
  >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/example_row_iv_image"/>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/example_row_iv_image"
        android:id="@+id/example_row_tv_title"/>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/example_row_iv_image"
        android:layout_below="@id/example_row_tv_title"
        android:id="@+id/example_row_tv_description"/>

  </RelativeLayout>  
  
  
</FrameLayout>

SwipeListView 의 줄 레이아웃 파일 은 FrameLayout 레이아웃 을 사용 합 니 다.FrameLayout 에 있 는 모든 하위 요 소 는 FrameLayout 의 왼쪽 상단 에 쌓 여 있 습 니 다. 
4.SwipeListView 는 다른 ListView 와 마찬가지 로 Adapter 도 필요 하 며 사용 방법 도 마찬가지 입 니 다.여 기 는 자세히 말 하지 않 겠 습 니 다. 
5.메 인 창 자바 파일 에서 SwipeListView 기능 을 실현 합 니 다.코드 는 다음 과 같 습 니 다.

package com.hzhi.myswipelistview;

import android.support.v7.app.ActionBarActivity;
import android.util.Log;

import java.util.ArrayList;

import com.fortysevendeg.swipelistview.BaseSwipeListViewListener;
import com.fortysevendeg.swipelistview.SwipeListView;

import android.os.Bundle;

@SuppressWarnings("deprecation")
public class MainActivity extends ActionBarActivity {
  
  protected static final String TAG = "MySwipeListView"; 
  private ArrayList<String> mList;
  private MyAdapter mAdapter;
  private SwipeListView mSwipeListView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    initData();
    mSwipeListView = (SwipeListView) findViewById(R.id.exampleSwipeListView);
    mAdapter = new MyAdapter(this, mList, mSwipeListView); 
    mSwipeListView.setAdapter(mAdapter);
    
    mSwipeListView.setSwipeListViewListener(new BaseSwipeListViewListener(){
      @Override 
      public void onChoiceChanged(int position, boolean selected) 
      { 
        Log.d(TAG, "onChoiceChanged:" + position + ", " + selected); 
      } 
 
      @Override 
      public void onChoiceEnded() 
      { 
        Log.d(TAG, "onChoiceEnded"); 
      } 
 
      @Override 
      public void onChoiceStarted() 
      { 
        Log.d(TAG, "onChoiceStarted"); 
      } 
 
      @Override 
      public void onClickBackView(int position) 
      { 
        Log.d(TAG, "onClickBackView:" + position); 
      } 
 
      @Override 
      public void onClickFrontView(int position) 
      { 
        Log.d(TAG, "onClickFrontView:" + position); 
      } 
 
      @Override 
      public void onClosed(int position, boolean fromRight) 
      { 
        Log.d(TAG, "onClosed:" + position + "," + fromRight); 
      } 
 
      @Override 
      public void onDismiss(int[] reverseSortedPositions) 
      { 
        Log.d(TAG, "onDismiss");       
      } 
 
      @Override 
      public void onFirstListItem() 
      { 
        Log.d(TAG, "onFirstListItem"); 
      } 
 
      @Override 
      public void onLastListItem() 
      { 
        Log.d(TAG, "onLastListItem"); 
      } 
 
      @Override 
      public void onListChanged() 
      { 
        Log.d(TAG, "onListChanged"); 
        mSwipeListView.closeOpenedItems(); 
 
      } 
 
      @Override 
      public void onMove(int position, float x) 
      { 
        Log.d(TAG, "onMove:" + position + "," + x); 
      } 
 
      @Override 
      public void onOpened(int position, boolean toRight) 
      { 
        Log.d(TAG, "onOpened:" + position + "," + toRight); 
      } 
 
      @Override 
      public void onStartClose(int position, boolean right) 
      { 
        Log.d(TAG, "onStartClose:" + position + "," + right); 
      } 
 
      @Override 
      public void onStartOpen(int position, int action, boolean right) 
      { 
        Log.d(TAG, "onStartOpen:" + position + "," + action + "," + right); 
      } 
    });
    
  }
  
  private void initData(){
    mList = new ArrayList<String>(); 
    for (int i = 0; i <= 10; i++) 
      mList.add("   " + i +"   !"); 
  }
  
}

가장 중요 한 코드 는 mSwipeListView 입 니 다.setSwipeListView Listener(new BaseSwipeListView Listener(){})는 이 코드 를 통 해 SwipeListView 컨트롤 에 Listener 를 설정 하여 필요 에 따라 BaseSwipeListView Listener 의 여러 가지 방법 을 다시 불 러 올 수 있 습 니 다. 
실행 결과:

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기