gpt4 book ai didi

android - 缩放父 View 而不是 subview

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:42 24 4
gpt4 key购买 nike

我正在创建一个 Activity - 上面有一个平面图,在平面图上找到东西的地方有图钉。

这是 Activity 的布局:

<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 可绘制对象)。我即时创建一个相对布局 - 然后添加一个 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);

所有这些都运行良好。

所以在 Activity 中,我还提供了放大平面图的功能。

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

放大后,我允许用户在平面图上四处移动。这也很好用。当您在平面图上移动时,gps 引脚保持在它们应该在的位置(一切正常)。

我遇到的问题是,当我放大布局时,图钉也在缩放。我希望平面图上的 GPS 引脚保持其原始大小。

任何指针如何缩放父 View ,但不缩放 subview ?

最佳答案

我在创建自己的 map 时遇到了类似的问题。然而答案很简单。当您将父 View 放大两倍 (200%) 时,您必须将 subview 缩小两倍 (50%) 以补偿放大。这样 children 在屏幕上应该总是看起来一样。在我的例子中,我使用的是 ScaleGestureDetector,所以在缩放父级时,我必须像这样为它的子级设置比例:

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

关于android - 缩放父 View 而不是 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22352446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com