gpt4 book ai didi

android - 如何动画对话框从屏幕底部滑动到中间而不会弹跳?

转载 作者:行者123 更新时间:2023-11-30 01:58:21 25 4
gpt4 key购买 nike

我想膨胀一个将成为我的“无网络对话框”的 View 。我创建了一个自定义布局,我现在想要展开并显示它。我遇到的冲突是动画不起作用。我希望对话框从屏幕底部滑入中间,然后在最后弹跳。这是我正在使用的东西。

样式.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>

这是我的 slide_up_bounce.xml

<scale
android:duration="600"
android:fromXScale="1"
android:fromYScale="0.5"
android:pivotX="50%"
android:pivotY="0%"
android:toXScale="1.0"
android:toYScale="1.0" />

<alpha
android:duration="600"
android:fromAlpha="0.0"
android:toAlpha="1.0" />

<translate
android:duration="600"
android:fromYDelta="50%"
android:toYDelta="0%" />

在实用程序类中,我有一个看起来像这样的方法

public static void networkDialog(Context context) {
final Dialog dialog = new Dialog(context, R.style.DialogAnimation);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.dialog_network, null);
dialog.setContentView(view);

ImageButton ibRefresh = (ImageButton) view.findViewById(R.id.ib_refresh);

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

最佳答案

我想出了如何做到这一点。与其使用Dialog,不如使用DialogFragment。无论出于何种原因,我的 Dialog 实现都是正确的,只是不适用于动画。这是我的实现:

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

关于android - 如何动画对话框从屏幕底部滑动到中间而不会弹跳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31841968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com