当前位置:   article > 正文

Android开发系列7——icon图标和开机启动页_android android:icon

android android:icon

前言

  Android开发App过程中,需要一个独特吸引眼球的应用icon,以及标新的Launch页面用于简明的介绍。为了适配各种 手机的尺寸和手机屏幕分辩率,需要同一张图片制作多种尺寸用于兼容各种不同分辨率的设备。

  DPI(Dots Per Inch,每英寸点数)是一个量度单位。

  Android系统为了简化开发者为多种屏幕设计用户界面,Android将实际屏幕尺寸和范围作了通用的规定,是以DPI的范围进行定义的六种通用密度(ldpi、mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi)。Android通用密度是以mdpi(中)为基线配置的,此基线基于第一代Android设备(T-Mobile G1 160dpi)的屏幕配置。以mdpi为基线,各密度范围的放大倍数(即缩放因子density)Scale = 设备所在密度范围中最大dpi值 / mdpi(基线 160dpi) 如下图:

密度dpi范围放大倍数
ldpi(低)~120dpi0.75
mdpi(中)~160dpi (基线)1.0(基线)
hdpi(高)~240dpi1.5
xhdpi(低)~320dpi2.0
xxhdpi(低)~480dpi3.0
xxxhdpi(低)~640dpi4.0

  Android项目的资源文件会创建针对不同设备的资源文件的文件夹:
其中:
资源文件夹下mipmap和drawable文件是存放图片文件
icon图片存储文件夹:
  mipmap-mdpi(中度密度)
  mipmap-hdpi(高密度)
  mipmap-xhdpi(超高密度)
  mipmap-xxhdpi(超超高密度)
  mipmap-xxxhdpi(超超超高密度)

  mipmap-anydpi-v26

启动页面或图片:
drawable
drawable-v24
图片资源路径
注意:
  drawable-v24 代表Android7.0以上版本设备的资源文件存放文件夹
  mipmap-anydpi-v26代表Android8.0以上版本的资源文件存放文件夹

Android中图片适配的流程如下:
可以参考:Android开发系列6——项目中res详解

Created with Raphaël 2.2.0 Android设备dpi屏幕密度 查找drawable/mipmap对应设备屏幕密度图片(ldpi、 mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi 不同密度) 不缩放图片 显示图片 去更高屏幕密度文件夹查找图片文件 是否查找到 缩放图片 显示图片 是否有更高密度的文件夹 查找drawable/mipmap的nodpi文件夹 从匹配的低一级drawable/mipmap文件夹依次查找 是否查找到 查找不到资源 yes no yes no yes no yes no yes no

根据Android UI适配图片文件查找的方式,把项目中的目录drawable-v24、mipmap-anydpi-v26删除,并且创建如下图所示的文件目录,随后会讲解App的icon和启动页图片。
在这里插入图片描述


一、Android应用图标

1.需要icon图片尺寸

icon的文件配置在资源目录下的mipmap文件夹下(res–>mipmap),其中:icon分别存放在mipmap为前缀的文件夹中,每个文件夹下icon的尺寸大小不同,下边会详细说明每个问价下文件的尺寸。
文件夹
在这里插入图片描述
文件夹和尺寸对应表格

图标文件夹尺寸(px)系统密度(dpi)
res/drawable-ldpi (可以不用这个文件)36 * 36~120
res/drawable-mdpi48 * 48~160
res/drawable-hdpi72 * 72~240
res/drawable-xhdpi96 * 96~320
res/drawable-xxhdpi144 * 144~480
res/drawable-xxxhdpi192 * 192~640
2.配置icon

Android的应用图标icon 配置在AndroidManifest.xml文件中,配置android:icon和android:roundIcon(可省略)对应mipmap文件下icon图片文件名字ic_launcher_app(可以随意命名)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ftimage.firstandroid">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher_app"  
        
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_app"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".LauchActivity"></activity>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

配置成功之后,就可以测试使用。

二、启动页面

  Android上的启动页和IOS启动页是有区别的,在IOS中,启动页只需要切图不同尺寸的图片,配置到项目中就可以支持不同的设备。而Android的启动页需要单独创建一个LaunchActivity来呈现启动页。

  启动页上图片和项目中的图片都是存储在drawable文件夹中,为了减轻UI切图压力和App资源包大小,一般情况下都只保留drawable-xhdpi、drawable-xxhdpi两种图片尺寸(IOS中的@2x、@3x图)。所以需要的切图的启动页尺寸:

启动页图片文件夹图片尺寸(px)
res/drawable-xhdpi720 × 1280
res/drawable-xxhdpi1080 × 1920
1.创建启动页LaunchActivity

创建一个用于启动页面的Activity,App启动展示启动页LaunchActivity之后就,跳转到App的主页。所以LaunchActivity需要如下操作

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;

public class LaunchActivity extends AppCompatActivity {

    private final int splash_display_length = 1000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lauch);

        new android.os.Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent mainIntent = new Intent(LaunchActivity.this, MainActivity.class);
                LaunchActivity.this.startActivity(mainIntent);
                LaunchActivity.this.finish();
            }
        },splash_display_length);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

LaunchActivity启动页的xml文件配置显示如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".LaunchActivity"
    >

    <ImageView
        android:id="@+id/imageViewL"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:adjustViewBounds="true"

        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"

        app:srcCompat="@drawable/ic_launcher_bg"
        >

    </ImageView>

</androidx.constraintlayout.widget.ConstraintLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

其中启动图片是:ic_launcher_bg,图片切割类型android:scaleType=“centerCrop”。

2.配置AndroidManifast文件设置启动主题

需要把LaunchActivity的Activity配置如下,并且需要把LaunchActivity放在最前。如下图


	<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ftimage.firstandroid">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher_app"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".LaunchActivity" android:theme="@style/LaunchTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

注意:LaunchActivity需要在style.xml中配置LauchTheme主题。(如果不配置,启动只有会出现navigationBar和黑屏现象

3.配置LaunchActivity的主题格式style.xml
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>


    <style name="LaunchTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>

        <item name="android:navigationBarColor">@android:color/transparent</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/background_dark</item>
    </style>
</resources>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

style.xml文件主要配置隐藏:navigationBar和全屏显示,以及android:windowIsTranslucent进行隐藏黑屏等问题。

总结

  Android的icon和启动页的配置并不复杂,主要是需要理解Android在UI适配过程中,图片资源读取的底层原理。

持续更新中……

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/126365?site
推荐阅读