在 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 - EditText 输入移动 TextView
当我离开我的应用程序时如何停止 MediaPlayer,而不是当我移动到另一个 Activity 时(Android Studio)