前言

  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

注意:
  drawable-v24 代表Android7.0以上版本设备的资源文件存放文件夹
  mipmap-anydpi-v26代表Android8.0以上版本的资源文件存放文件夹

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

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

根据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-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(可以随意命名)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.ftimage.firstandroid"><applicationandroid: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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_lauch);new android.os.Handler().postDelayed(new Runnable() {@Overridepublic void run() {Intent mainIntent = new Intent(LaunchActivity.this, MainActivity.class);LaunchActivity.this.startActivity(mainIntent);LaunchActivity.this.finish();}},splash_display_length);}
}

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"><ImageViewandroid: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放在最前。如下图

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.ftimage.firstandroid"><applicationandroid: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><!-- 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>

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

总结

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

持续更新中……

Android开发系列7——icon图标和开机启动页相关推荐

  1. 羊皮书APP(Android版)开发系列(四)全屏幕延迟启动

    羊皮书APP(Android版)开发系列(四)全屏幕延迟启动 APP启动时经常会有一张启动图片,有几秒钟的展示时间,做法很简单,使用Handler的postDelayed方法即可. 配置全屏:在sty ...

  2. 解决Android singleInstance 按home退到桌面从桌面点击应用图标又从启动页重新启动的问题

    解决Android singleInstance 按home退到桌面从桌面点击应用图标又从启动页重新启动的问题 最近项目中有处理腾讯IM视频语音聊天切换到悬浮窗功能, 初解决方案: 语音/视频通话界面 ...

  3. Android开发系列(三)

    这是更加android开发文档,写的我的第一个Android开发项目,就是在屏幕上显示一个简单的Hello World.       首先介绍几个概念:       AVD,AVD的全称为:Andro ...

  4. 云炬Android开发笔记 3-2字体图标库集成与封装

    1.项目:android-iconify点此链接到Github 这是一个字体图标库,用字体来代替很多图片. Android开发经常将很多本地图标放在drawable和mipmap文件夹下,这样有一些坏 ...

  5. 最新网易微专业 Android开发系列

    目录 ├─1.Android应用界面开发 │  ├─001 Android开发简介.flv │  ├─002 开始第一个应用.flv │  ├─003 Activity你必须知道的那些事(上).flv ...

  6. Android开发系列全套课程(视频教程50G)

    本系列课程面向有java基础,想进入企业从事android开发的计算机专业者.学习搭配实战案例,高效掌握岗位知识. 原来地址失效 链接已更新(2021年5月1号更新): https://pan.bai ...

  7. 在Android Studio中使用icon图标

    在Android中使用icon图标 下载ttf文件 进入iconfont.cn,并登录选择自己要的icon图标 选择添加入库,点击自己的库 选择下载代码 引用 新建Assets文件夹 将下载的icon ...

  8. 零基础学Android开发系列

    目标:沉浸了这么久,准备写点文章,在写文章的同时,巩固Android开发的基础知识,每天一个Android小案例,从零带领大家开发简单的Android应用.

  9. Android如何配置init.rc中的开机启动进程(service)【转】

    本文转载自:http://blog.csdn.net/qq_28899635/article/details/56289063 开篇:为什么写这篇文章 先说下我自己的情况,我是个普通的大四学生,之前在 ...

最新文章

  1. 时间和邮箱的正则表达式,获取当前时间函数
  2. java 流转文件_java 实现 word 文档的在线编辑以及流转
  3. Boosting(提升方法)之XGBoost
  4. 统计:mAP的中文意思
  5. 使用jmap来生成堆转储快照
  6. 【Qt教程】2.2 - Qt5 布局管理器(水平、垂直、栅格布局)、弹簧、设计一个登陆界面
  7. Spring Servlet 拦截器 过滤器
  8. Python之 多重循环
  9. 基于Unity官方素材开发的3D二人沙漠坦克大战
  10. <笠翁对韵>全文及译文(上卷)
  11. JavaScript中事件的绑定与解绑
  12. C语言谭浩强(第五版)答案6、8章
  13. Windows环境下Nginx配置本地虚拟域名和Nginx代理
  14. 浅入浅出 1.7和1.8的 HashMap
  15. 网络工程大一课程c语言,网络工程专业主要开哪些课程?
  16. 以计算为中心的下一代数据中心交换网络
  17. 从单片机到ARM Linux驱动——Linux驱动入门篇
  18. 惠普服务器删除系统还原,惠普电脑系统还原的详细操作步骤
  19. 6.s081 lab 4
  20. python轻松过滤处理脏话与特殊敏感词汇的方法

热门文章

  1. 观察 | 从0到700万,钉钉只用3年,原因就是快准狠!
  2. 实验:ospf与BFD联动实验(EVE模拟器-Cisco)
  3. 分享30个独特的 404 错误页面设计模板
  4. Silverlight 中文教程第五部分:用 ListBox 和 DataBinding 显示列表数据 (木野狐译)
  5. 当我精通vue2的源码dep和watcher的关系时
  6. uniapp分享到微信流程
  7. 计算机组成原理——磁盘存储器的技术指标
  8. 东南大学计算机学院保研比例,东南大学计算机科学与工程学院计算机技术(专业学位)保研...
  9. MC34063A MC34063 贴片SOP-8 变换器控制芯片 电流0.8A 1.2A 1.5A
  10. ubuntu14.04使用reaver跑pin码