Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何设置对话框动画,使其从屏幕底部滑动到中间而不反弹?_Android_Animation_Android Animation - Fatal编程技术网

Android 如何设置对话框动画,使其从屏幕底部滑动到中间而不反弹?

Android 如何设置对话框动画,使其从屏幕底部滑动到中间而不反弹?,android,animation,android-animation,Android,Animation,Android Animation,我想膨胀一个视图,它将成为我的“无网络对话框”。我创建了一个自定义布局,现在我想将其充气并显示。我遇到的冲突是动画无法工作。我希望对话框从屏幕底部滑到中间,然后在最后反弹。这就是我的工作 styles.xml <!-- animation for network dialog --> <style name="DialogSlideAnim" parent="@android:style/Theme.Dialog"> <item name="android:

我想膨胀一个视图,它将成为我的“无网络对话框”。我创建了一个自定义布局,现在我想将其充气并显示。我遇到的冲突是动画无法工作。我希望对话框从屏幕底部滑到中间,然后在最后反弹。这就是我的工作

styles.xml

<!-- animation for network dialog -->
<style name="DialogSlideAnim" parent="@android:style/Theme.Dialog">
    <item name="android:windowNoTitle">true</item>
    <item name="android:backgroundDimEnabled">true</item>
    <item name="android:windowAnimationStyle">@style/DialogAnimation</item>
</style>

<style name="DialogAnimation">
    <item name="android:windowEnterAnimation">@anim/slide_up_bounce</item>
    <item name="android:windowExitAnimation">@anim/fade_out</item>
</style>
}


此时,对话框立即显示,没有滑动或反弹。我如何解决这个问题,或者我应该尝试采取不同的方法来实现这一点?提前谢谢

我知道怎么做了。与其使用Dialog,不如使用DialogFragment。不管出于什么原因,我的对话框实现是正确的,它只是不适用于动画。以下是我的实现:

public class NetworkDialog extends DialogFragment {

    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(STYLE_NO_FRAME, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
    }

    @Override
    public void onActivityCreated(Bundle arg0) {
        super.onActivityCreated(arg0);
        getDialog().getWindow().getAttributes().windowAnimations = R.style.DialogAnimation;
    }

    @Override
    public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
        final View v = inflater.inflate(R.layout.dialog_network, container, false);
        v.setAlpha(0.5f);
        final ImageButton ibRefresh = (ImageButton) v.findViewById(R.id.ib_refresh);
        ibRefresh.setClickable(true);

        ibRefresh.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MapActivity.rotateImageView(ibRefresh);
            }
        });

        return v;
    }

    @Override
    public void onResume() {
        super.onResume();
    }

    @Override
    public void onPause() {
        super.onPause();
    }
} 
然后我用

NetworkDialog dialogFragment = new NetworkDialog();
dialogFragment.show(getFragmentManager(), "ProgressDialog");

解决方案是将样式作为
对话框
参数传递,如下所示:

Dialog confirm = new Dialog(context, R.style.BottomSheetDialog);

<style name="BottomSheetDialog" parent="Theme.Design.Light.BottomSheetDialog">
    <item name="bottomSheetStyle">@style/bottomSheetStyleWrapper</item>
</style>

<style name="bottomSheetStyleWrapper" parent="Widget.Design.BottomSheet.Modal">
    <item name="android:background">@android:color/transparent</item>
</style>
Dialog confirm=新建对话框(上下文,R.style.BottomSheetDialog);
@style/bottomSheetStyleWrapper
@android:彩色/透明

如何将所有这些标签都放在幻灯片\u up\u bounce.xml中?文件必须有一个根元素:或
NetworkDialog dialogFragment = new NetworkDialog();
dialogFragment.show(getFragmentManager(), "ProgressDialog");
Dialog confirm = new Dialog(context, R.style.BottomSheetDialog);

<style name="BottomSheetDialog" parent="Theme.Design.Light.BottomSheetDialog">
    <item name="bottomSheetStyle">@style/bottomSheetStyleWrapper</item>
</style>

<style name="bottomSheetStyleWrapper" parent="Widget.Design.BottomSheet.Modal">
    <item name="android:background">@android:color/transparent</item>
</style>