3 Stimmen

Android Entwicklung - Buttons reagieren langsam

Die Frage bezieht sich auf die Android-Entwicklung, genauer gesagt geht es um Schaltflächen und kundenspezifische Ansichten. Ich verwende vier Schaltflächen in linearen Layouts und eine benutzerdefinierte Ansicht, in der ich Bilder zeichne. Wenn ich die Methode dafür verwende (ich überschreibe onDraw()), funktioniert alles gut, außer dass meine Schaltflächen beim Drücken ziemlich langsam reagieren. Wenn ich die onDraw-Funktionen einfach entferne, funktionieren sie schnell. Also, meine Fragen sind: Warum funktionieren diese Schaltflächen so langsam? Ich kann einfach nicht herausfinden, warum! Muss ich selbst erstellte Schaltflächen in der benutzerdefinierten Ansicht verwenden?

Und wie kann man das lösen?

Dies ist die Klasse, in der ich die onDraw-Methode verwende:

import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.widget.ImageView;

public class test extends ImageView{  
Context mContext;
String[] medium;

final int pspawn[]={64,32};

public test(Context context, AttributeSet attrs) {         
    super(context, attrs);
    mContext = context;
}

private String getMapInfo(Integer counter){
    String[] mapArray = TextUtils.split(map, " ");
    return mapArray[counter];
}
public void onDraw(Canvas canvas){
    int x = 0;
    int y = 0;
    for(int i = 0; i<100; i = i+1)
    {
        String mapinfo = getMapInfo(i);
        if (mapinfo.equals("x"))
        {
            canvas.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(),R.drawable.t1), x, y, null);
        }
        x = x + 32;
        if (x == 320)
        {
            y = y + 32;
            x = 0;
        }
        canvas.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(),R.drawable.t3), pspawn[0], pspawn[1],null);
        invalidate();   
    }               
}
}

Und das ist meine Hauptklasse:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class desimain extends Activity{

private Thread worker;
private Runnable newMsg;
private OnClickListener getKeystroke;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    getKeystroke = new OnClickListener(){
        public void onClick(View view) {
            switch(view.getId()){   
            case R.id.Up:
                worker = new Thread(newMsg);
                worker.start();
                break;   
            case R.id.Down:   
                Toast.makeText(getApplicationContext(), "Down", Toast.LENGTH_SHORT).show();     
                break;
            case R.id.Left:   
                Toast.makeText(getApplicationContext(), "Left", Toast.LENGTH_SHORT).show();     
                break; 
            case R.id.Right:   
                Toast.makeText(getApplicationContext(), "Right", Toast.LENGTH_SHORT).show();        
                break;
            }
        };
    };

    Button pressUp = (Button) findViewById (R.id.Up);
    pressUp.setOnClickListener(getKeystroke);
    Button pressDown = (Button) findViewById (R.id.Down);
    pressDown.setOnClickListener(getKeystroke);
    Button pressLeft = (Button) findViewById (R.id.Left);
    pressLeft.setOnClickListener(getKeystroke);
    Button pressRight = (Button) findViewById (R.id.Right);
    pressRight.setOnClickListener(getKeystroke);

    newMsg = new Runnable(){
        public void run() {
            runOnUiThread(new Runnable() {
                public void run() {
                    Toast.makeText(getApplicationContext(), "Up", Toast.LENGTH_SHORT).show();       
                    } 
                }); 
        }   
    };
}
}

PS: Ich weiß, dieser Code ist nicht sehr schön, aber im Moment versuche ich nur, die Grundlagen herauszufinden, die ich brauche...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X