Добавьте onDraw drawable поверх main.xml - PullRequest
1 голос
/ 10 августа 2011

Я новичок в разработке для Android, и у меня возникла проблема с выяснением, как добавить нарисованную линию поверх изображения. Я могу нарисовать линию и отобразить ее, или я могу отобразить изображение, но я не могу понять, как отображать оба одновременно.

Рассмотрим анолог спидометра. В main.xml у меня есть ImageView, который отображает изображение спидометра без стрелки. Что касается иглы, я хочу программно нарисовать линию и добавить ее поверх изображения датчика.

Вот моя активность и код просмотра:

public class StartDraw extends Activity {
    DrawView drawView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //setContentView(R.layout.main);
        setContentView(new DrawView(this));

    }

    final class DrawView extends View {
        Paint paint = new Paint();

        public DrawView(Context context) {
        super(context);
            paint.setColor(Color.WHITE);
            paint.setStrokeWidth(5);
        }

        @Override
        protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

            canvas.drawLine(30, 100, 150, 200, paint);
        }
     }   
}

и вот мой файл main.xml:

<?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"
    >
<ImageView android:src="@drawable/image" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/imageView1"></ImageView>
</LinearLayout>

Как отобразить стрелку на верхней части спидометра? Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 10 августа 2011

Один из вариантов - разбить DrawView на отдельный файл класса.Затем вы можете добавить его как элемент в свой LinearLayout из main.xml.

После вызова setContentView(R.layout.main);, вы можете получить ссылку на экземпляр DrawView в вашем Activity, выполнив:

DrawView dv = (DrawView)findViewById(R.id.drawView); //use the actual id you define in your layout xml
...