Home | History | Annotate | Download | only in renderthread
      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 
     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
     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
     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
     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 
     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