gpt4 book ai didi

android - 如何在启动画面中定位位图

转载 作者:行者123 更新时间:2023-11-30 01:15:48 24 4
gpt4 key购买 nike

亲爱的,

我有一个正方形的 title.png,我以纵向模式(不要介意横向模式)在屏幕上端的(也是正方形的)TitleFragment 中显示它。现在我想在加载时向我的应用程序添加启动画面。我跟着这个tutorial它工作正常。我的 splash.xml 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/dark"/>
<item>
<bitmap
android:gravity="top"
android:src="@drawable/title"/>
</item>
</layer-list>

如您所见,我使用的是与 TitleFragment 中相同的 title.png,但是,我未能将其定位在与 TitleFragment 显示图像相同的相同位置。我的 titlefragment.xml 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/title"
tools:ignore="ContentDescription"/>
</FrameLayout>

mainactivity.xml 将其定位在屏幕顶部尽可能大的正方形中。

我的问题是:我可以模拟 fragment 在启动画面中的定位吗?我希望启动画面中的 title.png 和 titleFragment 中的 title.png 一致。我已经尝试过 splash.xml (android:gravity="top") 中的相关行,但无济于事。

编辑:这是一些屏幕截图。第一个是显示启动画面:

SplashActivity

第二个是显示主要 Activity (显然带有虚拟文本):

MainActivity

最佳答案

它们不匹配,因为普通位图不具有与 ImageView 相同的属性. ImageView 的默认刻度类型是FIT_CENTER .不幸的是,位图没有任何缩放属性。

您应该能够做的是,不要在主题中设置窗口背景(如 Splash Screens the Right Way 建议的那样),而是在您的 SplashActivity 中设置窗口背景。 .通过这种方式,您可以调整背景可绘制对象的边界以匹配屏幕大小:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

Display display = getWindowManager().getDefaultDisplay();

LayerDrawable drawable = (LayerDrawable) ContextCompat.getDrawable(this, R.drawable.splash);
drawable.setBounds(0, 0, display.getWidth(), display.getHeight());
getWindow().getDecorView().setBackground(drawable);

startMainActivity();
}

如果您还将包含可绘制标题的图层的重力设置为 top|center_horizontal ,这应该允许您调整 layer-list 中可绘制标题的大小匹配屏幕的宽度:

<item android:gravity="top|center_horizontal">
<bitmap android:drawable="@drawable/title"/>
</item>

尽管如此,这仍然可能无法为您提供完美的结果,尤其是在风景中。您可能仍想弄乱可绘制对象的大小,以及 ImageView 的比例类型。让它们匹配。

此方法还可能会减慢启动画面的启动时间,这绝对是不可取的。虽然,我使用的方法都不是资源密集型的,所以它应该可以忽略不计,但我还没有测试过。

关于android - 如何在启动画面中定位位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37880985/

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