繁体   English   中英

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

[英]In android Studio, I want when i click on button , next activity/fragment should come from right side

在Android Studio中,我想当我点击按钮时,下一个活动/片段应该来自右侧,而当前活动应该左移。

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 Adapters上无效,请告知其他选项。 我想当我单击recyclerview项时,下一个Activity应该通过使用overridePendingTransition导航或来自右侧。

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);

本技巧介绍了在“活动”之间切换时如何更改Android的默认动画。 在两个Activity之间更改动画的代码非常简单:在启动新的Intent之后,只需从当前Activity调用overridePendingTransition()。 此方法可从Android 2.0版(API级别5)获得,它具有两个参数,这些参数用于定义当前Activity的输入和退出动画。 这是一个示例://调用一个新的Activity

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

//设置transition->从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

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

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);
        }
    });

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

更新:我已经检查了接受的答案,但是希望您理解,每当您的活动启动时,它就会被调用,那不是最佳实践。 如果您要遵循已接受的答案,我建议采用更好的方法。

替代方法:将捆绑软件中的一个参数传递给新活动,以确保来自该特定适配器的过渡,这样当您也来自任何其他活动时,就不会发生双重转换。

有一个简单的方法可以做到这一点。 只需将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);
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM