在 android Studio 中,我希望当我点击按钮时,下一个活动/片段应该来自右侧

Posted

技术标签:

【中文标题】在 android Studio 中,我希望当我点击按钮时,下一个活动/片段应该来自右侧【英文标题】:In android Studio, I want when i click on button , next activity/fragment should come from right side 【发布时间】:2017-08-08 14:43:11 【问题描述】:

android Studio 中,我希望当我单击按钮时,下一个活动/片段应该来自右侧,并且当前活动应该向左移动。我暗示它在 Activity 上工作但不在适配器上显示错误。

holder.questions.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            Intent i = new Intent(DoctorsProfile.this,Questions.class);
            i.putExtra("DOCTOR_ID",doctor_id);
            startActivity(i);
            overridePendingTransition( R.anim.slide_in_right_up, R.anim.slide_out_right_up);

        
    );

overridePendingTransition 正在处理 Activity 但不适用于 Recyclerview 和 Listview 的适配器,请告知任何其他选项。我希望当我单击 recyclerview 项目时,下一个 Activity 应该使用 overridePendingTransition 导航或来自右侧。

【问题讨论】:

您需要将第二个动画属性设置为“R.anim.slide_out_left_up”而不是“R.anim.slide_out_right_up”。 检查我的答案......它可以帮助你 overridePendingTransition does not work when FLAG_ACTIVITY_REORDER_TO_FRONT is used的可能重复 【参考方案1】:
Fragment fragment = Fragment.newInstance();
    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.setCustomAnimations(R.anim.fragment_slide_left_enter,
            R.anim.fragment_slide_left_exit, R.anim.fragment_slide_right_enter,
            R.anim.fragment_slide_right_exit);
    Utils.addFragmentToActivity(fragmentTransaction, Fragment, R.id
            .content_frame);

【讨论】:

但是您必须创建动画文件,您可以从任何网站轻松找到它..【参考方案2】:

本技巧介绍如何在活动之间切换时更改 Android 的默认动画。 改变两个Activity之间动画的代码很简单:在启动一个新的Intent之后,从当前Activity调用overridePendingTransition()。此方法可从 Android 版本 2.0(API 级别 5)开始使用,它需要两个参数,用于定义当前 Activity 的进入和退出动画。 这是一个例子: //调用一个新的Activity

startActivity(new Intent(this, NewActivity.class));

//设置过渡 -> Android 2.0 及更高版本可用的方法

overridePendingTransition(R.anim.slide_in_right_up, R.anim.slide_out_right_up);

这两个参数是用 XML 文件定义的动画的资源 ID(每个动画一个)。这些文件必须放在应用程序的 res/anim 文件夹中。这些文件的示例可以在 anim 文件夹中的 Android API 演示中找到。

例如代码访问http://www.christianpeeters.com/android-tutorials/tutorial-activity-slide-animation/#more-483

【讨论】:

示例代码访问:christianpeeters.com/android-tutorials/…希望对您有所帮助。【参考方案3】:

像这样更改代码,您必须在适配器中将活动作为上下文传递

holder.questions.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
    Intent i = new Intent(DoctorsProfile.this,Questions.class);
            i.putExtra("DOCTOR_ID",doctor_id);
            Activity activity = (Activity) context;
    activity.startActivity(i);
    activity.overridePendingTransition(R.anim.slide_in_right_up, R.anim.slide_out_right_up);
        
    );

注意:上下文是Activity的基础对象

更新: 我已经检查了接受的答案,但希望您了解每次启动活动时都会调用它,这不应该是最佳实践。如果您想遵循公认的答案,我建议您采用更好的方法。

替代方案: 将捆绑包中的一个参数传递给新活动,以确保来自该特定适配器的转换,因此当您也来自任何其他活动时,不应发生双重转换。

【讨论】:

【参考方案4】:

有一个简单的方法可以做到这一点。只需将 overridePendingTransition 放在下一个 Activity/Fragment 的 OnCreate 方法上。这样下一个 Activity 将根据您的选择来。不需要在适配器上添加 overridePendingTransition。

 @Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ask_question);
    overridePendingTransition( R.anim.slide_in_right_up, R.anim.slide_out_right_up);
  

【讨论】:

在 OnCreate 中调用 overridePendingTransition 的情况下,所有转换都将调用 OnCreate,其中新意图将是此活动。

以上是关于在 android Studio 中,我希望当我点击按钮时,下一个活动/片段应该来自右侧的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 导入类快捷方式

android studio

Android Studio - EditText 输入移动 TextView

Android Studio 中相对布局的动画

我在 android studio 中的位置有问题

当我离开我的应用程序时如何停止 MediaPlayer,而不是当我移动到另一个 Activity 时(Android Studio)