2014-03-12 61 views
4

我正在創建一個活動 - 它有一個平面圖上的銷釘,其中的東西在平面圖上找到。縮放家長但不是兒童的意見

下面是活動的佈局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:windowSoftInputMode="stateHidden" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:id="@+id/layout"> 
<requestFocus />  
</RelativeLayout> 

我設置的RelativeLayout的背景圖像的平面圖。

private RelativeLayout _layout; 
_layout = (RelativeLayout)findViewById(R.id.layout); 
_layout.setBackground(new BitmapDrawable(getResources(), map));    

我動態地在地圖上的各個位置放置引腳(與我的apk文件打包的png drawable)。我隨時創建一個相關佈局 - 然後在相關佈局中添加一個imageview(使用png文件),然後添加一個TextView(像引腳內有一個數字的gps引腳)。

RelativeLayout grouping = new RelativeLayout(this); 
    Bitmap img = BitmapFactory.decodeResource(getResources(), R.drawable.symbol); 
    ImageView symbol = new ImageView(this); 
    symbol.setImageBitmap(img); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    grouping.addView(symbol); 
TextView mapNum = new TextView(this); 
    grouping.addView(mapNum, params); 
    _layout.addView(grouping, params); 

所有這一切都很好。

所以在活動中,我還提供放大平面圖的能力。

_layout.setScaleX(_scaling); 
_layout.setScaleY(_scaling); 

一旦放大,我允許用戶在平面圖上移動。這也很好。當你在平面圖中移動時,gps引腳仍然保持在他們應該在的位置(都很好)。

我遇到的問題是當我放大布局 - 引腳也縮放。我希望樓層地圖上的GPS引腳保持原有尺寸。

任何指針如何縮放父,但不縮放子視圖?

回答

1

我在創建自己的地圖時遇到了類似的問題。但答案很簡單。當你把家長視圖變成兩倍(200%)時,你必須讓孩子縮小兩倍(50%)來彌補放大。這樣,孩子們應該總是在屏幕上看起來一樣。在我的情況下,我使用ScaleGestureDetector,所以在縮放父級時,我必須將比例設置爲像這樣的子級:

float childScale = 1.0f/parentScale; 
child->setScaleX(childScale); 
child->setScaleY(childScale);