• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 package com.example.renderthread;
3 
4 import android.app.Activity;
5 import android.content.Intent;
6 import android.os.Bundle;
7 import android.os.Handler;
8 import android.util.Log;
9 import android.view.HardwareRenderer;
10 import android.view.RenderNodeAnimator;
11 import android.view.View;
12 import android.widget.AdapterView;
13 import android.widget.AdapterView.OnItemClickListener;
14 import android.widget.ListView;
15 import android.widget.SimpleAdapter;
16 
17 import java.util.ArrayList;
18 import java.util.HashMap;
19 import java.util.Map;
20 
21 public class MainActivity extends Activity implements OnItemClickListener {
22 
23     static final int DURATION = 400;
24 
25     static final String KEY_NAME = "name";
26     static final String KEY_CLASS = "clazz";
27 
make(String name)28     static Map<String,?> make(String name) {
29         Map<String,Object> ret = new HashMap<String,Object>();
30         ret.put(KEY_NAME, name);
31         return ret;
32     }
33 
34     @SuppressWarnings("serial")
35     static final ArrayList<Map<String,?>> SAMPLES = new ArrayList<Map<String,?>>() {{
36         for (int i = 1; i < 25; i++) {
37             add(make("List Item: " + i));
38         }
39     }};
40 
41     Handler mHandler = new Handler();
42 
43     @Override
onCreate(Bundle savedInstanceState)44     protected void onCreate(Bundle savedInstanceState) {
45         super.onCreate(savedInstanceState);
46         setContentView(R.layout.activity_main);
47         ListView lv = (ListView) findViewById(android.R.id.list);
48         lv.setDrawSelectorOnTop(true);
49         lv.setAdapter(new SimpleAdapter(this, SAMPLES,
50                 R.layout.item_layout, new String[] { KEY_NAME },
51                 new int[] { android.R.id.text1 }));
52         lv.setOnItemClickListener(this);
53         getActionBar().setTitle("MainActivity");
54     }
55 
56     @Override
onResume()57     protected void onResume() {
58         super.onResume();
59         ListView lv = (ListView) findViewById(android.R.id.list);
60         for (int i = 0; i < lv.getChildCount(); i++) {
61             lv.getChildAt(i).animate().translationY(0).setDuration(DURATION);
62         }
63     }
64 
65     @Override
onItemClick(final AdapterView<?> adapterView, View clickedView, int clickedPosition, long clickedId)66     public void onItemClick(final AdapterView<?> adapterView, View clickedView,
67             int clickedPosition, long clickedId) {
68         int topPosition = adapterView.getFirstVisiblePosition();
69         int dy = adapterView.getHeight();
70         for (int i = 0; i < adapterView.getChildCount(); i++) {
71             int pos = topPosition + i;
72             View child = adapterView.getChildAt(i);
73             float delta = (pos - clickedPosition) * 1.1f;
74             if (delta == 0) delta = -1;
75             RenderNodeAnimator animator = new RenderNodeAnimator(
76                     RenderNodeAnimator.TRANSLATION_Y, dy * delta);
77             animator.setDuration(DURATION);
78             if (child == clickedView) logTranslationY(clickedView);
79             animator.setTarget(child);
80             animator.start();
81             if (child == clickedView) logTranslationY(clickedView);
82         }
83         //mHandler.postDelayed(mLaunchActivity, (long) (DURATION * .4));
84         mLaunchActivity.run();
85     }
86 
logTranslationY(View v)87     private void logTranslationY(View v) {
88         Log.d("RTTest", "View has translationY: " + v.getTranslationY());
89     }
90 
91     private Runnable mLaunchActivity = new Runnable() {
92 
93         @Override
94         public void run() {
95             startActivity(new Intent(MainActivity.this, SubActivity.class));
96             overridePendingTransition(0, 0);
97         }
98     };
99 
100 }
101