问题描述
所以我有一个名为 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());
编辑 2:
我刚刚在 setAllColor()
中尝试了 class Assets extends View
而不是 public class SetAssetColor extends Assets
并且它工作得很好,但我仍然需要将着色放在单独的类中以获得更清晰的代码。这可能吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)