2011-07-12 57 views
0

Android的問題已經引起了一圈將焦點。 我已經作出了自定義ImageView的類和裏面我有一個的onDraw方法,其將利用特定像素的圓(使用帆布)。當我使用這個自定義的ImageView,打開了我的形象,我想將焦點設置在圓上,我已制定(例如,像谷歌地圖與您當前的位置做。焦點設爲您的當前點)Android的 - 對,我在我的onDraw方法

+0

你想要焦點的視覺表示,實際上把焦點設置到你的ImageView(w除非你處理它,否則它不會做任何視覺工作)或...? – Idistic

+0

imageview正在顯示,但我希望我的圈子在屏幕中間(因此有焦點)。因爲我的圖像很大並且離開屏幕(它有滾動條可以向上,向下,左右移動) –

+0

給予它「焦點」不會爲您重新定位圖像,仍然不確定您在此之後是什麼。這聽起來像你想要保持圓圈在顯示屏中居中,無論圖像當前翻譯到(平移)的位置是否正確? – Idistic

回答

0

什麼Google上的地圖服務器提供了一組自定義的瓷磚,以便中心顯示正確,而較新的版本當然是基於矢量的,因此他們只需繪製視圖,以便將其集中在他們想要的位置。

不知道你的應用程序的細節,你可能需要

創建自己的容器類,可能的FrameLayout

public class myMapFrameLayout extends FrameLayout { 

的倍率或者onDraw有或onDispatchDraw這樣就可以佈局你的瓷磚適當

找出在哪裏繪製位圖,以便您需要的x,y將位於屏幕的中心,然後繪製您需要的其他圖塊,以便根據whi填充空白處所需的座標CH方式平鋪被移動得到居中比是相同尺寸的實際屏幕與瓷磚所有周圍更大的虛擬屏幕的

思考

4 X 5

假設X是顯示的大小和表示你需要找出哪種方式來移動圖塊的當前瓦片,並且其其它瓦片1,2,3,4,5, 6,7或8您需要填寫由移動引起的空白空間

如果您必須從0,0中繪製瓦片+ x,則需要一些瓦片4,從0,0中繪製+ y意味着2中的某些和均值1,2,4均需要,等等,所以弄清楚組合和加載你需要的瓷磚,並找出每個繪製位置。這會給你新的虛擬瓷磚顯示中心。

這是對有效率,你可以得到我想用在客戶端的位圖的繪製方法。

UPDATE

因爲您的評論表示您有這將是一個有點問題,只有一個非常大的圖像,如果在x,y,你需要爲任何事情比的大小更接近邊緣顯示

儘管如此,你仍然可以繪製圖像,你需要它,只是測量屏幕,並在中心

因此與靶X繪製位圖,Y如果屏幕爲500×500,你的形象是5000x5000,中心位於x = 1000 y = 1000,然後是

drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) 

其中源矩形將1000-250,1000-250,500,500和DST矩形將0,0,500,500

250是中心x和顯示器的中心Y,1000是目標的x/y座標,500是顯示的大小。

再次,是在你將有一個空白多邊形在您的屏幕,因爲你沒有一個無限地圖瓦片

另外,您可以使用的LayoutParams特大型您的FrameLayout,只是平移畫布邊緣目標x和y以畫布爲中心的x,y您需要使用類似的calcs,這可能會更高效,不太確定

請記住,如果您的圖像是真的,您將使用大量內存大

+0

感謝您的回覆。在我的例子中,我只有1個圖像(這意味着它是1個地圖瓦片)。而這1張圖片/平鋪尺寸比屏幕尺寸要大。所以,目前我必須左右滾動,上下找到我的位置點.. –

+0

這對你來說不太好,那麼如果x,y在左上角。你能做的唯一的事情就是超大規模的圖像我想,修改上述回答 – Idistic

+0

感謝您的建議。我會嘗試解決這個問題,或者想辦法解決這個問題 –