我需要檢測圖像波紋管上紅色斑點的觸摸,因此觸摸斑點後,我可以進行操作。 我想我需要檢測觸摸座標,並檢查它是否與紅點匹配。但是,我如何檢測紅點位置?可能嗎? 注:如果有幫助,我可以選擇圖像格式,但可能需要使用位圖。檢測圖像上彩色斑點的觸摸(位圖)
我需要以編程方式獲取點位置。我收到圖片,我需要處理觸摸事件的點。但我可以用不同的點位獲得不同的圖像
感謝您的所有想法!
我需要檢測圖像波紋管上紅色斑點的觸摸,因此觸摸斑點後,我可以進行操作。 我想我需要檢測觸摸座標,並檢查它是否與紅點匹配。但是,我如何檢測紅點位置?可能嗎? 注:如果有幫助,我可以選擇圖像格式,但可能需要使用位圖。檢測圖像上彩色斑點的觸摸(位圖)
我需要以編程方式獲取點位置。我收到圖片,我需要處理觸摸事件的點。但我可以用不同的點位獲得不同的圖像
感謝您的所有想法!
我看到的最簡單的解決方法是:
1,因爲它可能會改變取決於設備的屏幕尺寸和/或分辨率獲取ImageView的大小。
int IVwidth = imageView.getWidth();
int IVHeight = imageView.getHeight();
2-獲取位圖的寬度/高度,然後查找位圖的寬度和寬度的ImageView, 只需之間的關係工科數學(比):
float HeightRatio = (float)bm.getHeight()/(float)iv.getHeight();
float WidthRatio = (float)bm.getWidth()/(float)iv.getWidth();
,假設我們有一個位圖(800 * 600)大小和(400 * 300)大小 的imageView這會給你一個比例(2.0)的高度和寬度。
3-現在當引發事件ImageViewTouched時,您可以很容易地獲得觸摸座標,因爲事件會將它們傳遞給您。注意,捕捉觸摸事件非常簡單,只需將其添加到視圖即可實現。
ImageView iv = (ImageView) findViewById(R.id.imageView1);
iv.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if(arg1.getAction() == MotionEvent.ACTION_UP)
{
int x = arg1.getX();
int y = arg1.getY();
int XonImage = x * WidthRatio;
int YonImage = Y * HeightRatio;
if(bm.getPixel(XonImage, YonImage) == Color.RED)
{
// BINGOOOOOOO, do your magic here
}
}
return false;
}
});
欲瞭解更多信息,請不要猶豫。 乾杯
我會用一個FrameLayout。視圖層次應是:
<FrameLayout>
<ImageView vineyard>
<LinearLayout dots_holder>
<ImageView dot1/>
<ImageView dot2/>
<ImageView dotn/>
</LinearLayout>
</FrameLayout>
你點會在葡萄園圖像上被覆蓋,你可以添加一個OnClickListener各去一次。對於每個點ImageView的定位和尺寸,我會在代碼中進行一些動態計算。
有很多方法。您可能可以使用SemperFly的方法。也有onTouchListeners的意見,這將給你的座標。您可能需要翻譯座標以處理不同的屏幕密度。
你也許能夠將圖像分成網格,這可能會簡化或避免數學。另一種選擇是將圖像切成瓦片。你也可以使用像RelativeLayout這樣的東西。
您需要多準確的觸摸檢測?
問題在於圖像帶有紅點。我需要檢測這個點上的觸摸,然後我可以在彈出窗口中顯示一些信息。 – vandzi
不錯......什麼是「bm」? – Si8
bm是ImageView的位圖 – janex