模仿android4.0的通知栏listview滑动删除item ,有滑动动画。

6 篇文章 0 订阅
4 篇文章 0 订阅

代码详情
代码如下 MainActivity.java :
[java]
package com.yangfuhai.animation1; 
 
import java.util.ArrayList; 
 
import android.app.ListActivity; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 
import android.view.animation.Animation; 
import android.view.animation.Animation.AnimationListener; 
import android.view.animation.AnimationUtils; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 
 
public class MainActivity extends ListActivity { 
    private ArrayList<String> array; 
    private ArrayAdapter<String> adapter; 
     
 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        ListView listView = getListView(); 
        array = new ArrayList<String>(); 
        String aa[] = { "items1", "item2", "items3", "item4", "items5", 
                "item6", "items7", "item8", "items9", "item10", "items11", 
                "item12" }; 
        for (int i = 0; i < aa.length; i++) { 
            array.add(aa[i]); 
        } 
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, array); 
        listView.setAdapter(adapter); 
 
 
        /**
         * 添加listview滑动接听
         */ 
        listView.setOnTouchListener(new OnTouchListener() { 
            float x, y, upx, upy; 
            public boolean onTouch(View view, MotionEvent event) { 
                if (event.getAction() == MotionEvent.ACTION_DOWN) { 
                    x = event.getX(); 
                    y = event.getY(); 
                } 
                if (event.getAction() == MotionEvent.ACTION_UP) { 
                    upx = event.getX(); 
                    upy = event.getY(); 
                    int position1 = ((ListView) view).pointToPosition((int) x, (int) y); 
                    int position2 = ((ListView) view).pointToPosition((int) upx,(int) upy); 
                     
                    if (position1 == position2 && Math.abs(x - upx) > 10) { 
                        View v = ((ListView) view).getChildAt(position1); 
                        removeListItem(v,position1); 
                    } 
                } 
                return false; 
            } 
 
        }); 
         
        /**
         * listview 的item 点击事件
         */ 
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
 
            @Override 
            public void onItemClick(AdapterView<?> parent, View rowView,int positon, long id) { 
                Toast.makeText(rowView.getContext(), "你点击了第" + positon +"位置的item",Toast.LENGTH_SHORT).show(); 
//              removeListItem(rowView, positon); 
            } 
        }); 
    } 
 
     
    /**
     * 删除item,并播放动画
     * @param rowView 播放动画的view
     * @param positon 要删除的item位置
     */ 
    protected void removeListItem(View rowView, final int positon) { 
         
        final Animation animation = (Animation) AnimationUtils.loadAnimation(rowView.getContext(), R.anim.item_anim); 
        animation.setAnimationListener(new AnimationListener() { 
            public void onAnimationStart(Animation animation) {} 
 
            public void onAnimationRepeat(Animation animation) {} 
 
            public void onAnimationEnd(Animation animation) { 
                array.remove(positon); 
                adapter.notifyDataSetChanged(); 
                animation.cancel(); 
            } 
        }); 
         
 
        rowView.startAnimation(animation); 
 
    } 



 




动画文件 item_anim.xml :
[html] 
<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="800" 
    android:fromXDelta="0" 
    android:fromYDelta="0" 
    android:toXDelta="800" 
    android:toYDelta="0" /> 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值