package pzl.swipemenu;
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.baoyz.swipemenulistview.SwipeMenu;
import com.baoyz.swipemenulistview.SwipeMenuCreator;
import com.baoyz.swipemenulistview.SwipeMenuItem;
import com.baoyz.swipemenulistview.SwipeMenuListView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private SwipeMenuListView swipeMenuListView;
private MyAdapter adapter;
private List<String> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
swipeMenuListView= (SwipeMenuListView) findViewById(R.id.listView);
initData();
adapter=new MyAdapter();
swipeMenuListView.setAdapter(adapter);
SwipeMenuCreator creator = new SwipeMenuCreator() {
@Override
public void create(SwipeMenu menu) {
// create "open" item
SwipeMenuItem openItem = new SwipeMenuItem(
getApplicationContext());
// set item background
openItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9,
0xCE)));
// set item width
openItem.setWidth(150);
// set item title
openItem.setTitle("Open");
// set item title fontsize
openItem.setTitleSize(18);
// set item title font color
openItem.setTitleColor(Color.WHITE);
// add to menu
menu.addMenuItem(openItem);
// create "delete" item
SwipeMenuItem deleteItem = new SwipeMenuItem(
getApplicationContext());
// set item background
deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9,
0x3F, 0x25)));
// set item width
deleteItem.setWidth(150);
deleteItem.setTitle("Delete");
deleteItem.setTitleSize(18);
deleteItem.setTitleColor(Color.WHITE);
menu.addMenuItem(deleteItem);
}
};
// set creator
swipeMenuListView.setMenuCreator(creator);
swipeMenuListView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
switch (index) {
case 0:
// open
break;
case 1:
// delete
startDeleteAnimator(position);
break;
}
// false : close the menu; true : not close the menu
return false;
}
});
// Left
swipeMenuListView.setSwipeDirection(SwipeMenuListView.DIRECTION_LEFT);
}
private void startDeleteAnimator(final int position) {
View view = swipeMenuListView.getChildAt(position - swipeMenuListView.getFirstVisiblePosition());
ObjectAnimator.ofFloat(view, "alpha", 1, 0).setDuration(20).start();
if (swipeMenuListView.getFirstVisiblePosition() != 0 && swipeMenuListView.getLastVisiblePosition() == swipeMenuListView.getCount() - 1) {
//向下滚
for (int i = position - 1 - swipeMenuListView.getFirstVisiblePosition(); i >= 0; i--) {
View itemView = swipeMenuListView.getChildAt(i);
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(itemView, "translationY", view.getHeight()).setDuration(200);
objectAnimator.start();
if (i == 0) {
objectAnimator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
data.remove(position);
adapter.notifyDataSetChanged();
// 动画结束后,恢复ListView所有子View的属性
for (int i = 0; i < swipeMenuListView.getChildCount(); ++i) {
View v = swipeMenuListView.getChildAt(i);
v.setAlpha(1f);
v.setTranslationY(0);
}
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
}
}
} else {
//向上滚
if (position == swipeMenuListView.getCount() - 1) {
data.remove(position);
adapter.notifyDataSetChanged();
}
for (int i = position + 1 - swipeMenuListView.getFirstVisiblePosition(); i < swipeMenuListView.getChildCount(); i++) {
View itemView = swipeMenuListView.getChildAt(i);
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(itemView, "translationY", -view.getHeight()).setDuration(200);
objectAnimator.start();
if (i == swipeMenuListView.getChildCount() - 1) {
objectAnimator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
data.remove(position);
adapter.notifyDataSetChanged();
// 动画结束后,恢复ListView所有子View的属性
for (int i = 0; i < swipeMenuListView.getChildCount(); ++i) {
View v = swipeMenuListView.getChildAt(i);
v.setAlpha(1f);
v.setTranslationY(0);
}
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
}
}
}
}
private List<String> initData(){
data= new ArrayList<String>();
for(int i=0;i<20;i++){
data.add("哎呀,民咕咕给姑姑咕咕咕咕咕咕咕"+i);
}
return data;
}
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long get
评论0
最新资源