Android 按下“向上”按钮时的自定义活动转换
每当我从当前的活动中按下向上按钮时,父片段都会从右边缘向左滑动,这似乎是默认的转换行为。但我希望父活动从左边缘向右滑动 我已经将Android 按下“向上”按钮时的自定义活动转换,android,android-layout,android-fragments,android-activity,android-actionbar,Android,Android Layout,Android Fragments,Android Activity,Android Actionbar,每当我从当前的活动中按下向上按钮时,父片段都会从右边缘向左滑动,这似乎是默认的转换行为。但我希望父活动从左边缘向右滑动 我已经将onBackPressed与overridePendingTransition和自定义转换xml文件一起使用,但从未调用我的onBackPressed 这是我的java代码 public class TakeOrderItems extends AppCompatActivity { protected void onCreate(Bundle savedInstan
onBackPressed
与overridePendingTransition
和自定义转换xml文件一起使用,但从未调用我的onBackPressed
这是我的java代码
public class TakeOrderItems extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_take_order_items);
//Get the actionbar to set the back button
ActionBar ab = getSupportActionBar();
ab.setDisplayHomeAsUpEnabled(true);
/*
CODE TO CREATE AND DISPLAY EXPANDABLELISTVIEW
*/
@Override
public void onBackPressed() {
super.onBackPressed();
Log.i("Good","back pressed");
overridePendingTransition(R.transition.slide_in,R.transition.slide_out);
}
XML转换文件
slide_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="-100%"
android:toXDelta="0"
android:duration="200" />
</set>
slide_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="100%"
android:duration="200" />
</set>
我已经检查了许多答案,但它们似乎令人困惑且相互矛盾。我认为必须有一种优雅而有效的方法来实现这一点,因为许多应用程序都使用它。请帮助我。谢谢。Put
overridePendingTransition
over callsuper.onBackPressed()
它必须工作向上导航按钮由onOptions ItemSelected
处理。因此,请忽略它:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
请注意,此onOptionsItemSelected
实现假定父活动已经启动,并且是Backback上的下一个活动。除了完成当前任务外,您可能还需要启动它
覆盖活动的finish
方法来设置转换:
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
}
另外,您似乎被overridePendingTransition
方法名称弄糊涂了。它将动画作为参数,而不是过渡
这将是您在
中的幻灯片:
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="-100%"
android:toXDelta="0%"
android:duration="200"/>
</set>
只需将这些文件放在
res/anim
中,而不是res/transition
您可以尝试这种方法,@Override public boolean onKeyDown(int-keyCode,KeyEvent-event-event){if(event.getKeyCode()==KeyEvent.ACTION_-DOWN){}返回super.onKeyDown(keyCode,event);}@Vadivel我不明白这段代码应该做什么。你能解释一下吗。你能解释一下,如何创建动画。幻灯片吗?谢谢。但也没有调用完成。我已经用日志检查过了。哦,很抱歉,我忽略了你的问题。使用Up按钮确实不会调用finish()
。我更新了答案来处理这个问题。非常感谢。明白了。顺便说一句,我想你输入的方法名是OnUpdate ItemSelected,而不是OnOptions ItemSelected。很好!我的复制/粘贴技能折磨了我;-)修好了,谢谢。
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="100%"
android:toXDelta="200%"
android:duration="200"/>
</set>