2012-06-15 38 views
2

我一直在開發繪圖應用程序,我有一些問題:由手指繪製平均已經做了,但現在我需要做什麼,允許用戶編寫一個通用文本標籤上的View。所以,請看我的代碼:繪製簡單的文本上查看

public class PainterView extends View implements DrawingListener { 

    private Painter painter; 

    private Bitmap bitmap; 
    private Paint bitmapPaint; 
    private Path path; 
    private Paint paint; 

    public PainterView(Context context, Painter painter) { 

     super(context); 
     this.painter=painter; 
     this.setOnTouchListener(new OnTouchListener() { 

      public boolean onTouch(View v, MotionEvent event) { 
       float x = event.getX(); 
       float y = event.getY(); 

       switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
         PainterView.this.painter.touchStart(x, y); 
         break; 
        case MotionEvent.ACTION_MOVE: 
         PainterView.this.painter.touchMove(x, y); 
         break; 
        case MotionEvent.ACTION_UP: 
         PainterView.this.painter.touchUp(); 
         break; 
       } 

       return true; 
      } 

     }); 
     this.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
       Log.e("event", "click"); 
      } 

     }); 
     this.setOnLongClickListener(new OnLongClickListener() { 
      public boolean onLongClick(View v) { 
       Log.e("event", "long"); 
       return true; 
      } 

     }); 
    } 

    protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
     super.onSizeChanged(w, h, oldw, oldh); 
    } 

    protected void onDraw(Canvas canvas) { 
     if (bitmap!=null) { 
      canvas.drawBitmap(bitmap, 0, 0, bitmapPaint); 
      canvas.drawPath(path, paint); 
     } 
    } 

    public void onPictureUpdate(Bitmap bitmap, Paint bitmapPaint, Path path, Paint paint) { 

     this.bitmap=bitmap; 
     this.bitmapPaint=bitmapPaint; 
     this.path=path; 
     this.paint=paint; 
     invalidate(); 
    } 

    public void setPainter(Painter painter) { 
     this.painter=painter; 
    } 
} 

這是代碼繪圖;繪圖的過程在Painter類。所以,現在我需要讓用戶寫一個簡單的文本。我想,我可以使用長點擊做到這一點 - 用戶做了長按,鍵盤被打開,用戶可以輸入文本。但它不起作用!我的日誌中沒有看到任何字符串。

請告訴我建議我的問題還是一些想法如何,我可以實現我需要什麼。

+0

[嘗試這一個](http://www.2shared.com/file/QMsoV6OR/WriteOnScreen.html) – Praveenkumar

回答

0

我敢肯定的是OnTouchListener消耗觸摸事件,當你return true。試試return super.onTouch(v, event)

+0

OnTouchListener是接口,沒有超級方法 – user1445877

+0

是的,好,'返回false'。 –