android - 如何绘制位图作为按钮?

标签 android android-custom-view android-button

我正在尝试绘制一个由位图组成的按钮,例如

b[j] = (Button) sm.findViewById(R.drawable.picture);

但我无法使用 draw(Canvas canvas) 方法显示此图片。

有没有办法让我像位图一样显示按钮

canvas.drawBitmap(bitmap,..,..,null);

我实际上不想从 xml 或 onCreate() 方法中显示按钮。

有什么办法可以从其他地方显示它吗???

谢谢!!!

我将在这里发布我的程序,请帮忙!!!

已经创建了四个类...

在此处输入代码

**class 1:-**


package game.pack;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;

public class Sushitap extends Activity {

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);


        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(new SushiMain(this));


   }
}


**class 2:-**

 package game.pack;
import android.content.Context;
import android.graphics.*;
import android.util.DisplayMetrics;
import android.view.*;
import android.widget.Button;


public class SushiMain extends SurfaceView implements SurfaceHolder.Callback {

    Canvas canvas;
    Tower s;
    SushiThread st;
    int height;
    int width;

    public SushiMain(Context context) {


        super(context);
        getHolder().addCallback(this);
        DisplayMetrics met = context.getResources().getDisplayMetrics();
        height=met.heightPixels;
        width= met.widthPixels;

        int x=width;

                s = new Tower(context,this,x,260);

        st = new SushiThread(getHolder(), this);
        setFocusable(true);

    }




    public void surfaceChanged(SurfaceHolder sh, int format, int height,
            int width) {
        getResources();
    }

    public void surfaceCreated(SurfaceHolder sh) {

        st.setRunning(true);
        st.start();

    }

    public void surfaceDestroyed(SurfaceHolder holder) {

            boolean retry = true;
          while (retry) {
           try {
            st.join();
            retry = false;
           } catch (InterruptedException e) {

           }
          }

         }

        public void render(Canvas canvas) {

                            s.onDraw(canvas);
}

}

**class 3:-**

package game.pack;

import android.graphics.*;
import android.view.*;

public class SushiThread extends Thread{

    private SurfaceHolder sh;
    private SushiMain sm;
    Tower t;
    private boolean running;

    public SushiThread(SurfaceHolder sh,SushiMain sm)
    {
        super();

        this.sh=sh;
        this.sm=sm;


    }



    public void run()
    {
        Canvas canvas;

        while(running)
        {

            canvas=null;

            try{

                canvas=this.sh.lockCanvas();

                synchronized (sh) {


                    this.sm.render(canvas);
                }


            }
            finally{

                if(canvas!=null){

                    sh.unlockCanvasAndPost(canvas);

                }

            }




        }


    }

    public void setRunning(boolean running) {
        this.running=running;

    }


**class 4**

package game.pack;

import java.util.Random;



import android.content.Context;
import android.graphics.*;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;

public class Tower extends View

{
    int x,y;
    ImageButton sushiArray; 
    Canvas canvas; 



    public Tower(Context c,SushiMain mainObj, int x, int y) {

        super(c);
        this.x = x;
        this.y = y;


    }   


        protected void onDraw(Canvas canvas) {


            sushiArray.draw(canvas);



    }


}




please let me know how to implement my imageButton.,,thank you!!!

最佳答案

使用ImageButton在按钮上显示图像而不是文本。

关于android - 如何绘制位图作为按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11201136/

相关文章:

android - 将我的自定义 View 添加到 XML 布局中会引发异常

android - 为 FrameLayout 内的所有自定义 View 触发 OnClickListener

android - 如何在android中创建透明的圆形按钮?

Android:带有两个图像的按钮 |结盟

android单击按钮时没有事件

android - 我无法访问我所在位置的纬度和经度。为什么?

android - Firebase 邀请发送电子邮件但不发送短信。返回结果代码 0

android - 大小为 0kb 的位图图像保存

android - 如何在android studio中使用这个项目?

java - 使代码在 x 以 y 开头时执行