2016-08-18 4 views
1

経由クラス編集ImageViewのでonTouchEventを動作していません画像ビューで書き直します。は/ここ </p> <p>が書くクラスであり、私は</p> <p>.XMLファイルは、私はこのImageViewのでは動作しmainActivityで編集ImageViewのクラスで使用onTouchEventに問題があるキャンバス

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(); 
    } 
} 

私はonTouchEventを薄い文字で表示しています。プログラムを実行するとonTouchEventを使用できないためです。私はImageViewまたはビューまたは私のMainActivityを拡張しようとしました。 私が↑を拡張した場合、onTouchEventは良い文字ですが、onTouchEventでコードを取得できませんでした。

すべてのコードは正常に実行され、thiseクラスはImageview on Mainactivity allに書き込みます。私の問題は、私を助けて解決赤穂いくつかのアイデアを持っている場合しかし、私はonTouchEventに実装する必要があります...

は私が

ItemsInPacagesImageView itemimg= new ItemsInPacagesImageView(imglist1,tentocontext,druhy.getNazovTripu(),0); 

... MainActivityにthiseクラスをしてください呼び出します。

ありがとうございました

+0

は「GestureDetector.OnGestureListener、 GestureDetector.OnDoubleTapListenerを実装し、」しかし、私はdebuggしようとするとプログラムがdetecdorコードにジャンプすることができませんでした。 – user6651666

答えて

0

私はこのコードで問題を解決します。 Imageviewをクリックすると、このメソッドはItemsInPacagesImageView.classにsourondings xとyを送り、imageviewを書き直します。私が実装してみてください

imglist1.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
      prvy=DeSerializuj2(nazovtripu); 

      switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        itemimg.PociatocneBody(event.getX(),event.getY()); 

        break; 
       case MotionEvent.ACTION_MOVE: 

        break; 
       case MotionEvent.ACTION_UP: 
        itemimg.KonecneBody(event.getX(),event.getY()); 
        try { 
         prvy.Zbalene(ktore, itemimg.Spracuj()); 
        } catch(IndexOutOfBoundsException e) {} 
        prvy.setHotovo(0); 
        for (int i=1;i<100;i++) { 
         prvy.Kolkomam(0,i); 
        } 

        hotovo1.setText(prvy.getHotovo()+"/"+prvy.getPocItem()); 



        break; 
      } 

      return true; 
     } 
    }); 
関連する問題

 関連する問題