ViewFlipper: рисовать холст на виде - PullRequest
1 голос
/ 11 августа 2011

Я использую 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 Ответ

2 голосов
/ 11 августа 2011

Во-первых, ваш холст должен быть получен из растрового изображения, что означает, что вам нужно создать растровое изображение размера ViewChart и извлечь из него холст Canvas c = new Canvas (myBitmap)

Во-вторых, поскольку ViewChart не являетсяпользовательский вид Я не думаю, что у вас есть прямой доступ к его холсту, поэтому вы можете попробовать сделать ViewChart как ImageView и просто установить для него изображение (диаграмму) с помощью viewChart.setImageBitmap (myBitmap) вместо draw (c).) и лишить законной силы.

...