android - ViewFlipper:在 View 上绘制 Canvas

标签 android layout view canvas viewflipper

我正在使用 ViewFlipper 翻转 Activity 中的多个 View 。 因此,我以这种方式将我的 View 布局包含在 Activity 布局中:

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


翻转效果很好。

我的布局图表:

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

我想在 View viewChart 上用 Canvas 绘制。所以我想我可以用这段代码解决 Activity 中的 View :

    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();

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

我的问题是:如何通过canvas直接在这个view上绘制?我做错了什么?谢谢!

最佳答案

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

其次,由于 ViewChart 不是自定义 View ,我认为您不能直接访问它的 Canvas ,因此您可以尝试将 ViewChart 设为 ImageView 并使用 viewChart 为其设置图像(图表)。 setImageBitmap(myBitmap) 而不是 draw(c) 并使其失效。

关于android - ViewFlipper:在 View 上绘制 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7023303/

相关文章:

android - Facebook SDK 3 EOFException

android - 我的应用程序不会显示任何内容?只是一个空白的白页?

html - 如何在图片右侧放置文字?

python - 如何从网络浏览器中运行我的 python 脚本并处理结果?

model-view-controller - 与模型 View 相比, Model View Controller (MVC)有什么优势?

Android同时为所有 ListView 项目设置动画

android - 将 Sprite 矩形旋转 90 度不符合 iOS 中的纵横比

android - 将 EditText 转换为 int? (安卓)

java - 如何让 Android TableLayout 填满屏幕?

php - 覆盖joomla类别 ListView