展会信息港展会大全

模仿android4.0的 通知栏 listview 滑动删除 item ,有滑动动画
来源:互联网   发布日期:2015-11-26 09:39:15   浏览:4069次  

导读: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.......

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;

/**

* @title 模仿android 4.0 通知栏动画

* @description listview 滑动删除item

* @company 探索者网络工作室(www.tsz.net)

* @author michael Young (www.YangFuhai.com)

* @version 1.0

* @created 2012-9-29

*/

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 :

<?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" />

后记

这个只是一个demo,可能离商用还有一定的距离,我只是给了各位朋友的一些思路,希望通过这个思路能举一反三

赞助本站

人工智能实验室

相关热词: android4.0 滑动

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港