Вопрос о разработке Android, точнее о кнопках и взглядах Cumstom.Я использую четыре кнопки в линейных макетах и один пользовательский вид, в котором я рисую изображения.Когда я использую метод, чтобы сделать это (я переопределяю onDraw ()), все работает просто отлично, за исключением того, что мои кнопки реагируют довольно медленно на их нажатие.Простое удаление функций onDraw заставляет их работать быстро.Итак, мои вопросы: почему эти кнопки работают так медленно?Я просто не могу понять, почему!Нужно ли использовать самостоятельно созданные кнопки в пользовательском представлении?
И как это решить?
Это класс, который я использую метод onDraw:
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();
}
}
}
И это мой основной класс:
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: я знаю, что этот код не очень красив, но в данный момент я просто пытаюсь выяснить основы, которые мне нужны ...