2014-02-09 161 views
0

插入疊加圖像時出現問題。 這是我的代碼。 地圖是我在Android的圖庫中瀏覽的圖片。只要在對話框上點擊(x1,y1)(x2,y2),我想要添加的另一個圖像是res/drawable/pin1.png到現有地圖上。銷也必須隨着圖片移動而移動。在現有圖像上添加疊加圖像查看

private ImageView map = (ImageView) findViewById(R.id.image_map); 
    map.setOnTouchListener(new OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if(imagePath != null) { 
       x = (int) event.getX(); 
       y = (int) event.getY(); 

       final String[] items = { "(x1,y1)", "(x2,y2)" }; 
       AlertDialog.Builder builder = new AlertDialog.Builder(MapUploadActivity.this); 
       builder.setTitle("Select Position for " + "(" + x + "," + y + ")") 
         .setItems(items, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int item) { 
         if (items[item] == "(x1,y1)") { 
          x1 = x; 
          y1 = y; 
          show_x1y1.setText("(x1,y1) = (" + x1 + "," + y1 + ")"); 
         } else if (items[item] == "(x2,y2)") { 
          x2 = x; 
          y2 = y; 
          show_x2y2.setText("(x2,y2) = (" + x2 + "," + y2 + ")"); 
         } 
        } 
       }); 

       AlertDialog alert = builder.create(); 
       alert.show(); 

我有一個更詳細的說明。 http://i1017.photobucket.com/albums/af293/palm_kawin91/Untitled-1-1.jpg

我想知道有沒有人可以幫助我。我搜索了其他論壇,但他們不滿足我的願望。 T_ _ _T

+0

您可以嘗試延長'ImageView'並覆蓋'的onDraw()'方法和觸摸畫圈圈... –

回答

0

此示例代碼可能會給你一些想法...

public class DrawView extends ImageView { 

    private ArrayList<Point> points; 
    private Paint paint; 

    public DrawView(Context context) { 
     super(context); 
     init(); 
    } 

    public DrawView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(); 
    } 

    public DrawView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    private void init() { 
     points = new ArrayList<Point>(); 
     paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
     paint.setColor(Color.RED); 
     paint.setStyle(Paint.Style.FILL); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     if(!points.isEmpty()) { 
      Iterator<Point> iterator = points.iterator(); 
      while(iterator.hasNext()) { 
       Point point = iterator.next(); 
       canvas.drawCircle(point.x, point.y, 20, paint);; 
      } 
     } 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     super.onTouchEvent(event); 
     if(event.getAction() == MotionEvent.ACTION_UP) { 
      points.add(new Point((int)event.getX(), (int)event.getY())); 
      invalidate(); 
     } 
     return true; 
    } 

} 
+0

這段代碼是否應該放在新文件中?我怎樣才能調用這個方法呢?抱歉,我是Android新手。 – user3170377

+0

@ user3170377是的。把這段代碼寫在一個單獨的java文件中,並將此視圖添加到您的活動佈局中... –

+0

您能否幫我多瞭解我如何將它們添加到一起?這是我的完整文件。 https://drive.google.com/file/d/0B7Ztdu46v0uOUGtodFFHWUZoVWM/edit?usp=sharing – user3170377