gpt4 book ai didi

java - Ionic 4 电容器中原生插件动画的视觉错误

转载 作者:行者123 更新时间:2023-12-02 09:36:37 24 4
gpt4 key购买 nike

我目前正在为 Capacitor 开发一个自定义 Android 原生插件。该插件包含在应用程序的页脚中,除了隐藏动画之外,它工作正常。

问题是我每次显示/隐藏页脚时都会更改 WebView 边距,这使得黑色(有时是橙色,可能是因为是应用程序的主要颜色之一)栏出现在页脚占用的空间中。动画结束后黑条就会消失。

我尝试在动画开始/结束时更改 WebView 边距,结果是相同的。

提前感谢大家,这是一些代码。

动画 XML:

<translate
android:duration="150"
android:fromYDelta="0"
android:toYDelta="100%" />

WebView边距函数:

private void changeWebViewMargin(float pixels) {
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) wb.getLayoutParams();
params.setMargins(0, 0, 0, (int) dpTopixel(getContext(), pixels));
wb.setLayoutParams(params);
wb.requestLayout();
}

隐藏功能:

@PluginMethod()
public void hide(PluginCall call) {
Boolean animated = call.getBoolean("animated");

if (animated == null) {
animated = false;
}

final boolean finalAnimated = animated;

this.getBridge().getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if (finalAnimated && footer.getVisibility() == View.VISIBLE) {
changeWebViewMargin(0f);
Animation myAnim = AnimationUtils.loadAnimation(getBridge().getContext(), R.anim.hide_footer);
myAnim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}

@Override
public void onAnimationEnd(Animation animation) {
footer_img.setVisibility(View.INVISIBLE);
footer.setVisibility(View.INVISIBLE);
btn3.setVisibility(View.INVISIBLE);
}

@Override
public void onAnimationRepeat(Animation animation) {
}
});
footer.startAnimation(myAnim);
footer_img.startAnimation(myAnim);
btn3.startAnimation(myAnim);
} else {
footer_img.setVisibility(View.INVISIBLE);
footer.setVisibility(View.INVISIBLE);
btn3.setVisibility(View.INVISIBLE);
changeWebViewMargin(0f);
}
}
});
}

最佳答案

不要使用边距,请尝试使用 WindowInsets :

ViewCompat.setOnApplyWindowInsetsListener(wb, (v, insets) -> {
((ViewGroup.MarginLayoutParams) v.getLayoutParams()).bottomMargin =
insets.getSystemWindowInsetTop() + (int) dpTopixel(getContext(), pixels);
return insets.consumeSystemWindowInsets();
});

关于java - Ionic 4 电容器中原生插件动画的视觉错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57458894/

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