Slide out down animation, bounce in down animation : Animation « Animation « Android






Slide out down animation, bounce in down animation

    

package app.test;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.ListFragment;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

class TitlesFragment extends ListFragment {
  private Test myActivity = null;
  int mCurCheckPosition = 0;

  @Override
  public void onInflate(AttributeSet attrs, Bundle icicle) {
    for (int i = 0; i < attrs.getAttributeCount(); i++) {
      Log.v("",attrs.getAttributeName(i) + " = "
              + attrs.getAttributeValue(i));
    }
    super.onInflate(attrs, icicle);
  }

  @Override
  public void onAttach(Activity myActivity) {
    super.onAttach(myActivity);
    this.myActivity = (Test) myActivity;
  }

  @Override
  public void onCreate(Bundle icicle) {
    if (icicle != null) {
      for (String key : icicle.keySet()) {
        Log.v(Test.TAG, "    " + key);
      }
    }super.onCreate(icicle);
    if (icicle != null) {
      mCurCheckPosition = icicle.getInt("curChoice", 0);
    }
  }

  @Override
  public View onCreateView(LayoutInflater myInflater, ViewGroup container,
      Bundle icicle) {
    return super.onCreateView(myInflater, container, icicle);
  }
  @Override
  public void onActivityCreated(Bundle icicle) {
    if (icicle != null) {
      for (String key : icicle.keySet()) {
        Log.v(Test.TAG, "    " + key);
      }
    }
    super.onActivityCreated(icicle);
    setListAdapter(new ArrayAdapter<String>(getActivity(),
        android.R.layout.simple_list_item_1, new String[] { "A", "B",
            "C", "D", }));
    ListView lv = getListView();
    lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    lv.setSelection(mCurCheckPosition);
    myActivity.showDetails(mCurCheckPosition);
  }
  @Override
  public void onStart() {
    super.onStart();
  }
  @Override
  public void onResume() {
    super.onResume();
  }
  @Override
  public void onPause() {
    super.onPause();
  }
  @Override
  public void onSaveInstanceState(Bundle icicle) {
    super.onSaveInstanceState(icicle);
    icicle.putInt("curChoice", mCurCheckPosition);
  }
  @Override
  public void onListItemClick(ListView l, View v, int pos, long id) {
    myActivity.showDetails(pos);
    mCurCheckPosition = pos;
  }
  @Override
  public void onStop() {
    super.onStop();
  }
  @Override
  public void onDestroyView() {
    super.onDestroyView();
  }
  @Override
  public void onDestroy() {
    super.onDestroy();
  }
  @Override
  public void onDetach() {
    super.onDetach();
    myActivity = null;
  }
}
class DetailsActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
      finish();
      return;
    }

    if (getIntent() != null) {
      DetailsFragment details = DetailsFragment.newInstance(getIntent()
          .getExtras());

      getFragmentManager().beginTransaction()
          .add(android.R.id.content, details).commit();
    }
  }
}

class DetailsFragment extends Fragment {
  private int mIndex = 0;
  public static DetailsFragment newInstance(int index) {
    DetailsFragment df = new DetailsFragment();
    Bundle args = new Bundle();
    args.putInt("index", index);
    df.setArguments(args);
    return df;
  }
  public static DetailsFragment newInstance(Bundle bundle) {
    int index = bundle.getInt("index", 0);
    return newInstance(index);
  }

  @Override
  public void onInflate(AttributeSet attrs, Bundle savedInstanceState) {
    for (int i = 0; i < attrs.getAttributeCount(); i++)
      Log.v("",attrs.getAttributeName(i) + " = "
              + attrs.getAttributeValue(i));
    super.onInflate(attrs, savedInstanceState);
  }

  @Override
  public void onAttach(Activity myActivity) {
    super.onAttach(myActivity);
  }
  @Override
  public void onCreate(Bundle myBundle) {
    if (myBundle != null) {
      for (String key : myBundle.keySet()) {
        Log.v(Test.TAG, "    " + key);
      }
    }super.onCreate(myBundle);
    mIndex = getArguments().getInt("index", 0);
  }

  public int getShownIndex() {
    return mIndex;
  }
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.row, container, false);
    TextView text1 = (TextView) v.findViewById(R.id.text1);
    text1.setText("");
    return v;
  }

  @Override
  public void onActivityCreated(Bundle savedState) {
    if (savedState != null) {
      for (String key : savedState.keySet()) {
        Log.v(Test.TAG, "    " + key);
      }
    }
    super.onActivityCreated(savedState);
  }

  @Override
  public void onStart() {
    super.onStart();
  }
  @Override
  public void onResume() {
    super.onResume();
  }
  @Override
  public void onPause() {
    super.onPause();
  }
  @Override
  public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
  }
  @Override
  public void onStop() {
    super.onStop();
  }
  @Override
  public void onDestroyView() {
    super.onDestroyView();
  }
  @Override
  public void onDestroy() {
    super.onDestroy();
  }

  @Override
  public void onDetach() {
    super.onDetach();
  }
}
public class Test extends Activity {
  public static final String TAG = "Test";

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FragmentManager.enableDebugLogging(true);
    setContentView(R.layout.main);
  }
  @Override
  public void onAttachFragment(Fragment fragment) {
    super.onAttachFragment(fragment);
  }
  @Override
  public void onStart() {
    super.onStart();
  }

  @Override
  public void onResume() {
    super.onResume();
  }
  @Override
  public void onPause() {
    super.onPause();
  }
  @Override
  public void onStop() {
    super.onStop();
  }
  @Override
  public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
  }

  @Override
  public void onDestroy() {
    super.onDestroy();
  }

  public boolean isMultiPane() {
    return getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
  }

  public void showDetails(int index) {
    if (isMultiPane()) {
      DetailsFragment details = (DetailsFragment) getFragmentManager()
          .findFragmentById(R.id.details);
      if (details == null || details.getShownIndex() != index) {
        details = DetailsFragment.newInstance(index);
        FragmentTransaction ft = getFragmentManager()
            .beginTransaction();
        ft.setCustomAnimations(R.animator.bounce_in_down,
            R.animator.slide_out_down);
        ft.replace(R.id.details, details);
        ft.commit();
        getFragmentManager().executePendingTransactions();
      }
    } else {
      Intent intent = new Intent();
      intent.setClass(this, DetailsActivity.class);
      intent.putExtra("index", index);
      startActivity(intent);
    }
  }
}

//layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is res/layout/main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <fragment class="app.test.TitlesFragment"
            android:id="@+id/titles"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
            android:background="#00550033" />

    <FrameLayout
            android:id="@+id/details" android:layout_weight="2"
            android:layout_width="0px"
            android:layout_height="match_parent" />
</LinearLayout>

//layout/row.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is res/layout/details.xml -->
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <ScrollView android:id="@+id/scroller" 
      android:layout_width="match_parent"
      android:layout_height="match_parent">
    <TextView android:id="@+id/text1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
  </ScrollView>
</LinearLayout>


//animator/bounce_in_down.xml


<?xml version="1.0" encoding="utf-8" ?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:interpolator/bounce"
    android:valueFrom="-1280"
    android:valueTo="0"
    android:valueType="floatType"
    android:propertyName="Y"
    android:duration="2000" />


//animator/slide_out_down.xml

<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
    android:interpolator="@android:interpolator/accelerate_cubic"
    android:valueFrom="0"
    android:valueTo="1280"
    android:valueType="floatType"
    android:propertyName="Y"
    android:duration="2000" />
<objectAnimator
    android:interpolator="@android:interpolator/accelerate_cubic"
    android:valueFrom="1"
    android:valueTo="0"
    android:valueType="floatType"
    android:propertyName="Alpha"
    android:duration="2000" />
</set>

   
    
    
    
  








Related examples in the same category

1.Animation: fade in, fade out
2.Frame based animation
3.extends Animation to create your own animation
4.XML for Fade in animation
5.Xml for Fade out animation
6.XML for slide out animation
7.Animation Cloning
8.Animation Loading
9.Multi Property Animation
10.Animation: push up in,push up out,push left in,push left out,fade in,fade out,hyperspace in,hyperspace out
11.Using AlphaAnimation class to do animation in code
12.Animation Interpolator
13.Using TranslateAnimation class
14.Demonstrates the seeking capability of ValueAnimator.
15.Animating by calling invalidate() from draw(),loading and drawing resources, handling onPause() in an animation