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