表面视图黑屏主页按钮

时间:2015-11-12 04:52:04

标签: java android android-studio

我正在开发一个应用程序,只是显示云在屏幕上行走,使用表面视图一切顺利,直到按下按钮" HOME BUTTON"所以,当我回到我的应用程序只显示黑色屏幕时,应用程序的其余部分工作正常就是当你按下"主页按钮"

我的SurfaceView代码在哪里

      import android.content.Context;
      import android.graphics.Bitmap;
      import android.graphics.BitmapFactory;
      import android.graphics.Canvas;
      import android.graphics.Color;
      import android.graphics.Paint;
      import android.util.AttributeSet;
      import android.view.SurfaceHolder;
      import android.view.SurfaceView;


public class mysurfaceview extends SurfaceView implements SurfaceHolder.Callback {


private  mysurfaceviewThread bbThread = null;

private int xPosition = (getHeight()/2);
private int yPosition = (getHeight()/2);
private int posicion2 = (getWidth()/2)-40;
private int posicion3 = (getWidth()/4);
private int xDirection = 1;

public mysurfaceview(Context ctx,AttributeSet attrs){
    super(ctx, attrs);
    getHolder().addCallback(this);
}

public void doDraw(Canvas c){
    Paint paint = new Paint();
    paint.setColor(Color.WHITE);
    Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.myimage);
    c.drawColor(Color.WHITE);
    c.drawBitmap(icon, xPosition, yPosition, new Paint());
    c.drawBitmap(icon,posicion2,(getHeight()/2),new Paint());
    c.drawBitmap(icon,posicion3,(getHeight()/2)+40,new Paint());
}

public void surfaceCreated(SurfaceHolder holder){
    if (bbThread!=null) return;
    bbThread = new mysurfaceviewThread(getHolder());
    bbThread.start();
}

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){
}

public void surfaceDestroyed (SurfaceHolder holder){
    bbThread.detener();
}


public class mysurfaceviewThread extends Thread{
    private boolean corriendo,pausa;
    private SurfaceHolder surfaceHolder;
    public mysurfaceviewThread(SurfaceHolder surfaceHolder){
        this.surfaceHolder = surfaceHolder;
    }

    public synchronized void pausar() {
        pausa = true;
    }

    public synchronized void reanudar() {
        pausa = false;
        notify();
    }

    public void detener() {
        corriendo = false;
        if (pausa)
        reanudar();
    }

    public void run(){
       corriendo=true;
        while(corriendo){
            xPosition+=xDirection;
            posicion2+=2;
            posicion3+=1;
            if(xPosition==getWidth()){
            xPosition = -200; }
            if(posicion2==getWidth()){
                posicion2 = -200; }
            if(posicion3==getWidth()){
                posicion3 = -200; }
            Canvas c = null;
            try {
                c = surfaceHolder.lockCanvas();
                doDraw(c);
                synchronized (surfaceHolder){
                }
            } finally {
                if(c != null) surfaceHolder.unlockCanvasAndPost(c);}
            synchronized (this) {
                while (pausa) {
                    try {
                        wait();
                    } catch (Exception e) {
                    }
                }
            }
        }
    }
}

public mysurfaceviewThread getThread(){
    return bbThread;
}

}

以下是活动

的代码
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.SurfaceView;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;


public class animadofondo2 extends Activity{

private mysurfaceview Clouds;
private mysurfaceview.mysurfaceviewThread CloudsThread;


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sufeaviewfondo);
    Clouds= (mysurfaceview ) findViewById(R.id.ViewsLaynubes);
}

@Override
protected void onPause() {
    super.onPause();
    Clouds.getThread().pausar();
    Toast.makeText(this, "Pausa", Toast.LENGTH_SHORT).show();
}

@Override
protected void onRestart(){
    super.onRestart();
    Clouds.getThread().reanudar();
    Toast.makeText(this, "Restart", Toast.LENGTH_SHORT).show();
}



@Override protected void onStart() {
    super.onStart();
    Toast.makeText(this, "onStart", Toast.LENGTH_SHORT).show();
}

@Override protected void onResume() {
    super.onResume();
    Toast.makeText(this, "onResume", Toast.LENGTH_SHORT).show();
}

@Override protected void onStop() {
    super.onStop();
    Nubecitas.getThread().pausar();
    Toast.makeText(this, "onStop", Toast.LENGTH_SHORT).show();
}

@Override protected void onDestroy() {
    super.onDestroy();
    Toast.makeText(this, "onDestroy", Toast.LENGTH_SHORT).show();
}



@Override
public void onBackPressed(){
    Lamar(null);
    finish();
}


public void Lamar (View view){
    Intent i = new Intent(this, main.class);
    startActivity(i);
}

}

这是布局的XML

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linear1"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.app.example.proyectsurface.mysurfaceview
    android:id="@+id/ViewsLaynubes"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</FrameLayout>

0 个答案:

没有答案