Add new API demos for fragment custom animations.
Change-Id: Ia4339d4e4c1617907a9c707e1b8c2309b303e267
This commit is contained in:
committed by
Dianne Hackborn
parent
ea5c0b0f87
commit
c35d058e8d
@@ -0,0 +1,131 @@
|
||||
/*
|
||||
* Copyright (C) 2010 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.app;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Fragment;
|
||||
import android.app.FragmentTransaction;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
|
||||
/**
|
||||
* Demonstrates the use of custom animations in a FragmentTransaction when
|
||||
* pushing and popping a stack.
|
||||
*/
|
||||
public class FragmentCustomAnimations extends Activity {
|
||||
int mStackLevel = 1;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.fragment_stack);
|
||||
|
||||
// Watch for button clicks.
|
||||
Button button = (Button)findViewById(R.id.new_fragment);
|
||||
button.setOnClickListener(new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
addFragmentToStack();
|
||||
}
|
||||
});
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
// Do first time initialization -- add initial fragment.
|
||||
Fragment newFragment = CountingFragment.newInstance(mStackLevel);
|
||||
FragmentTransaction ft = getFragmentManager().beginTransaction();
|
||||
ft.add(R.id.simple_fragment, newFragment).commit();
|
||||
} else {
|
||||
mStackLevel = savedInstanceState.getInt("level");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putInt("level", mStackLevel);
|
||||
}
|
||||
|
||||
//BEGIN_INCLUDE(add_stack)
|
||||
void addFragmentToStack() {
|
||||
mStackLevel++;
|
||||
|
||||
// Instantiate a new fragment.
|
||||
Fragment newFragment = CountingFragment.newInstance(mStackLevel);
|
||||
|
||||
// Add the fragment to the activity, pushing this transaction
|
||||
// on to the back stack.
|
||||
FragmentTransaction ft = getFragmentManager().beginTransaction();
|
||||
ft.setCustomAnimations(R.animator.fragment_slide_left_enter,
|
||||
R.animator.fragment_slide_left_exit,
|
||||
R.animator.fragment_slide_right_enter,
|
||||
R.animator.fragment_slide_right_exit);
|
||||
ft.replace(R.id.simple_fragment, newFragment);
|
||||
ft.addToBackStack(null);
|
||||
ft.commit();
|
||||
}
|
||||
//END_INCLUDE(add_stack)
|
||||
|
||||
//BEGIN_INCLUDE(fragment)
|
||||
public static class CountingFragment extends Fragment {
|
||||
int mNum;
|
||||
|
||||
/**
|
||||
* Create a new instance of CountingFragment, providing "num"
|
||||
* as an argument.
|
||||
*/
|
||||
static CountingFragment newInstance(int num) {
|
||||
CountingFragment f = new CountingFragment();
|
||||
|
||||
// Supply num input as an argument.
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("num", num);
|
||||
f.setArguments(args);
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
/**
|
||||
* When creating, retrieve this instance's number from its arguments.
|
||||
*/
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mNum = getArguments() != null ? getArguments().getInt("num") : 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* The Fragment's UI is just a simple text view showing its
|
||||
* instance number.
|
||||
*/
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
View v = inflater.inflate(R.layout.hello_world, container, false);
|
||||
View tv = v.findViewById(R.id.text);
|
||||
((TextView)tv).setText("Fragment #" + mNum);
|
||||
tv.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.gallery_thumb));
|
||||
return v;
|
||||
}
|
||||
}
|
||||
//END_INCLUDE(fragment)
|
||||
}
|
||||
@@ -101,6 +101,10 @@
|
||||
<dd>Demonstrates how to display and respond to a context menu that is
|
||||
display from a fragment's view hierarchy.</dd>
|
||||
|
||||
<dt><a href="FragmentCustomAnimation.html">Fragment Custom Animation</a></dt>
|
||||
<dd>Demonstrates the use of a custom animation for pushing and popping fragments
|
||||
on the back stack.</dd>
|
||||
|
||||
<dt><a href="FragmentDialog.html">Fragment Dialog</a></dt>
|
||||
<dd>Demonstrates use of DialogFragment to show various types of dialogs.</dd>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user