Как анимировать один фрагмент внутри Activity на Android?

Я делаю простой буклет, как приложение, в котором MainActivity имеет 1 фрагмент, который содержит многострочный текстовый вид и кнопку. При нажатии кнопки я загружаю новый контент для TextView из базы данных SQLite.

Я хочу поместить анимацию для фрагмента при изменении содержимого, такого как флип.. Я искал много учебников, но нет решения для одного фрагмента.

Мой фрагмент выглядит так... и я хочу показать некоторые эффекты при нажатии 2 изображений (кнопки)

public class DisplayJokesFragment extends Fragment {

 Activity activity;
 TextView joke;
 ImageView imgview1, imgview2;
 private Cursor cursor;

 public static DisplayJokesFragment createFunnyJokesFragment(Cursor cursor) {
 DisplayJokesFragment fragment = new DisplayJokesFragment();
 fragment.setCursor(cursor);
 return fragment;
 }

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

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
 Bundle savedInstanceState) {

 View rootView = inflater.inflate(R.layout.fragment_funny_jokes,
 container, false);
 joke = (TextView) rootView.findViewById(R.id.textView1);
 imgview1 = (ImageView) rootView.findViewById(R.id.imageView1);
 imgview2 = (ImageView) rootView.findViewById(R.id.imageView2);
 return rootView;
 }

 @Override
 public void onActivityCreated(Bundle savedInstanceState) {
 super.onActivityCreated(savedInstanceState);
 init();
 }

 public void init() {
 //MOVE NEXT JOKE
 imgview2.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {

 if (cursor.moveToNext()) {
 joke.setText(Html.fromHtml(cursor.getString(1)));
 } else {
 cursor.moveToFirst();
 joke.setText(Html.fromHtml(cursor.getString(1)));
 }
 }
 }); 

 //MOVE PREVIOUS JOKE
 imgview1.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 if (cursor.moveToPrevious()) {
 joke.setText(Html.fromHtml(cursor.getString(1)));
 } else {
 cursor.moveToLast();
 joke.setText(Html.fromHtml(cursor.getString(1)));
 }
 }
 });
 }
}
1 ответ

Я думаю, вы можете просто настроить анимацию на свой TextView. Когда вы нажмете кнопку - вы начинаете анимацию и устанавливаете некоторый текст в свой вид.

Если вы хотите, вы можете создавать анимацию в xml файле.

Например, вы можете сделать это следующим образом:

final TextView yourTextView = (TextView)findViewById(R.id.yourTextView);
final AlphaAnimation animateS = new AlphaAnimation(1,0);
final AlphaAnimation animateF = new AlphaAnimation(0,1);
animateS.setDuration(700);
animateF.setDuration(700);
animateS.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {

}
@Override
 public void onAnimationEnd(Animation animation) {
 yourTextView.setAnimation(animateF);
 animateF.start();
 yourTextView.setText("New Text");
 }
@Override
 public void onAnimationRepeat(Animation animation) {
}
 });
yourTextView.setText(str);
 yourTextView.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 yourTextView.setAnimation(animateS);
 animateS.start();
 }
 });

licensed under cc by-sa 3.0 with attribution.