制作和图像可点击的一部分(Android)

时间:2013-09-18 11:51:04

标签: java android android-layout

我正在尝试将我的图片的一部分点击。在这种情况下,我有24端口开关,我希望当用户点击一个端口显示端口号。我已经进行了缩放并尝试在图像上插入矩形,但我仍然是Android开发中的新手,所以我不太确定如何完成任务。

这是我创建矩形并放在图片上的代码: (我的想法是,我有一个类矩形,用于保存端口号和一些文本,以便我可以检索它们)

public class MainActivity extends Activity{

ImageView DrawingImage;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    DrawingImage = (ImageView) this.findViewById(R.id.image);

    Bitmap bitmap2 = Bitmap.createBitmap((int) getWindowManager()
        .getDefaultDisplay().getWidth(), (int) getWindowManager()
        .getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(bitmap2);
    DrawingImage.setImageBitmap(bitmap2);

    // Draw Rectangle

    Paint paint = new Paint();
    paint.setColor(Color.GREEN);
    paint.setStyle(Paint.Style.FILL);

    float left = 20;
    float top = 20;
    float right = 50;
    float bottom = 100;

    canvas.drawRect(left, top, right, bottom, paint);

    Zoom image = (Zoom) findViewById(R.id.image);
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test);
    image.setImageBitmap(bitmap);

    int posX=(int)image.getX();
    int posY=(int)image.getY();
    double height=image.getHeight();
    double width=image.getWidth();

  }
}

但是当我运行App时,我看不到Rectangle。即使我在矩形之前声明图片,我也只能看到矩形。

有什么建议吗?

任何帮助将不胜感激。

提前谢谢!

祝你好运, Dimtiar Georgiev

2 个答案:

答案 0 :(得分:1)

xml layout:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</FrameLayout>

onCreate方法:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ImageView DrawingImage = (ImageView) this.findViewById(R.id.imageView2);

    Bitmap bitmap2 = Bitmap.createBitmap((int) getWindowManager()
        .getDefaultDisplay().getWidth(), (int) getWindowManager()
        .getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(bitmap2);
    DrawingImage.setImageBitmap(bitmap2);

    // Draw Rectangle

    Paint paint = new Paint();
    paint.setColor(Color.GREEN);
    paint.setStyle(Paint.Style.FILL);

    float left = 20;
    float top = 20;
    float right = 50;
    float bottom = 100;

    canvas.drawRect(left, top, right, bottom, paint);

    ImageView image = (ImageView) findViewById(R.id.imageView1);
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
    image.setImageBitmap(bitmap);

    int posX=(int)image.getX();
    int posY=(int)image.getY();
    double height=image.getHeight();
    double width=image.getWidth();
}

它不是你现在先画的东西。这是关于xml布局。先放什么当然,您可能希望使用图像视图的高度和宽度属性来实现您真正想要的。但是我正在测试它。

答案 1 :(得分:0)

这不起作用。你做的方式。

您的设计中必须有两个图像视图。

使用framelayout并在其中放入两个图像视图。

为其中一个设置画布并绘制。

并为另一个设置图像。

它将无效,因为您设置了第一个位图:

DrawingImage.setImageBitmap(bitmap2);

然后你替换它:

image.setImageBitmap(bitmap);

你有相同的图像布局:

R.id.image