开发者

how to add a button to a custom view that displays bitmap

开发者 https://www.devze.com 2023-03-03 23:48 出处:网络
i\'ve an app that has a custom view that draws a bitmap. i\'d like to place a button in the view on top of the bitmap. the activity\'s setContentView is set to the custom view class so i can\'t inflat

i've an app that has a custom view that draws a bitmap. i'd like to place a button in the view on top of the bitmap. the activity's setContentView is set to the custom view class so i can't inflate the button from the main.xml. How do i get around this? Is it possible to create a button programatically in the view class and then attach a listener?

public class 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 = ");
    setConten开发者_运维百科tView(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


}

}


You could:

  • use a FrameLayout (it can pile up views) containing your view and the button;
  • draw some button in your onDraw() and check if touches are over that area;
  • derive your view from some ViewGroup or *Layout, so that you can add views to it.

edit: in the last case, remember to call setWillNotDraw(false).

0

精彩评论

暂无评论...
验证码 换一张
取 消