Android开发系列7——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(低) ~120dpi 0.75
mdpi(中) ~160dpi (基线) 1.0(基线)
hdpi(高) ~240dpi 1.5
xhdpi(低) ~320dpi 2.0
xxhdpi(低) ~480dpi 3.0
xxxhdpi(低) ~640dpi 4.0

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

  mipmap-anydpi-v26

启动页面或图片:
drawable
drawable-v24
Android开发系列7——icon图标和开机启动页_第1张图片
注意:
  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开发系列7——icon图标和开机启动页_第2张图片


一、Android应用图标

1.需要icon图片尺寸

icon的文件配置在资源目录下的mipmap文件夹下(res–>mipmap),其中:icon分别存放在mipmap为前缀的文件夹中,每个文件夹下icon的尺寸大小不同,下边会详细说明每个问价下文件的尺寸。
文件夹
Android开发系列7——icon图标和开机启动页_第3张图片
文件夹和尺寸对应表格

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

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


<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>

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

二、启动页面

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

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

启动页图片文件夹 图片尺寸(px)
res/drawable-xhdpi 720 × 1280
res/drawable-xxhdpi 1080 × 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);
    }
}

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


<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>

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

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

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


	
<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>

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

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

    
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        
        "colorPrimary">@color/colorPrimary
        "colorPrimaryDark">@color/colorPrimaryDark
        "colorAccent">@color/colorAccent
    style>


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

        "android:navigationBarColor">@android:color/transparent
        "android:statusBarColor">@android:color/transparent
        "android:windowIsTranslucent">true
        "android:windowBackground">@android:color/background_dark
    style>
resources>

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

总结

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

持续更新中……

你可能感兴趣的:(Android,Android启动页详解,Android图标,Android详解)