ViewFlipper:在视图上绘制画布

时间:2011-08-11 08:59:47

标签: android layout view canvas viewflipper

我正在使用ViewFlipper翻转活动中的多个视图。 因此,我以这种方式在活动布局中包含我的视图布局:

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/profileSwitcher"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

   <include android:id="@+id/inc1" layout="@layout/chart" />
   <include android:id="@+id/inc2" layout="@layout/temp" />


翻转做得很好。

我的布局chart

<?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">

<View android:id="@+id/viewChart" android:layout_width="match_parent"
    android:layout_height="fill_parent" />

<TextView android:text="chart" android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:textColor="#fff" />

</LinearLayout>

我想在视图viewChart上用画布绘制。所以我想我可以用这段代码来解决活动中的观点:

    viewChart = (View) findViewById(R.id.viewChart);

    Canvas c = new Canvas();
    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);


    paint.setAntiAlias(true);
    paint.setColor(Color.RED);
    c.drawCircle(180, 20, 15, paint);

    viewChart.draw(c);
    viewChart.invalidate();

但是当这样做时,屏幕保持空白(黑色。我认为这是主题的背景颜色)。

我的问题是:如何通过画布直接在这个视图上绘图?我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:2)

首先你的画布应该来自一个位图,这意味着你需要创建一个ViewChart大小的位图并从中派生画布Canvas c = new Canvas(myBitmap)

其次,由于ViewChart不是自定义视图,因此我认为您无法直接访问其画布,因此您可以尝试将ViewChart设置为ImageView,并使用viewChart将图像(图表)设置为它。 setImageBitmap(myBitmap)而不是draw(c)和invalidate。