我有一个DialogFragment,我在onActivityCreated方法中为进入/退出设置动画,如下所示
@Override
public void onActivityCreated(Bundle arg0) {
super.onActivityCreated(arg0);
getDialog().getWindow()
.getAttributes().windowAnimations = R.style.DialogAnimation;
}
Run Code Online (Sandbox Code Playgroud)
我的DialogAnimation样式文件如下
<style name="DialogAnimation">
<item name="android:windowEnterAnimation">@android:anim/fade_in</item>
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
</style>
Run Code Online (Sandbox Code Playgroud)
这对我有用......
现在我的问题是我希望有两个不同的退出动画,一个用于点击确定按钮,一个用于取消按钮.所以我做的是我尝试在解雇之前更改转换,但它没有工作..任何解决方案如何实现......这就是我的尝试.
@Override
public void onClick(View v) {
getDialog().getWindow()
.getAttributes().windowAnimations = R.style.DialogAnimation2;
this.dismiss();
}
Run Code Online (Sandbox Code Playgroud) 如何向DialogFragment添加动画.我的动画是:
出于动画:
<scale
android:duration="200"
android:fillAfter="false"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="-90%"
android:startOffset="200"
android:toXScale="0.5"
android:toYScale="0.5" />
<translate
android:duration="300"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="-200"
android:toYDelta="-200" />
Run Code Online (Sandbox Code Playgroud)
在动画中:
<scale
android:duration="200"
android:fillAfter="false"
android:fromXScale="0.5"
android:fromYScale="0.5"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="-90%"
android:toXScale="1.0"
android:toYScale="1.0" />
<translate
android:duration="300"
android:fromXDelta="-200"
android:fromYDelta="-200"
android:toXDelta="0"
android:toYDelta="0" />
Run Code Online (Sandbox Code Playgroud)
和我的代码:
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.jump_in, R.anim.jump_out, R.anim.jump_in, R.anim.jump_out);
ft.add(layer_frag, "layer frag");
ft.show(layer_frag).commit();//layer_frag is a class whitch extends DialogFragment
Run Code Online (Sandbox Code Playgroud)
我必须错过一些东西,因为它看起来像以前一样.
<dialog我的导航图中有一个带有进入/退出动画的动画,但动画不适用于对话框。我已经在<fragment节点上测试过它们,它们工作正常。
为了澄清起见,被引用的对话框是一个 DialogFragment
这是限制还是我做错了什么?
这是我的导航图中的相关片段:
<fragment
android:id="@+id/fragment_home"
android:name="com.my.project.fragments.HomeFragment"
android:label="@string/nav_home"
tools:layout="@layout/fragment_home">
<action
android:id="@+id/action_fragment_home_to_fragment_dialog_new_user_welcome"
app:destination="@id/fragment_dialog_new_user_welcome"
app:enterAnim="@anim/nav_fade_enter_anim"
app:exitAnim="@anim/nav_fade_exit_anim"
app:popUpTo="@layout/fragment_home" />
</fragment>
<dialog
android:id="@+id/fragment_dialog_new_user_welcome"
android:name="com.my.project.fragments.NewUserWelcomeDialog"
tools:layout="@layout/fragment_dialog_new_user_welcome">
<action
android:id="@+id/action_fragment_dialog_new_user_welcome_to_activity_discover_detail"
app:destination="@id/fragment_discover_detail"
app:launchSingleTop="true"
app:popUpTo="@id/fragment_home" />
</dialog>
Run Code Online (Sandbox Code Playgroud)
这是输入动画:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="1000"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
Run Code Online (Sandbox Code Playgroud)
这是退出动画:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="500"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
Run Code Online (Sandbox Code Playgroud) 我已经检查了所有关于此的 Stack Overflow Q/A,仍然找不到解决方案。
以下是文件:
对话框片段.java
package app.com.thetechnocafe.mealsquickie.Dialogs;
import android.app.Dialog;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TextInputEditText;
import android.support.design.widget.TextInputLayout;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import app.com.thetechnocafe.mealsquickie.R;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by gurleensethi on 26/01/17.
*/
public class NewCategoryDialog extends DialogFragment {
@BindView(R.id.category_name_text_input_layout)
TextInputLayout mCategoryNameTextInputLayout;
@BindView(R.id.category_name_text_input_edit_text)
TextInputEditText mCategoryNameTextInputEditText;
@BindView(R.id.cancel_button)
Button mCancelButton;
@BindView(R.id.add_button)
Button mAddButton;
private OnAddCategoryListener mListener;
//Interface for callbacks
public interface OnAddCategoryListener {
void onCategoryAdded(String category);
}
//Instance method …Run Code Online (Sandbox Code Playgroud) 我想为我的自定义对话框设置一些动画,我想以编程方式进行.我知道我可以用xml动画这样做:
<style name="DialogAnimation">
<item name="android:windowEnterAnimation">@anim/slide_up_dialog</item>
<item name="android:windowExitAnimation">@anim/slide_out_down</item>
</style>
Dialog imageDiaglog= new Dialog(MainActivity.this,R.style.DialogAnimation);
Run Code Online (Sandbox Code Playgroud)
但我想以编程方式进行.如何将以编程方式创建的动画设置为Dialog的show()和hide()方法?
谢谢.
以下是我的场景。
我有Activity MainActivity一个FAB。当用户点击时FAB,我打开一个全屏DialogFragment。我想打开DialogFragment一些过渡。
这是我迄今为止尝试过的代码。
//MainActivity.java
final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ReviewDialog reviewDialog = ReviewDialog.newInstance();
Slide slide = new Slide();
slide.setSlideEdge(Gravity.LEFT);
slide.setDuration(1000);
reviewDialog.setEnterTransition(slide);
Bundle bundle =ActivityOptions.makeSceneTransitionAnimation(ScrollingActivity.this)
.toBundle();
reviewDialog.setArguments(bundle);
reviewDialog.show(getSupportFragmentManager(),"review");
}
});
Run Code Online (Sandbox Code Playgroud)
这是 DialogFragment ReviewDialog 的代码。
//ReviewDialog.java
public class ReviewDialog extends DialogFragment {
static ReviewDialog newInstance() {
ReviewDialog f = new ReviewDialog();
// Supply num input as an argument.
Bundle args = …Run Code Online (Sandbox Code Playgroud)