как добавить кнопку в пользовательский вид, отображающий растровое изображение - PullRequest
0 голосов
/ 09 мая 2011

У меня есть приложение, которое имеет собственное представление, которое рисует растровое изображение.Я хотел бы разместить кнопку в представлении в верхней части растрового изображения.setContentView действия установлен в пользовательский класс представления, таким образом я не могу надуть кнопку из main.xml.Как мне обойти это?Можно ли создать кнопку программно в классе представления и затем присоединить слушателя?

открытый класс Jjilapp extends Activity {

private static final String TAG = "*********jjil";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.e(TAG, "***********inside oncreate about to set contentview = ");
    setContentView(new TouchView(this));


}

class TouchView extends View{



    public TouchView(Context context) {
        super(context);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);





       .......

        BitmapFactory.Options bfo = new BitmapFactory.Options();
        bfo.inSampleSize = 1;

        bm = BitmapFactory.decodeByteArray(imageArray, 0, imageArray.length, bfo);
        bgr = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), bm.getConfig());
        bgr = bm.copy(bm.getConfig(), true);


}// end of class touchView


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


        canvas.drawBitmap(bgr, 0, 0, null);
        canvas.drawCircle(centreX, centreY, radius,pTouch);


    }//end of onDraw


}

}

1 Ответ

1 голос
/ 09 мая 2011

Вы можете:

  • использовать FrameLayout (он может накапливать виды), содержащий ваш вид и кнопку;
  • нарисовать некоторую кнопку в вашем onDraw() и проверитьесли касания находятся над этой областью;
  • выводит ваш вид из некоторого ViewGroup или *Layout, так что вы можете добавить к нему представления.

edit: в последнем случаене забудьте позвонить setWillNotDraw(false).

...