如何使在 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 (将#修改为@)