微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使在 android studio 中扩展视图的自定义类无效?

如何解决如何使在 android studio 中扩展视图的自定义类无效?

所以我有一个名为 assets extends view (public class Assets extends View) 的类,我使用 @override onDraw 它将不同的 drawable 绘制到 canvas 中,并且我有一个名为 SetAssetColors 的类扩展了 Assets 类( public class SetAssetColor extends Assets) 负责着色。

着色工作导致当我导航到另一个活动然后返回时我可以看到结果但我无法invalidate();看到结果而不必导航到另一个活动

这是我的代码的样子

颜色选择器对话框启动 onClick 的 Activity

paint.setonClickListener(view -> {
public void colorPicker(View view) {
        AmbilWarnaDialog colorPicker = new AmbilWarnaDialog(this,default_color,new AmbilWarnaDialog.OnAmbilWarnaListener() {
            @Override
            public void onCancel(AmbilWarnaDialog dialog) {}

            @Override
            public void onOk(AmbilWarnaDialog dialog,int color) {

                    setAssetColor.setAllColor(color);
            }
        });
        colorPicker.show();
        });

public class setAssetColor extends Assets 里面我有 setAllColor 方法

public void setAllColor(int color)
    {
        drawable.setTint(color);
// here I'm trying to invalidate directly from the class SetAssetColor because it extends
// the class Assets extends view

        invalidate();

// here I'm trying to get the object of class Assets and use the invalidate method,class Assets is
// initialized in the constructor of class SetAssetColor 

        assets.invalidate();
    }

我还尝试在 invalidate(); 方法调用 onOk 以在触发 onOk 方法时执行。像这样

. . .
            @Override
            public void onOk(AmbilWarnaDialog dialog,int color) {

                    setAssetColor.setAllColor(color);
                    assets.invalidate();


                }
. . .

但是没有一种方法有效,请帮忙。

我正在使用颜色选择器库,它非常有用。你可以在这里找到它:https://github.com/yukuku/ambilwarna

编辑 1:

我只是尝试刷新活动,刷新后结果显示,但它导致用户体验不佳:(

            finish();
            startActivity(getIntent());

代码how to refresh activity

编辑 2:

我刚刚在 setAllColor() 中尝试了 class Assets extends View 而不是 public class SetAssetColor extends Assets 并且它工作得很好,但我仍然需要将着色放在单独的类中以获得更清晰的代码。这可能吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。