J'ai un problème avec l'utilisation onTouchEvent en classe qui modifier ImageView dans MainActivityne fonctionne pas onTouchEvent en classe qui modifier ImageView via Canvas
fichier .XML Je travaille avec ce ImageView
Voici classe qui écrire/réécrire sur imageView
public class ItemsInPacagesImageView {
int vsk,vsk2, srk,vskconst,sizetext;
Canvas c;
Paint paint;
ImageView imageview;
Typeface font;
myTrip prvy;
String nazovtripu;
Context context;
public ItemsInPacagesImageView(ImageView img,Context context,String nazovtripu,int pacage) {
//super(context);
this.imageview=img;
this.nazovtripu=nazovtripu;
this.context=context;
prvy= DeSerializuj(nazovtripu);
// Serializuj(prvy,nazovtripu);
vsk = context.getResources().getDimensionPixelSize(R.dimen.vyskalist);
if (prvy.getPocItem()!=pacage){
vsk= vsk*prvy.getPocItem();}
vsk2 = context.getResources().getDimensionPixelSize(R.dimen.vyskatext);
srk = context.getResources().getDimensionPixelSize(R.dimen.sirkafulllist);
vskconst = context.getResources().getDimensionPixelSize(R.dimen.vyskalist2);
sizetext = context.getResources().getDimensionPixelSize(R.dimen.sizetext);
font = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Light.ttf");
img.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, vsk));
Bitmap b = Bitmap.createBitmap(srk,
vsk, Bitmap.Config.ARGB_8888);
c = new Canvas(b);
c.drawColor(Color.WHITE);
imageview.setImageBitmap(b);
paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
for (int i=1;i<50;i++) {
if (prvy.citajItem(0,i)!=null) {
int pom=vsk2 + (i-1)*vskconst;
DalsiPrvok(paint, c, prvy.citajItem(0,i), 450, pom, sizetext,font);
// prvy.setPocItem(prvy.getPocItem()+1);
} else {break;}
}
imageview.invalidate();
}
protected void DalsiPrvok(Paint paint, Canvas canvas, String text, float xx, float yy, double aa, Typeface font) {
paint.setColor(Color.BLACK);
paint.setTypeface(font);
float textSize = paint.getTextSize();
paint.setTextSize((float) aa);
canvas.drawText(text, xx, yy, paint);
paint.setTextSize(textSize);
}
public boolean onTouchEvent(MotionEvent event) {
int e = event.getAction(); // vrati parametre udalosti
if (e == MotionEvent.ACTION_DOWN) {
paint.setColor(Color.YELLOW);
c.drawRect(0,0,srk,vsk,paint);
imageview.invalidate();
}
// HighScoreZ();
return false;
}
public myTrip DeSerializuj(String odkial) {
odkial=odkial+".dat";
myTrip prvy = null;
try {
File file = new File(context.getFilesDir(), odkial);
FileInputStream fi = new FileInputStream(file);
ObjectInputStream oi = new ObjectInputStream(fi);
prvy = (myTrip) oi.readObject();
oi.close();
fi.close();
} catch (Exception e) {
e.printStackTrace();
}
return prvy;
}
public void Serializuj(myTrip serTrip,String kam){
kam=kam + ".dat";
try {
File file = new File(context.getFilesDir(), kam);
FileOutputStream fo = new FileOutputStream(file);
ObjectOutputStream ou = new ObjectOutputStream(fo);
ou.writeObject(serTrip);
ou.close();
fo.close();
} catch (Exception e) {
e.printStackTrace();
}
}
J'onTouchEvent la lettre mince parce que je ne peux pas utiliser onTouchEvent si l'exécution du programme. J'ai essayé étend ImageView ou View ou mon MainActivity. Si je prolonge ↑ onTouchEvent était de bonnes lettres mais je n'ai pas reçu de code sur onTouchEvent.
Tout le code fonctionne bien, c'est-à-dire écrire sur Imageview on Mainactivity all. Mais je dois mettre en œuvre dans onTouchEvent ...
j'appelle Thise classe sur MainActivity ..
ItemsInPacagesImageView itemimg= new ItemsInPacagesImageView(imglist1,tentocontext,druhy.getNazovTripu(),0);
Si S'il vous plaît avoir quelques idées ako résoudre mon problème Aidez-moi.
Merci
J'essaie de mettre en œuvre "implémente GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener" mais si je tente debugg programme ne pouvait pas sauter dans detecdor code. – user6651666