2

次のようなビットマップで構成されるボタンを描画しようとしています

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

しかし、この方法を使用してこの画像を表示することはできませんdraw(Canvas canvas)

ボタンをビットマップのように表示する方法はありますか

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

私は実際にxmlからまたはonCreate()メソッド内にボタンを表示したくありません。

他の場所から表示できる方法はありますか????

ありがとうございました!!!!

ここに私のプログラムを投稿します助けてください!!!

4つのクラスを作成しました...

ここにコードを入力してください

**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!!!
4

2 に答える 2

1

ボタンにテキストの代わりに画像を表示するには、ImageButtonを使用します。

于 2012-06-26T05:52:14.710 に答える
1

(1)次のように、ImageButton を使用して moto を実行できます。

   <ImageButton android:id="@+id/theImageButton"
            android:layout_height="wrap_content" android:layout_width="wrap_content" 
            android:layout_gravity="center"
            android:background="@drawable/ic_your_image" />

ここで「ic_your_image」は、ボタンとして表示したい画像です。

(2) または、単に画像ビューを使用し、onClickListener を設定してクリック可能にすることもできます。

(3)プログラムでも実行できます:

            View linearLayout =  findViewById(R.id.your_main_xml);

            ImageButton newButton=new ImageButton(this);
            newButton.setBackgroundDrawable(getApplication().getResources().getDrawable(R.drawable.your_image)); 
            newButton.setId(5);
            noLisnText.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
            noLisnText.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);
            ((LinearLayout) linearLayout).addView(newButton);

イメージビューでビットマップを設定するには(よくわかりません。テストする必要があります):

       View linearLayout =  findViewById(R.id.your_main_xml);
            ImageView newImage=new ImageView(this);
            newImage.setId(5);
            newImage.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
            ((LinearLayout) linearLayout).addView(newImage);
            newImage.setImageBitmap(bitmap);
于 2012-06-26T06:05:08.010 に答える