2011-04-01 3 views
2

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

public class DrawView extends View { 
    private ColorBall ball; 
    public DrawView(Context context) { 
    super(context); 
    setFocusable(true); 
    ball = new ColorBall(context,R.drawable.bol_groen, points); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) {  
     canvas.drawBitmap(ball.getBitmap(), ball.getX(), ball.getY(), null); 
    } 

    public boolean onTouchEvent(MotionEvent event) {   
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
       // do stuff... 
    } 
} 

В начальной активности, раскладка устанавливается с помощью setContentView(new DrawView(this));

Я хочу, чтобы добавить кнопку на экране и при нажатии на кнопку, я хочу новый растровый будет добавлен. Как добавить кнопку на этот экран?

EDIT: Это мой 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" > 
<Button android:text="Button" 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
</Button> 
<com.example.DrawView 
android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
</LinearLayout> 

ответ

3

комплект операций от XML. Поместите туда кнопку и свой пользовательский вид (вы можете сделать это GONE, если вы не хотите, чтобы он был видимым).

Но прежде чем сделать это, вы должны иметь еще один конструктор для вашего зрения

public DrawView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    setFocusable(true); 
    ball = new ColorBall(context,R.drawable.bol_groen, points); 
} 
+0

Спасибо. Правильно ли указан указанный выше xml? Растровое изображение не отображается. –

+0

@rohith Я думаю, что макет в порядке. Я никогда не делал свой собственный вид без переопределения метода onMeasure. Попытайтесь использовать метод логарифма входа, чтобы узнать фактический размер вашего представления и координаты рисованного растрового изображения. – Maxim

+0

Спасибо. Это работало. Можете ли вы также рассказать мне, как я могу добавить растровое изображение при нажатии кнопки. –

Смежные вопросы