我正在使用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();
但是在执行此操作时,屏幕保持空白(黑色。我认为这是主题的背景色)。
我的问题是:如何通过画布直接在此视图上绘制?我做错了什么?谢谢!
最佳答案
首先,您的画布应该从位图派生,这意味着您需要创建一个ViewChart大小的位图并从中派生画布Canvas c = new Canvas(myBitmap)
其次,由于ViewChart不是自定义视图,因此我认为您无法直接访问其画布,因此您可以尝试将ViewChart设置为ImageView并仅使用viewChart.setImageBitmap(myBitmap )而不是draw(c)并使之失效。