我搜索了很多,但找不到任何有用的東西。我有一個複雜的PNG圖像,我想讓它觸摸,但只爲它的不透明區域。我爲它設置了一個觸摸監聽器,但即使我點擊了一個透明區域,它也會發送,這就是我不想要的。如何在Android中將透明區域設置爲不可觸及的ImageView?
回答
Touch監聽器適用於整個視圖而不是視圖的一部分..所以我建議您將圖像分成小塊,並在每個不透明的部分上添加觸摸監聽器。 我希望可以幫助您,以獲得更多的幫助,你也可以嘗試在這裏張貼的圖片,我們可以看到更好的,你想達到什麼..
@ user1716538:你爲什麼不u使用PNG圖像? U可以使用png圖像去除圖像中不需要的部分,因此點擊事件不會發生在圖像的這些部分。
嗨@vinod,你可以發佈示例代碼,包括這種方式的觸摸處理程序?我會着迷於嘗試它,因爲我以前沒有見過這種方法。 –
如果有任何方法可以清楚地清除透明區域,它將非常有用。請與我們分享示例代碼。謝謝。 – zaferaltun
下面是解我發現了什麼: 啓用繪圖緩存像iv.setDrawingCacheEnabled(真)ImageView的。然後獲取與觸摸偵聽器中的座標相匹配的位圖上的顏色。有效! BMP位= Bitmap.createBitmap(v.getDrawingCache()); int color = bmp.getPixel((int)event.getX(),(int)event.getY()); if(color == Color.TRANSPARENT)return false; – zaferaltun
由於@Cata說,觸摸事件將與整個圖像相關聯。然而,觸摸事件將告訴你在哪裏圖像中的觸摸是,所以可以編寫這樣的事情(忽略檢查正確的操作等):
@Override
public boolean onTouchEvent(MotionEvent event) {
boolean eventHandled = false;
int x = (int) (event.getX());
int y = (int) (event.getY());
if (imageIsOpaque(x,y) {
//Do the stuff
eventHandled = true;
}
return eventHandled;
}
這裏的關鍵是那麼imageIsOpaque,您將需要實現,在以下三種方式之一:
的圖像可以是容易段成不透明的和非不透明的區域在這種情況下:
boolean imageIsOpaque(int touchX, int touchY) { ArayList<Rect> rectsOfOpaqueness; // You will need to define these ... boolean isOpaque = false; for (int i=0; i<rectsOfOpaqueness.size() && !isOpaque; i++) { if (rectsOfOpaqueness.get(i).contains(touchX, touchY)) { isOpaque = true; } return isOpaque; }
圖像可能不容易處理,在這種情況下,您將需要使用x和y觸摸位置檢查源圖像(縮放到屏幕上的大小),以確定該點是否不透明。編輯:你似乎已經在下面的@vinod的評論中以相當整潔的方式使用了這個解決方案,所以我建議其他讀者也檢查一下這個評論。
甚至更複雜的,它可能是你contructing在飛行中的圖像,並永遠不會真正知道它在一個可搜索的方式最終狀態。如果是這種情況,您將需要建立一個單獨的二維布爾數組,當您創建圖像時確定哪些點是不透明的,哪些不是。
這種方法看起來不錯,但我認爲它的表現會很糟糕。也很難處理像素。然而,謝謝你回答 – zaferaltun
謝謝 - 我已經看過你對@vinod的評論,看起來像我的答案中的選項2的整齊實現,所以我已經提供了一個參考。 –
- 1. 在Xcode 6中將導航區域設置爲不透明
- 2. 如何設置ImageView透明
- 3. 刪除ImageView中的透明區域
- 4. 如何在android中將透明度設置爲0%到100%的imageview不透明度?
- 5. ImageView透明設置邊緣/邊框Android
- 6. 將不透明區域拉到圖像中透明區域的中心
- 7. 如何將圖像的選定區域設置爲ImageView
- 8. 如何在Android 1.6中將GLSurfaceView設置爲半透明?
- 9. 如何在Android中將AutoCompleteTextView下拉背景設置爲透明?
- 10. Android透明區域點擊
- 11. 如何繪製列表下的ImageView具有透明區域
- 12. Python PIL - 具有不透明度> 0的所有PNG區域都將其不透明度設置爲1
- 13. Android/Eclipse:png圖像中的透明區域
- 14. 如何在android中設置不同的區域設置?
- 15. 如何設置位圖的指定顏色區域來透明?
- 16. 將不透明設置爲android中的自定義顏色(setAlpha)
- 17. JWindow區域不透明
- 18. 在android中的透明imageView的邊框
- 19. 將不透明度設置爲PictureDrawable
- 20. 將不透明度設置爲ImageButton?
- 21. 設置SKSpriteNode的可觸摸區域
- 22. 將ImageView設置爲PaintDrawable - Android
- 23. 如何在android中設置ListView行的不透明度?
- 24. 如何使Canvas在android中繪製區域透明?
- 25. 在userControl/pictureBox中製作透明的,不可滑動的區域
- 26. Android:如何在google map API中將imageView設置爲標記android?
- 27. 如何使Android ImageView部分透明
- 28. Android:如何獲取圖像中的透明區域
- 29. 如何在java中設置dragshadow不透明度 - android
- 30. 在Iphone中使圖像的觸摸區域透明
我也在旋轉一些動畫的圖像,所以我不能分割它。感謝您的回覆。 – zaferaltun