有多种fragment之间切换的效果,效果是这样的:

Demo的实现是很简单的。

在res/values中,新建一个arrays.xml文件,存放Fragment动画效果的名称,在spinner中使用:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <string-array name="array_spinner">
  4. <item>SCALEX</item>
  5. <item>SCALEY</item>
  6. <item>SCALEXY</item>
  7. <item>FADE</item>
  8. <item>FLIP_HORIZONTAL</item>
  9. <item>FLIP_VERTICAL</item>
  10. <item>SLIDE_VERTICAL</item>
  11. <item>SLIDE_HORIZONTAL</item>
  12. <item>SLIDE_HORIZONTAL_PUSH_TOP</item>
  13. <item>SLIDE_VERTICAL_PUSH_LEFT</item>
  14. <item>GLIDE</item>
  15. <item>SLIDING</item>
  16. <item>STACK</item>
  17. <item>CUBE</item>
  18. <item>ROTATE_DOWN</item>
  19. <item>ROTATE_UP</item>
  20. <item>ACCORDION</item>
  21. <item>TABLE_HORIZONTAL</item>
  22. <item>TABLE_VERTICAL</item>
  23. <item>ZOOM_FROM_LEFT_CORNER</item>
  24. <item>ZOOM_FROM_RIGHT_CORNER</item>
  25. <item>ZOOM_SLIDE_HORIZONTAL</item>
  26. <item>ZOOM_SLIDE_VERTICAL</item>
  27. </string-array>
  28. </resources>

两个空的fragment的布局(都有一样):

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <com.desarrollodroide.libraryfragmenttransactionextended.SlidingRelativeLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:background="@drawable/back1" >
  7. <TextView
  8. android:layout_centerInParent="true"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:text="Fragment1"
  12. android:textColor="#FF009922"
  13. android:textSize="20dp"/>
  14. </com.desarrollodroide.libraryfragmenttransactionextended.SlidingRelativeLayout>

主部局:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical">
  6. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  7. android:layout_width="match_parent"
  8. android:layout_height="wrap_content"
  9. android:orientation="horizontal">
  10. <Spinner
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:layout_weight="1"
  14. android:id="@+id/spinner" />
  15. <Button
  16. android:id="@+id/button"
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:onClick="addTransition"
  20. android:text="Push" />
  21. </LinearLayout>
  22. <com.desarrollodroide.libraryfragmenttransactionextended.SlidingRelativeLayout
  23. android:id="@+id/fragment_place"
  24. android:layout_marginLeft="10dp"
  25. android:layout_marginRight="10dp"
  26. android:layout_marginBottom="10dp"
  27. android:layout_marginTop="20dp"
  28. android:layout_width="match_parent"
  29. android:layout_height="match_parent">
  30. </com.desarrollodroide.libraryfragmenttransactionextended.SlidingRelativeLayout>
  31. </LinearLayout>

MAinActivity:

  1. package com.example.scxh.testfragmenttransaction;
  2. import android.app.FragmentManager;
  3. import android.app.FragmentTransaction;
  4. import android.os.Bundle;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.view.View;
  7. import android.widget.AdapterView;
  8. import android.widget.ArrayAdapter;
  9. import android.widget.Button;
  10. import android.widget.Spinner;
  11. import com.desarrollodroide.libraryfragmenttransactionextended.FragmentTransactionExtended;
  12. public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
  13. private int optionSelected = 0;
  14. private BlankFragment mFirstFragment;
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_main);
  19. Spinner spinner = (Spinner) findViewById(R.id.spinner);
  20. ArrayAdapter adapter=ArrayAdapter.createFromResource(this,R.array.array_spinner,android.R.layout.simple_spinner_item);
  21. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  22. spinner.setAdapter(adapter);
  23. spinner.setOnItemSelectedListener(this);
  24. mFirstFragment=new BlankFragment();
  25. getFragmentManager().beginTransaction()
  26. .add(R.id.fragment_place,mFirstFragment).commit();
  27. }
  28. public void addTransition(View view) {
  29. Button button = (Button) findViewById(R.id.button);
  30. if (getFragmentManager().getBackStackEntryCount() == 0) {
  31. BlankFragment2 fragment2 = new BlankFragment2();
  32. FragmentManager manager = getFragmentManager();
  33. FragmentTransaction transaction=manager.beginTransaction();
  34. FragmentTransactionExtended fragmentTransactionExtended = new FragmentTransactionExtended(this, transaction, mFirstFragment, fragment2, R.id.fragment_place);
  35. fragmentTransactionExtended.addTransition(optionSelected);
  36. fragmentTransactionExtended.commit();
  37. button.setText("Back");
  38. }else{
  39. getFragmentManager().popBackStack();
  40. button.setText("Push");
  41. }
  42. }
  43. @Override
  44. public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
  45. optionSelected = position;
  46. }
  47. @Override
  48. public void onNothingSelected(AdapterView<?> parent) {
  49. }
  50. @Override
  51. public void onBackPressed(){
  52. Button button = (Button) findViewById(R.id.button);
  53. button.setText("Push");
  54. super.onBackPressed();
  55. }
  56. }

Android FragmentTransactionExtended:使Fragment以多种样式动画切换的更多相关文章

  1. Android Activity和Fragment的转场动画

    Android Activity和Fragment的转场动画 Activity转场动画 Activity的转场动画是通过overridePendingTransition(int enterAnim, ...

  2. [转]Android Activity和Fragment的转场动画

    Android Activity和Fragment的转场动画 Activity转场动画 Activity的转场动画是通过overridePendingTransition(int enterAnim, ...

  3. Android中通过Fragment进行简单的页面切换

    首先是activity中的布局 <?xml version="1.0" encoding="utf-8"?> <androidx.constr ...

  4. android中viewPager+fragment实现的屏幕左右切换(进阶篇)

    Fragment支持在不同的Activity中使用并且可以处理自己的输入事件以及生命周期方法等.可以看做是一个子Activity. 先看一下布局: 1 <LinearLayout xmlns:a ...

  5. Android编程之Fragment使用动画造成Unknown animation name: objectAnimator异常

    在为Fragment做切换动画.启动后遇到了一个异常: Caused by: java.lang.RuntimeException: Unknown animation name: objectAni ...

  6. 【Android初级】如何实现一个有动画效果的自定义下拉菜单

    我们在购物APP里面设置收货地址时,都会有让我们选择省份及城市的下拉菜单项.今天我将使用Android原生的 Spinner 控件来实现一个自定义的下拉菜单功能,并配上一个透明渐变动画效果. 要实现的 ...

  7. Android系列之Fragment(四)----ListFragment的使用

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  8. Android类参考---Fragment

    Android类参考---Fragment public final boolean isAdded() 如果该Fragment对象被添加到了它的Activity中,那么它返回true,否则返回fal ...

  9. Android -- TabHost、Fragment、状态保存、通信

    工程结构                                                                                       TabAFm到Ta ...

随机推荐

  1. [转]VB Winsock 控件TCP与UDP连接实例

    [-] 可能的用途 选择通讯协议 协议的设置 确定计算机的名称 TCP 连接初步 接受多个连接请求 UDP 初步 关于 Bind 方法   利用 WinSock 控件可以与远程计算机建立连接,并通过用 ...

  2. NPOI分层导出

    using NPOI.HSSF.UserModel; using NPOI.POIFS.FileSystem; using org.in2bits.MyXls; using System; using ...

  3. 创建EF数据模型

    最后的应用程序,看上去就像下边这样: 创建数据模型,你将从以下三个类开始: 在Models文件夹,新建以下类: using System; using System.Collections.Gener ...

  4. UTF-8 ->GBK

    /** * GBK->UTF8 */ //方法一 旧方法 //NSString *encode1 = [@"%E6%88%91" stringByReplacingPerce ...

  5. 【iOS实现一个颜色渐变的弧形进度条】

    在Github上看到一些进度条的功能,都是通过Core Graph来实现.无所谓正确与否,但是开发效率明显就差很多了,而且运行效率还是值得考究的.其实使用苹果提供的Core Animation能够非常 ...

  6. Java Web之JavaBean

    一.什么是javaBean javaBean是一个遵循特定写法的java类,通常具有如下的特点: 这个java类必须具有一个无参的构造函数. 属性必须私有化. 私有化的属性必须通过public类型的方 ...

  7. Javascript 知识点整理

    1.十进制和十六进制相互转换 /* 十六进制转十进制 */ var test = FF; var x = parseInt(test ,16); //方法一 x = parseInt('0x'+tes ...

  8. [地图SkyLine二次开发]框架(3)

    上节将显示我们地图的OBJECT控件,布了一下局,但地图没有进行加载. 这是因为我们要在另一个页面,对OBJECT控件进行地图加载,并且得到该控件的sgworld,以便对其进行我们想要的开发. 这里, ...

  9. 手把手教你写Sublime中的Snippet

    手把手教你写Sublime中的Snippet Sublime Text号称最性感的编辑器, 并且越来越多人使用, 美观, 高效 关于如何使用Sublime text可以参考我的另一篇文章, 相信你会喜 ...

  10. Comparator

    1.java.util.Comparator 一个实现了comparator接口的对象能够对比不同的对象.它不能用于同一个类的不同实例的对比,但是可以用于其他的类的实例做对比.必须实现java.uti ...