Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    < Lỗi > sao cái surfaceview của em không chạy

    lúc gọi từ MainActivity bằng lệnh setContentView(gv); thì chạy bình thường mà khi chạy từ giao diện XML thì ra màn hình đen thui :-( !

    code của nó đây :

    Mã:
    package com.example.test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import com.example.test.R;
    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Rect;
    import android.os.CountDownTimer;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
    import android.view.SurfaceHolder;
    import android.view.SurfaceHolder.Callback;
    import android.view.SurfaceView;
    
    @SuppressLint("WrongCall")
    public class GameView extends SurfaceView {
           
    	private Bitmap bmp;
    	   private int kill = 10; 
           private SurfaceHolder holder;
           private int widthscreen;
       	   private int heightscreen;
       	   private Rect emberRect;
           private SurfaceView surfaceview;
           private GameLoopThread gameLoopThread;
           private List<Sprite> sprites = new ArrayList<Sprite>();
           private long lastClick;
    	   private Bitmap bmpBlood,bmpBlood2;
    	   private List<TempSprite> temps = new ArrayList<TempSprite>();
    	   
           public GameView(Context context) {   	   
                 super(context);
                 gameLoopThread = new GameLoopThread(this);
                 holder = getHolder();
                 int width = 300;
                 int height = 300;
                // android.widget.FrameLayout.LayoutParams params = new android.widget.FrameLayout.LayoutParams(width, height);
           //      surfaceview.setLayoutParams(params);
                 holder.addCallback(new Callback() {
                 	
    
                	 @Override
                        public void surfaceDestroyed(SurfaceHolder holder) {
                        }
     
                        @Override
                        public void surfaceCreated(SurfaceHolder holder) {
                        	 //android.widget.FrameLayout.LayoutParams params = new android.widget.FrameLayout.LayoutParams(320, 480);
                           //  gv.setLayoutParams(params);
                        	//getWindowToken().setLayout(200, 2);
    
                               createSprites();
                               if(gameLoopThread.getState()== Thread.State.TERMINATED){
                               gameLoopThread.setRunning(true);
                               gameLoopThread.start();
                               }
                               else
                               {
                            	   gameLoopThread.setRunning(true);
                                   gameLoopThread.start();
                               }
                               new CountDownTimer(30000, 1000) {
               					@SuppressWarnings("deprecation")
    							public void onTick(long millisUntilFinished) {
               						if(kill==0)
               							{
               							gameLoopThread.stop();
               							}
    
               					};
               					 public void onFinish() {  
               						 gameLoopThread.stop();       
               						 
               					 }
               				}.start(); 
                        }
                        
                        @Override
                        public void surfaceChanged(SurfaceHolder holder, int format,
                                      int width, int height) {
            		//		Log.i("TA", "surface change firstater is create");
    
                        	
                            
                        }
                 });
                 bmpBlood = BitmapFactory.decodeResource(getResources(), R.drawable.blood1);
                 bmpBlood2 = BitmapFactory.decodeResource(getResources(), R.drawable.blood2);
           }
    
           private void createSprites() {
                 sprites.add(createSprite(R.drawable.bad1,1));
                 sprites.add(createSprite(R.drawable.bad2,1));
                 sprites.add(createSprite(R.drawable.bad3,1));
                 sprites.add(createSprite(R.drawable.bad4,1));
                 sprites.add(createSprite(R.drawable.bad5,1));
                 sprites.add(createSprite(R.drawable.bad6,1));
                 sprites.add(createSprite(R.drawable.bad7,1));
                 sprites.add(createSprite(R.drawable.bad8,1));
                 sprites.add(createSprite(R.drawable.bad9,1));
                 sprites.add(createSprite(R.drawable.bad9,1));
                 sprites.add(createSprite(R.drawable.good1,0));
                 sprites.add(createSprite(R.drawable.good2,0));
                 sprites.add(createSprite(R.drawable.good3,0));
                 sprites.add(createSprite(R.drawable.good4,0));
                 sprites.add(createSprite(R.drawable.good5,0));
                 sprites.add(createSprite(R.drawable.good6,0));
                 sprites.add(createSprite(R.drawable.good7,0));
                 sprites.add(createSprite(R.drawable.good8,0));
                 sprites.add(createSprite(R.drawable.good10,0));
                 sprites.add(createSprite(R.drawable.good11,0));
                 sprites.add(createSprite(R.drawable.good11,0));
           }
    
           private Sprite createSprite(int resouce,int i) {
                 Bitmap bmp = BitmapFactory.decodeResource(getResources(), resouce);
                 return new Sprite(this, bmp, i);
           }
    
           @SuppressLint("WrongCall")
           protected void onDraw(Canvas canvas) {
                 canvas.drawColor(Color.BLACK);
                 for (int i = temps.size() - 1; i >= 0; i--) {
                     temps.get(i).onDraw(canvas);
               }
                 for (Sprite sprite : sprites) {
                        sprite.onDraw(canvas);
                 }
           }
           @Override
           public boolean onTouchEvent(MotionEvent event) {
                 if (System.currentTimeMillis() - lastClick > 500) {
                        lastClick = System.currentTimeMillis();
                        synchronized (getHolder()) {
                        	float x = event.getX();
                        	float y = event.getY();
                            for (int i = sprites.size() - 1; i >= 0; i--) {
                                Sprite sprite = sprites.get(i);
                                if (sprite.isCollition(x, y)) {
                                      sprites.remove(sprite);     
                                      if(sprite.loai==1)
                                      {
    								temps.add(new TempSprite(temps, this, x, y, bmpBlood));
    								kill--;
                                      }
                                      else
                                    	  temps.add(new TempSprite(temps, this, x, y, bmpBlood2));
                                      break;
                                }
                            }
                        }
                 }
                 return true;
           }
           public int getkill(){
        	   return(kill);
           }
           public GameView(Context context, AttributeSet attrs) {
        	    this(context, attrs,0);
        	    init(context);
        	}
    
        	public GameView(Context context, AttributeSet attrs, int defStyle) {
        	    super(context, attrs, defStyle);
        	    init(context);
        	}
    
        	private void init(Context context) {
        	    //do stuff that was in your original constructor...
        	}
    
    }
    code file XML :

    Mã:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <com.example.test.GameView
            android:id="@+id/my_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
    </LinearLayout>

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    đã tự xử thành công [IMG]images/smilies/kiss.gif[/IMG][IMG]images/smilies/kiss.gif[/IMG][IMG]images/smilies/kiss.gif[/IMG]

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •