Dar*_*g8r 4 android android-layout android-drawable
我有一个带有启动屏幕视图的应用程序,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/black">
<ImageView android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/splash2"
android:scaleType="centerInside"
android:adjustViewBounds="true"
/>
<TextView
android:id="@+id/txtVersion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:textSize="20dip"
android:visibility="invisible"
android:text="Version "/>
<LinearLayout
android:id="@+id/lvSplashInfo"
android:layout_width="fill_parent"
android:layout_height="120dp"
android:layout_marginRight="40dp"
android:layout_marginLeft="40dp"
android:layout_alignParentBottom="true"
android:orientation="vertical"
android:visibility="invisible"
android:background="@android:color/black">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="bleh"
android:layout_margin="5dp"
android:layout_gravity="center_horizontal"
android:textColor="@android:color/white"/>
<TextView
android:id="@+id/txtPercent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="0% of the total"
android:layout_margin="5dp"
android:textSize="18sp"
android:gravity="center_horizontal"
android:textColor="#9DBA32"/>
<TextView
android:id="@+id/txtFilename"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="File name: xxxxx"
android:layout_margin="5dp"
android:textSize="18sp"
android:visibility="invisible"
android:gravity="center_horizontal"
android:textColor="@android:color/white"/>
</LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
它呈现缩放并居中到屏幕中的图像。不幸的是,这对我们来说效果不佳。在加载视图之前,它会导致轻微的白色闪烁。我的解决方案是使用活动样式。效果很好,除了我似乎无法居中和缩放图像。我可以轻松地将其居中,但它比屏幕更宽。这是我的 xml drawable:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/black"/>
<item>
<bitmap
android:gravity="center|bottom|clip_vertical"
android:src="@drawable/splash2"
/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
如何缩放并居中该 splash2 图像?
小智 11
您可以在 Photoshop 中制作图像,将其放入 xml 中,然后将整个内容居中,但我建议在加载应用程序时使用启动画面,因为如果您使用计时器来设置它,则会浪费用户的时间......就是这样我确实有一个像这样的启动画面: 
首先,您必须添加一个新的Java class,我们称之为SplashActivity.java
您不必添加太多内容:
package YOUR-PACKAGE-NAME;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Intent i = new Intent(SplashActivity.this, MainActivity.class);
startActivity(i);
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
在那之后,你必须有一个用于启动画面的可绘制对象,因为如果你有一个布局,它会在应用程序已经加载时出现,所以在启动画面中将没有任何意义......转到drawable文件夹并创建一个名为background_splash.xml. 你在那里添加
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center">
<item>
<bitmap
android:src="@drawable/ic_splash"
/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
ic_splash我用 Photoshop 创建的图像在哪里,分辨率为 1280x720,然后创建了一个 9-patch 图像......(你必须有 9-patch 图像,而不是在不同的设备上有正常的、小的和裁剪的图像......)所以去在这里生成你的......创建它,下载它并将所有文件夹(mdpi, hdpi等)复制到你的res文件夹......
现在,转到你的values/styles.xml并添加NoActionBar样式
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
然后打开您Manifest.xml的活动并使用intent-filter.
你的应该是
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
因此,将.MainActivitywith.SplashActivity和 the替换.MainActivity为另一个活动,因此最后您应该至少在以下位置声明两个活动Manifest.xml:
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher" or "@mipmap/ic_launcher"
android:theme="@style/AppTheme">
</activity>
Run Code Online (Sandbox Code Playgroud)
祝你好运!:) 如果有什么问题,请问:)
| 归档时间: |
|
| 查看次数: |
5231 次 |
| 最近记录: |