我有一些像这样的图像
我想让红色区域可点击区域。 我想让这个区域可点击,这意味着当用户触摸屏幕时,我想要通知a.i我想要注册一个听众。
问题在于图像对于不同的屏幕大小不同,有些屏幕的大小为240x320,对于图像视图我使用fill_parent大约400x800,因此图像将在每个屏幕中填满整个屏幕。而这个可点击的区域有时会从左边框开始50dip,有时会是150dip。有时它是从顶部10dip有时它是500dip ...一切都取决于屏幕尺寸
如何处理这种情况?
答案 0 :(得分:2)
最好的方法是将图像剪切成单独的部分,然后将它们放在RelativeLayout中。
然后为您需要的图像设置点击监听器。
您可以处理此问题的另一种方法是确定屏幕尺寸并计算触控区域:
final Display display = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
final int width = display.getWidth();
final int height = display.getHeight();
答案 1 :(得分:2)
我在这里找到了一个非常好的教程:http://blahti.wordpress.com/2012/06/26/images-with-clickable-areas/
你这样做的方式: - 你有2张图片。 - 1是背景,另一个是它的顶部,是一个看不见的面具。 - 掩码获取OnTouchListener。 - 面具有不同的颜色区域(触摸区域)。 - 如果触摸图像,掩码将检查颜色并执行操作。
好处是:如果缩放图像,触摸区域也会缩放,因此您的触摸区域始终位于正确的位置。
非常直截了当。希望我能提供帮助,即使你的问题超过一年。
答案 2 :(得分:0)
这是另一个例子(最后一个)。您只需将图像放在透明按钮上并处理单击。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@android:drawable/edit_text" />
<Button
android:id="@+id/bottomLeft"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="@android:color/transparent" />
<Button
android:id="@+id/center"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="@android:color/transparent" />
<Button
android:id="@+id/bottomRight"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_centerInParent="true"
android:background="@android:color/transparent" />
</RelativeLayout>