在实践中有这么一个需求,有一个BaseActivity,相同布局放置在这个Activity中,其他Activity继承自BaseActivity。为了使所有Activity都统一使用背景图片,一般做法是在BaseActivity的根布局中设置背景图片,但是这样会有一个不好的效果就是当程序第一次启动的时候也就是主Activity启动的时候,会有一阵黑屏时间,如果主Activity做的事情比较多的话,这个黑屏时间就会很长(直观感觉就是启动很慢)。于是有资料就说,自定义activity的theme,设置属性android:windowBackground为需要的背景图片,这样程序启动的时候,背景图片会立马显示出来,给人的感觉就是启动很快了。

于是按照上面所说的方法,自定义了一个theme,并在manifest中设置给主activity

styles文件中自定义theme

<style name="MyTheme" parent="android:Theme.NoTitleBar.Fullscreen"/><style name="BaseTheme" parent="MyTheme"><item name="android:windowBackground">@mipmap/home_bg</item></style>

manifest中设置

<activityandroid:name=".MainActivity"android:theme="@style/BaseTheme">

虽然实现了主activity的背景,但是其他activity也同样需要这个背景。我在想是不是给BaseActivity设置theme属性,而其他activity继承自BaseActivity,这样就不需要为每个activity设置theme了。而事实并非如此,我在manifest中只设置了BaseActivity的theme,其他activity的theme都未设置,虽然其他activity都继承自BaseActivity,但是这个在manifest中设置的theme并未传递到其子类中。这是什么原因呢?

其实,用代码的方法也是可以把这个theme传递给其子activity的。具体这样做:

public class BaseActivity extends FragmentActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
//        setTheme(R.style.BaseTheme);setContentView(R.layout.base_title);}
}

就是在BaseActivity中的onCreate方法,在setContentView之前载入这个自定义的Theme。这样其他activity继承自BaseActivity就继承了其theme。

但是这样做了之后就出现了一个问题,程序启动的时候,背景有闪烁,究其原因就是,我的BaseTheme继承自系统默认的

android:Theme.NoTitleBar.Fullscreen

这效果是显示系统默认的背景,也就是当我启动activity的时候,先出现了系统默认的背景,很快又在出现我自己设置的背景图片。这样效果就差了许多。

所以,在menifest中设置theme和在代码中设置theme还是有区别的,只能说明,manifest中设置的theme优先执行与在onCreate中设置的theme。所以还是老实的在manifest中的对应activity中设置theme吧。

为activity设置主题theme相关推荐

  1. android alertdialog_Android进阶:Activity设置主题背景后AlertDialog的背景随之改变的问题分析

    在制作App的闪屏页时如果你仔细观察就会发现,每次你在手机桌面点击图标启动应用时会先出现一个白色背景(也就是我们通常所说的白屏),然后才会跳转到闪屏页. 就像这样: 关于如何解决启动时的白屏问题,大家 ...

  2. android_基础_常见主题theme风格详解

    本文出自门心叼龙的博客,转载请注明出处: https://blog.csdn.net/geduo_83/article/details/86560896 目录 1. 什么是Style,什么是Theme ...

  3. Activity动态设置主题

    Activity动态设置主题 android:theme 与 setTheme()设置透明效果并不同 一.在Manifest中设置主题 1.设置Application的主题在中添加android:th ...

  4. R语言ggplot2可视化设置不同的图像主题(theme):使用各种不同的主题(theme)可视化数据、单的黑白主题theme_bw主题(theme)、默认的主题(theme)可视化数据

    R语言ggplot2可视化设置不同的图像主题(theme):使用各种不同的主题(theme)可视化数据.单的黑白主题theme_bw主题(theme).默认的主题(theme)可视化数据 目录

  5. flutter theme:themeData() 统一设置主题颜色不起作用解决方法

    随着flutter组件的版本更新每一个组件的使用方法和作用都有了有些变化.今天我遇到的一个问题让我很头疼,网上找了很多没找到答案,试了好多方法最后找到了解决方法. 问题:flutter Materia ...

  6. android动态改变菜单栏,Android动态设置主题(使用RxBus模式)

    之前写过一篇文章:RxBus的实现及简单使用.今天我们尝试使用RxBus动态切换主题. 一.定义主题颜色 color.xml #F44336 #D32F2F #F44336 #E91E63 #C218 ...

  7. android设置主题和自定义主题的方法

    android设置主题和自定义主题的方法 嘿嘿,书接上回,android有两种设置主题到方法,一种就是通过修改manifest文件,一种就是在通过修改我们的java代码:主题的自定义设置和样式的自定义 ...

  8. Android 自定义Activity的主题

    一.  前言 当在某个app中做一个新界面时, 我们要考虑一下主题风格相符合一致. 本篇文章讲解的是,如何新创建的Activity 与整个app主题符合,  特别是状态栏的颜色需要和这个app的状态栏 ...

  9. Android做一个透明的Activity,设置Activity背景为透明style

    我们不生产代码,我们知识代码的搬运工,如有侵权,本人将第一时间删除 邮箱:zhf6751134@163.com QQ交流群:336237986 方法一: 通过Theme.Translucent < ...

最新文章

  1. ADO.NET连接数据库总结
  2. 全球及中国消费电子环境光传感器 (ALS)行业运行现状与十四五应用建设报告2022版
  3. 为什么你今年的去哪儿产品经理面试挂了?
  4. 【机器视觉】 assign_at算子
  5. callback回调使用 vue_Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸
  6. 杭电-------2048不容易系列之(4)考新郎(C语言)
  7. canvas生成图片toDataURL报错的原因和解决方法
  8. Mac如何解压rar,zip等各种格式文件
  9. 嵌入式linux镜像制作,嵌入式Linux根文件系统制做步骤(笔记)
  10. Java精品源码第83期在线旅游网站系统(推荐)
  11. XTDrone--执行roslaunch px4 indoor1.launch 遇到的问题
  12. 小米手机开启Root权限
  13. 教你快速分析大量圆通快递单号中揽收后没有物流的
  14. 集合竞价选股(股票)
  15. 企业招聘网络推广运营人员的岗位工作职责该如何写?
  16. 坐标反算c语言程序,道路坐标正反算无限个拐点计算器测量程序(新20070825)
  17. CacheCloud管理平台
  18. VMware ESXi网络配置
  19. 电商平台选择积分抵扣的两个原因
  20. 计算机考试专业知识,计算机考试专业知识:计算机系统软件

热门文章

  1. 刚注册的Linkedin账号
  2. 【100%通过率】华为OD机试真题 JS 实现【预订酒店】【2023 Q1 | 100分】
  3. 【Java】9、Java IO 流
  4. WeUI+移动端照片上传、显示、预览、下载功能
  5. Ayla艾拉物联基于AWS构建IoT艾拉云
  6. 前端生成pdf的js库-pdfmake.js的简单使用
  7. 基于OpenGL的雷达P显的系统设计与仿真 PPI_雷达仿真_雷达模拟器_雷达目标_雷达ppi_PPI显示器_源码
  8. 阿里服务器微信发不了图片,为什么微信发不了图片?这四招教你解决难题
  9. 互联网巨头前沿科技产品一览
  10. 联想微型计算机功率,联想小新pro 13 2019 i7 突破功耗墙以后