2014-02-09 106 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