我必须开发如下 UI:
我想显示这种类型的图像并在该图像上显示热点。如果圆将绘制在原始图片上,热点的位置将是动态的,根据 x、y 和半径。用户可以单击热点,onclick 操作将在用户将单击的特定热点上定义。
开发此类 UI 的最佳流程是什么?
我必须开发如下 UI:
我想显示这种类型的图像并在该图像上显示热点。如果圆将绘制在原始图片上,热点的位置将是动态的,根据 x、y 和半径。用户可以单击热点,onclick 操作将在用户将单击的特定热点上定义。
开发此类 UI 的最佳流程是什么?
制作您的主布局 aRelativeLayout
然后您可以使用以下代码以编程方式将 a 添加到您的布局中ImageView
:onClickListener
private void addImageView(RelativeLayout mainLayout, int x, int y, int width, int height, OnClickListener onClickListener){
ImageView imageView = new ImageView(this);
imageView.setAdjustViewBounds(false);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.height = height;
params.width = width;
imageView.setLayoutParams(params);
imageView.setScaleType(ImageView.ScaleType.FIT_XY); //remove this if you want to keep aspect ratio
imageView.setImageDrawable(getResources().getDrawable(R.drawable.ic_launcher)); //here goes your drawable
params.leftMargin = x - width/2;
params.topMargin = y - height/2;
imageView.setOnClickListener(onClickListener);
mainLayout.addView(imageView);
}
要使用它,您可以调用:
RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.relativeLayout); //this is your main layout
addImageButton(mainLayout, 200, 300, 200, 200, new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "clicked", Toast.LENGTH_SHORT).show();
}
});
您也可以使用 aImageButton
来实现相同的效果,尽管图像大小会受到按钮边框的影响:
private void addImageButton(RelativeLayout mainLayout, int x, int y, int width, int height, OnClickListener onClickListener){
ImageButton imageButton = new ImageButton(this);
imageButton.setAdjustViewBounds(true);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.height = height;
params.width = width;
imageButton.setLayoutParams(params);
imageButton.setScaleType(ImageView.ScaleType.FIT_XY);
imageButton.setImageDrawable(getResources().getDrawable(R.drawable.ic_launcher));
params.leftMargin = x - width/2;
params.topMargin = y - height/2;
imageButton.setOnClickListener(onClickListener);
mainLayout.addView(imageButton);
}
试试看。