Android:在 View Canvas 上绘图不起作用

标签 android canvas drawing

我正在尝试在所有按钮下的 Canvas 上绘制一个形状。 这是代码:

Paint paint = new Paint();
paint.setColor(R.color.Kolor);

View view; 
LayoutInflater inflater = (LayoutInflater)
getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
view = inflater.inflate(R.layout.menu_glowne, null);

Canvas can = new Canvas(Bitmap.createBitmap(300, 300, Bitmap.Config.ARGB_8888));
can.drawRect(0, 0, 200, 200, paint);

setContentView(view);

view.draw(can);

不知道为什么我得到的布局仍然没有在下面绘制任何东西。 对我做错了什么有什么想法吗?

提前致谢!

最佳答案

在您的示例中,您是在 Canvas 上而不是在 View 的 Canvas 上绘制 View 。 你应该使用一个简单的方法,不要膨胀你的布局,而是正常加载它,然后找到根容器并设置它的背景。像这样:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Paint paint = new Paint();
    paint.setColor(Color.MAGENTA);
    Bitmap bgr = Bitmap.createBitmap(480, 800, Bitmap.Config.ARGB_8888); 
    Canvas can = new Canvas(bgr);  
    can.drawRect(50, 50, 200, 200, paint);  
    LinearLayout ll = (LinearLayout) findViewById(R.id.ll); 
    ll.setBackgroundDrawable(new BitmapDrawable(bgr));    

}

主要布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:id="@+id/ll">
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
</LinearLayout>

关于Android:在 View Canvas 上绘图不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7257678/

相关文章:

android - 无法恢复我的 android c++ 游戏的状态(state->savedState 始终为 NULL)

android - 有什么方法可以在 Android native 代码中获取全局变量 gDVM?

iphone - 在 ios7 中绘图时滞后

canvas - JavaFX Canvas 绘制了很多对象(<250.000 => 500x500px)

opengl-es - 如何在OpenGL ES 2.0中绘制反锯齿线?

android - eclipse 3.5 + ADT : build path errors

php - 如何使用 heatmap.js 保存 canvas 标签生成的图像文件?

javascript - 如何在运行时在 HTML5 Canvas 中绘制正方形?

javascript - Canvas 形状缩放

java - postDelayed 是否导致消息跳到队列的前面?