activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/coordinator_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#a4ba93"> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Animate Size" android:layout_margin="25dp" android:padding="25dp" android:layout_gravity="top|center_horizontal" android:gravity="center" /> <View android:id="@+id/view_box" android:layout_width="100dp" android:layout_height="100dp" android:background="#ff0000" android:layout_gravity="center" android:layout_margin="15dp" /> </android.support.design.widget.CoordinatorLayout> MainActivity.java
package com.cfsuman.me.androidcodesnippets; import android.app.Activity; import android.content.Context; import android.support.design.widget.CoordinatorLayout; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.transition.ChangeBounds; import android.transition.TransitionManager; import android.view.View; import android.view.ViewGroup; import android.view.animation.AnticipateOvershootInterpolator; import android.widget.Button; public class MainActivity extends AppCompatActivity { private Context mContext; private Activity mActivity; private static simpulan String TAG = MainActivity.class.getSimpleName(); private CoordinatorLayout mCLayout; private Button mButton; private View mViewBox; private boolean isBig = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get the application context mContext = getApplicationContext(); mActivity = MainActivity.this; // Get the widget reference from XML layout mCLayout = (CoordinatorLayout) findViewById(R.id.coordinator_layout); mButton = (Button) findViewById(R.id.btn); mViewBox = (View) findViewById(R.id.view_box); mViewBox.getLayoutParams().width = 400; mViewBox.getLayoutParams().height = 200; // Set a click listener for button mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { /* ChangeBounds This transition captures the layout bounds of target views before and after the scene change and animates those changes during the transition. */ // Initialize a new ChangeBounds transition instance ChangeBounds changeBounds = new ChangeBounds(); // Set the transition start delay changeBounds.setStartDelay(300); // Set the transition interpolator changeBounds.setInterpolator(new AnticipateOvershootInterpolator()); // Specify the transition duration changeBounds.setDuration(1000); // Begin the delayed transition TransitionManager.beginDelayedTransition(mCLayout,changeBounds); // Toggle the button size toggleSize(mViewBox); } }); } // Custom method to toggle view size protected void toggleSize(View v){ ViewGroup.LayoutParams params = v.getLayoutParams(); if(isBig){ params.width = 400; params.height = 200; isBig = false; }else { params.width = ViewGroup.LayoutParams.MATCH_PARENT; params.height = ViewGroup.LayoutParams.MATCH_PARENT; isBig = true; } v.setLayoutParams(params); } }
Komentar
Posting Komentar