android - 在 ImageView 上绘制多个图层

标签 android android-canvas android-imageview

我正在尝试按照 Android 开发者网站的说明进行操作,但我一定是做错了什么。

我尝试创建自定义 ImageView 并在其上绘制 2 个位图。

Activity

public class TestActivity extends Activity {    

    @Override
    protected void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test_layout);       
        LinearLayout left = (LinearLayout) findViewById(R.id.container);

        ModuleImageView iv = new ModuleImageView(this);
        left.addView(iv);
        iv.invalidate();
    }
}

ImageView

public class ModuleImageView extends ImageView{ 

    public ModuleImageView(Context context) {
        super(context); 

    }

    @Override
    protected void onDraw(Canvas canvas) {
        Bitmap b1 = BitmapFactory.decodeResource(getResources(), R.drawable.main_engine);
        Bitmap b2 = BitmapFactory.decodeResource(getResources(), R.drawable.energy);
        canvas.drawBitmap(b1, 0, 0, null);
        canvas.drawBitmap(b2, 5, 5, null);

        super.onDraw(canvas);
    }
}

屏幕上没有任何显示,可能是因为没有执行 onDraw 方法。

最佳答案

使用LayerDrawable反而。构造它并传递给普通的 ImageView

关于android - 在 ImageView 上绘制多个图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209195/

相关文章:

java - 我应该使用 Handler 还是 Thread?

java - 从另一个 Activity 编辑数组

Android:绘制多条路径

java - Android Canvas 不绘图

android - 图像和文本居中的 GridView

android - 是什么导致 Android 设备华硕 Zenfone 2 警报管理器无法正常工作?

android - ArgumentMatchers.any 不能为空

java - 如何在 Canvas 中旋转线条

android - 如果 imageview 首先拉伸(stretch)以填充父级,如何保持图像的纵横比

android - 即使在使用高效加载大位图指南后如何避免 OutOfMemoryError