Skip to content

Commit f0bc17c

Browse files
author
silicon ruby
committed
ListView Animation
1 parent 851331a commit f0bc17c

File tree

1 file changed

+142
-0
lines changed

1 file changed

+142
-0
lines changed

ListViewActivity.java

+142
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
package com.example.listviewtest;
2+
3+
import java.util.ArrayList;
4+
5+
import android.app.Activity;
6+
import android.content.Context;
7+
import android.os.Bundle;
8+
import android.util.DisplayMetrics;
9+
import android.view.LayoutInflater;
10+
import android.view.Menu;
11+
import android.view.MenuItem;
12+
import android.view.View;
13+
import android.view.ViewGroup;
14+
import android.view.animation.Animation;
15+
import android.view.animation.ScaleAnimation;
16+
import android.view.animation.TranslateAnimation;
17+
import android.widget.ArrayAdapter;
18+
import android.widget.ListView;
19+
import android.widget.TextView;
20+
21+
public class ListViewActivity extends Activity {
22+
23+
private ListView listview;
24+
private DisplayMetrics metrics;
25+
private int mode = 1;
26+
27+
@Override
28+
protected void onCreate(Bundle savedInstanceState) {
29+
super.onCreate(savedInstanceState);
30+
31+
metrics = new DisplayMetrics();
32+
getWindowManager().getDefaultDisplay().getMetrics(metrics);
33+
34+
listview = new ListView(this);
35+
listview.setFadingEdgeLength(0);
36+
ArrayList<String> strings = new ArrayList<String>();
37+
38+
for (int i = 0; i < 300; i++) {
39+
strings.add("Item:#" + (i + 1));
40+
}
41+
42+
MainAdapter mAdapter = new MainAdapter(this, strings, metrics);
43+
44+
listview.setAdapter(mAdapter);
45+
46+
setContentView(listview);
47+
48+
}
49+
50+
@Override
51+
public boolean onCreateOptionsMenu(Menu menu) {
52+
boolean result = super.onCreateOptionsMenu(menu);
53+
menu.add(Menu.NONE, 1, 0, "1");
54+
menu.add(Menu.NONE, 2, 0, "2");
55+
menu.add(Menu.NONE, 3, 0, "3");
56+
menu.add(Menu.NONE, 4, 0, "4");
57+
return result;
58+
}
59+
60+
@Override
61+
public boolean onOptionsItemSelected(MenuItem item) {
62+
mode = item.getItemId();
63+
return super.onOptionsItemSelected(item);
64+
}
65+
66+
public class MainAdapter extends ArrayAdapter<String> {
67+
private Context context;
68+
private LayoutInflater mInflater;
69+
private ArrayList<String> strings;
70+
private DisplayMetrics metrics_;
71+
72+
private class Holder {
73+
public TextView textview;
74+
}
75+
76+
public MainAdapter(Context context, ArrayList<String> strings,
77+
DisplayMetrics metrics) {
78+
super(context, 0, strings);
79+
this.context = context;
80+
this.mInflater = (LayoutInflater) this.context
81+
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
82+
this.strings = strings;
83+
this.metrics_ = metrics;
84+
}
85+
86+
@Override
87+
public View getView(final int position, View convertView,
88+
ViewGroup parent) {
89+
final String str = this.strings.get(position);
90+
final Holder holder;
91+
92+
if (convertView == null) {
93+
convertView = mInflater.inflate(
94+
android.R.layout.simple_list_item_1, null);
95+
convertView.setBackgroundColor(0xFF202020);
96+
97+
holder = new Holder();
98+
holder.textview = (TextView) convertView
99+
.findViewById(android.R.id.text1);
100+
holder.textview.setTextColor(0xFFFFFFFF);
101+
102+
convertView.setTag(holder);
103+
} else {
104+
holder = (Holder) convertView.getTag();
105+
}
106+
107+
holder.textview.setText(str);
108+
109+
Animation animation = null;
110+
111+
switch (mode) {
112+
case 1:
113+
animation = new TranslateAnimation(metrics_.widthPixels / 2, 0,
114+
0, 0);
115+
break;
116+
117+
case 2:
118+
animation = new TranslateAnimation(0, 0, metrics_.heightPixels,
119+
0);
120+
break;
121+
122+
case 3:
123+
animation = new ScaleAnimation((float) 1.0, (float) 1.0,
124+
(float) 0, (float) 1.0);
125+
break;
126+
127+
case 4:
128+
// non animation
129+
animation = new Animation() {
130+
};
131+
break;
132+
}
133+
134+
animation.setDuration(750);
135+
convertView.startAnimation(animation);// key code
136+
animation = null;
137+
138+
return convertView;
139+
}
140+
}
141+
142+
}

0 commit comments

Comments
 (0)