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