Android4.4 设置APP背景全屏(含状态栏和标题栏)
- 格式:docx
- 大小:77.61 KB
- 文档页数:2
Android中activity背景⾊的设置主题Theme就是⽤来设置界⾯UI风格,可以设置整个应⽤或者某个活动Activity的界⾯风格。
在Android SDK中内置了下⾯的Theme,可以按标题栏Title Bar和状态栏Status Bar是否可见来分类:这些主题可以应⽤到整个应⽤Application范围或者某个活动Activity范围中。
应⽤Application范围:在AndroidManifest.xml中的application节点中设置theme属性,主题theme应⽤到整个应⽤程序中。
活动Activity范围:使⽤java代码或者在AndroidManifest.xml中对活动Activity的主题进⾏设置,主题仅应⽤到当前活动中。
在AndroidMainifest.xml设置⽅法:(XML中代码间不能有空格,注意中英⽂引号)使⽤java代码进⾏设置,在当前活动Activity的onCreate中进⾏设置:[java] view plaincopyprint?@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setTheme(android.R.style.Theme_Translucent_NoTitleBar);setContentView(yout.main);}背景颜⾊还可以在布局XML中设置:<LinearLayout xmlns:android="/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#ffffff">直接设置Activity的背景颜⾊⼀般我们都是使⽤布局⽂件直接加载到Activity,从⽽覆盖了Activity的颜⾊。
Android实现修改状态栏背景、字体和图标颜⾊的⽅法前⾔:Android开发,对于状态栏的修改,实在是不友好,没什么api可以⽤,不像ios那么⽅便.但是ui⼜喜欢只搞ios⼀套.没办法.各种翻源码,写反射.真的蛋疼.需求场景:当toolbar及状态栏需要为⽩⾊或浅⾊时(如简书),状态栏由于⽤的Light风格Theme,字体,图标也都是⽩⾊,会看不清.如果改变成⿊⾊就很和谐了.⼀.修改状态栏颜⾊:改变状态栏颜⾊,可以看看这篇⽂章.传送门:传送门实现的效果:这种⽅法实现的状态栏变⾊,没有⿊⾊背景.使⽤全屏模式实现的效果如下(QQ的效果):很明显的⿊⾊背景.我⽤的⼿机是华为,系统7.0⼆.修改状态栏字体:通⽤⼯具类:public class StatusBarUtil {/*** 设置状态栏⿊⾊字体图标,* 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android** @return 1:MIUUI 2:Flyme 3:android6.0*/public static int getStatusBarLightMode(Window window) {int result = 0;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {if (MIUISetStatusBarLightMode(window, true)) {result = 1;} else if (FlymeSetStatusBarLightMode(window, true)) {result = 2;} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);result = 3;} else {//5.0}}return result;}/*** 已知系统类型时,设置状态栏⿊⾊字体图标。
在Android中怎样将屏幕设置成无标题栏或者全屏在进行UI设计时,我们经常需要将屏幕设置成无标题栏或者全屏。
那么我们应该如何实现呢?其实在Android中将屏幕设置成无标题栏或者全屏是非常简单的,主要有两种方法,在这里欧柏泰克小编和大家一起分享下吧:配置xml文件和编写代码设置。
1.在xml文件中进行配置在项目的清单文件AndroidManifest.xml中,找到需要全屏或设置成无标题栏的Activity,在该Activity进行如下配置即可。
实现全屏效果:android:theme="@android:style/Theme.NoTitleBar.Fullscreen"实现无标题栏(但有系统自带的任务栏):android:theme="@android:style/Theme.NoTitleBar"2.编写代码设置在程序中编写代码进行设置,只需在onCreate()方法中加入如下代码即可实现全屏效果:getWindow().setFlags(youtParams.FLAG_FULLSCREEN, youtParams.FLAG_FULLSCREEN);实现无标题栏(但有系统自带的任务栏):requestWindowFeature(Window.FEATURE_NO_TITLE);附:Android系统自带样式android:theme="@android:style/Theme.Dialog" 将一个Activity显示为能话框模式android:theme="@android:style/Theme.NoTitleBar" 不显示应用程序标题栏android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 不显示应用程序标题栏,并全屏android:theme="Theme.Light" 背景为白色android:theme="Theme.Light.NoTitleBar" 白色背景并无标题栏android:theme="Theme.Light.NoTitleBar.Fullscreen" 白色背景,无标题栏,全屏android:theme="Theme.Black" 背景黑色android:theme="Theme.Black.NoTitleBar" 黑色背景并无标题栏android:theme="Theme.Black.NoTitleBar.Fullscreen" 黑色背景,无标题栏,全屏android:theme="Theme.Wallpaper" 用系统桌面为应用程序背景android:theme="Theme.Wallpaper.NoTitleBar" 用系统桌面为应用程序背景,且无标题栏android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" 用系统桌面为应用程序背景,无标题栏,全屏android:theme="Translucent" 透明背景android:theme="Theme.Translucent.NoTitleBar" 透明背景并无标题android:theme="Theme.Translucent.NoTitleBar.Fullscreen" 透明背景并无标题,全屏android:theme="Theme.Panel" 面板风格显示android:theme="Theme.Light.Panel" 平板风格显示。
Android五种隐藏状态栏和标题栏的⽅法Android五种隐藏状态栏和标题栏的⽅法⽅法⼀:public class MainActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);// 隐藏标题栏requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏状态栏getWindow().setFlags(youtParams.FLAG_FULLSCREEN,youtParams.FLAG_FULLSCREEN);setContentView(yout.activity_main);}}⽅法⼆:<!-- 同时隐藏状态栏和标题栏 --><activityandroid:name="com.ysj.demo.MainActivity"android:theme="@android:style/Theme.NoTitleBar.Fullscreen"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /></intent-filter></activity>⽅法三:<!-- Application theme. --><style name="AppTheme" parent="AppBaseTheme"><!-- All customizations that are NOT specific to a particular API-level can go here. --><!-- 隐藏状态栏 --><item name="android:windowFullscreen">true</item><!-- 隐藏标题栏 --><item name="android:windowNoTitle">true</item></style>⽅法四:动态显⽰隐藏状态栏//隐藏状态栏youtParams lp = context.getWindow().getAttributes();lp.flags |= youtParams.FLAG_FULLSCREEN;context.getWindow().setAttributes(lp);//显⽰状态栏youtParams attr = context.getWindow().getAttributes();attr.flags &= (~youtParams.FLAG_FULLSCREEN);context.getWindow().setAttributes(attr);⽅法五:动态显⽰隐藏状态栏View类提供了setSystemUiVisibility和getSystemUiVisibility⽅法,这两个⽅法实现对状态栏的动态显⽰或隐藏的操作,以及获取状态栏当前可见性。
软件应用界面个性化设置教程随着科技和互联网的快速发展,软件应用在我们的日常生活中发挥着越来越重要的作用。
然而,由于每个人对软件界面的需求和喜好各不相同,很多时候默认的界面设置并不能完全满足我们的要求。
因此,个性化设置成为了一项十分重要的功能,能够让我们根据自己的喜好来调整软件的界面,提高使用体验。
本文将为大家介绍几种常见的软件应用界面个性化设置方法。
一、主题设置主题设置是软件界面个性化的基本功能之一,通过更换主题可以改变软件的外观,给人焕然一新的感觉。
大多数软件都提供了多种不同风格的主题供用户选择,如明亮、暗黑、清新、简约等。
在设置中查找主题选项,并根据个人喜好选择合适的主题进行更换即可。
二、背景图片设置背景图片是个性化软件界面的另一个重要元素。
许多软件都支持自定义背景图片,用户可以根据自己的喜好选择自己喜欢的图片作为软件的背景。
一些软件还提供了背景图片库,用户可以从中选择自己喜欢的图片进行设置。
点击设置中的背景图片选项,选择或上传合适的图片即可更换软件的背景。
三、字体设置字体设置能够调整软件中文字的样式和大小,使得文字更加清晰易读或者符合个人喜好。
在设置中找到字体选项,选择适合自己的字体样式和大小进行设置。
一些软件还提供了自定义字体的功能,用户可以根据自己的需求添加自己喜欢的字体。
四、布局设置布局设置是针对软件界面中各个元素的排列和显示进行调整的功能。
一些软件提供了自定义界面布局的功能,用户可以根据自己的使用习惯将各个操作按钮、菜单等元素进行移动、添加、删除等操作,以便更好地满足个性化需求。
在设置中查找布局设置选项,根据个人喜好进行调整即可。
五、快捷键设置快捷键设置是提高软件操作效率的重要方法之一。
通过为常用的功能设置快捷键,可以方便快速地调用,避免繁琐的鼠标操作。
在设置中找到快捷键选项,根据自己的习惯设置相应的快捷键即可。
一些软件还允许用户自定义快捷键,可以根据自己的需求进行设置。
六、界面布局保存和加载一旦完成了个性化设置,希望能够保存当前的界面布局,并在下次启动软件时加载出来。
安卓手机页面设置方法在安卓手机上,页面设置是指调整屏幕显示的内容和布局,以便更好地适应用户的需求和喜好。
以下是一些常见的安卓手机页面设置方法。
一、壁纸设置1. 找到手机的“设置”应用,一般在应用列表中或者在快捷设置菜单中。
2. 在“设置”中找到“壁纸”选项。
3. 点击“壁纸”,选择“主屏幕”或者“锁定屏幕”。
4. 在壁纸库中选择您喜欢的图片或者从相册中选择图片。
5. 调整壁纸的位置和缩放方式,然后保存设置即可。
二、字体大小调整1. 找到手机的“设置”应用。
2. 在“设置”中找到“显示”或者“屏幕显示”选项。
3. 点击“显示”或者“屏幕显示”,找到“字体大小”选项。
4. 在字体大小选项中,选择适合您的字体大小,或者点击“自定义”调整字体大小。
5. 保存设置并退出。
三、图标布局调整1. 长按主屏幕上的空白区域,进入主屏幕设置界面。
2. 点击“桌面布局”或者“图标布局”选项。
3. 在布局选项中,选择您想要的图标尺寸和行列数。
4. 拖动图标到新的位置,或者删除不需要的图标。
5. 保存设置并退出。
四、通知栏和快捷设置定制1. 下拉通知栏,并点击右上角的“设置”图标。
2. 在设置菜单中,找到“通知和状态栏”或者“快捷设置”选项。
3. 点击“通知和状态栏”或者“快捷设置”,进入设置界面。
4. 可以根据需要进行以下操作:- 调整通知栏样式:选择是否显示通知图标和通知内容等。
- 设置快捷开关:选择要显示的快捷开关,并调整排序和显示方式。
- 隐藏特定通知:选择哪些应用的通知显示在通知栏上。
- 调整状态栏图标:可以隐藏或显示特定的状态栏图标。
- 其他定制选项:可以根据需要设置铃声、震动等通知方式。
5. 保存设置并退出。
五、屏幕显示分辨率调整1. 找到手机的“设置”应用。
2. 在“设置”中找到“显示”或者“屏幕显示”选项。
3. 点击“显示”或者“屏幕显示”,找到“分辨率”选项。
4. 在分辨率选项中,选择您想要的屏幕分辨率。
Androidapp启动时⿊屏或者⽩屏的原因及解决办法1、产⽣原因其实显⽰⿊屏或者⽩屏实属正常,这是因为还没加载到布局⽂件,就已经显⽰了window窗⼝背景,⿊屏⽩屏就是window窗⼝背景。
⽰例:2、解决办法通过设置设置Style(1)设置背景图Theme通过设置⼀张背景图。
当程序启动时,⾸先显⽰这张背景图,避免出现⿊屏<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><item name="android:screenOrientation">portrait</item><item name="android:windowBackground">>@mipmap/splash</item><item name="android:windowIsTranslucent">true</item><item name="android:windowNoTitle">true</item></style>(2)设置透明Theme通过把样式设置为透明,程序启动后不会⿊屏⽽是整个透明了,等到界⾯初始化完才⼀次性显⽰出来<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><item name="android:windowNoTitle">true</item><item name="android:windowBackground">@android:color/transparent</item><item name="android:windowIsTranslucent">true</item><item name="android:screenOrientation">portrait</item></style>两者对⽐:Theme1 程序启动快,界⾯先显⽰背景图,然后再刷新其他界⾯控件。
A NDROID 获取屏幕高度、标题高度、状态栏高度详解Jojol_Zhou ,2010/11/29Android获取屏幕高度的方法主要由view提供通过View提供的方法获取高度方式有两种:1,当前显示的view中直接获取当前view高宽2,通过Activity的getWindow().findViewById(Window.ID_ANDROID_CONTENT)获取系统当前显示的view根(是一个framelayout对象),android绘制会将要绘制的view放置在framelayout中绘制。
下面分别介绍获取屏幕的高宽度方法虚线区域介绍:View获取屏幕参数值方法:Display对象获取屏幕高宽:获取display对象Activity中getWindowManager().getDefaultDisplay() getWidth() 返回显示界面宽度即屏幕宽度getHeight() 返回显示界面高度即屏幕高度由display对象设置DisplayMetrics高宽值,通过DisplayMetrics 对象获取屏幕高宽,有点多此一举:getWidth() 返回显示界面宽度即屏幕宽度getHeight() 返回显示界面高度即屏幕高度常用一些值计算:屏幕高宽Canvas对象、display对象和DisplayMetrics可获取屏幕的高宽状态栏高度View的getWindowVisibleDisplayFrame(Rect outRect)附值outRect后,outRect.top()即是状态栏高度标题高度View的getWindowVisibleDisplayFrame(Rect outRect1)附值outRect后,outRect.height()-view.getheight()即是标题高度。
绘制区域高宽方法诸多随便用。
测试:测试代码scrollTo(10, 10);super.draw(canvas);Display d = bReader.getWindowManager().getDefaultDisplay();Log.e("====DisPlay size==","Height--"+d.getHeight()+" Width--"+d.getWidth()); DisplayMetrics dm = new DisplayMetrics();d.getMetrics(dm);Log.e("====DisPlayMetrics size==","Height--"+d.getHeight()+" Width--"+d.getWidth());Log.e("====View size==","Height--"+getHeight()+" Width--"+getWidth()+"Top--"+getTop()+" Left--"+getLeft());View v =bReader.getWindow().findViewById(Window.ID_ANDROID_CONTENT); Log.e("====CONTENTView size==","Height--"+v.getHeight()+" Width--"+v.getWidth()+"Top--"+v.getTop()+" Left--"+v.getLeft());Log.e("======canvas size==", "height--"+canvas.getHeight()+" width--"+canvas.getWidth());Rect rect = new Rect();this.getDrawingRect(rect);Log.e("====view Drawing Rect==", "height--"+rect.height()+"width--"+rect.width()+" Top--"+rect.top+" Left--"+rect.left+"scrollx--"+getScrollX()+" scrollY--"+getScrollY());this.getWindowVisibleDisplayFrame(rect);Log.e("====view WindowVisible rect==", "height--"+rect.height()+" width--"+rect.width()+" Top--"+rect.top+" Left--"+rect.left);测试结果输出:====DisPlay size==(3032): Height--480 Width--320====DisPlayMetrics size==(3032): Height--480 Width--320====View size==(3032): Height--430 Width--320 Top--0 Left--0====CONTENTView size==(3032): Height--430 Width--320Top--50 Left--0======canvas size==(3032): height--480 width--320====view Drawing Rect==(3032): height--430 width--320 Top--10 Left--10 scrollx--10 scrollY--10====view WindowVisible rect==(3032): height--455 width--320Top--25 Left--0。
Android自适应不同分辨率或不同屏幕大小的layout布局(横屏|竖屏)一:不同的layoutAndroid手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢?其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。
二:hdpi、mdpi、ldpi在之前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。
drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:(1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)(2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)(3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。
更正:应该是对应不同density 的图片在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。
[i]备注:三者的解析度不一样,就像你把电脑的分辨率调低,图片会变大一样,反之分辨率高,图片缩小。
[/i]屏幕方向:横屏竖屏自动切换:可以在res目录下建立layout-port-800x600和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,这样在手机屏幕方向变化的时候系统会自动调用相应的布局文件,避免一种布局文件无法满足两种屏幕显示的问题。
不同分辨率横屏竖屏自动切换:以800x600为例可以在res目录下建立layout-port-800x600和layout-land-800x600两个目录不切换:以下步骤是网上流传的,不过我自己之前是通过图形化界面实现这个配置,算是殊途同归,有空我会把图片贴上来。
超简单的⼏⾏代码搞定Android底部导航栏功能超简单,⼏⾏代码搞定Android底部导航栏—–应项⽬需求以及⼩伙伴的留⾔,新加了两个⽅法:设置底部导航栏背景图⽚添加底部导航栏选项卡切换监听事件底部导航栏的实现也不难,就是下边是⼏个Tab切换,上边⼀般是⼀个FrameLayout,然后FrameLayout中切换fragment。
⽹上有不少关于Android底部导航栏的⽂章,不过好像都只是关于下边Tab切的,没有实现Tab与fragment的联动,⽤的时候还要⾃⼰⼿写这部分代码,对我这个⽐较懒(据说,懒是程序员的⼀种美德_#)得程序员来说,这是不能忍的。
下边就来说说我的BottomTabBar吧。
这就是我以前封装过的BottomTabBar的效果图,现在就从这张效果图开始,先分析⼀下,都需要设置那些参数吧。
1、BottomTabBar的整体背景虽然⼀般这⾥都是⽤⽩⾊或者接近⽩⾊的浅⾊调作为背景,但我们也不能给他固定死,要提供这样的⼀个⽅法,让使⽤者可以把背景设置成任何的颜⾊。
2、图⽚这⾥不仅要传⼊⼀个图⽚,还要做图⽚做⼀些设置:图⽚的宽⾼尺⼨(这个也需要对外设置⼀个⽅法)图⽚得设置居中,这个直接固定写死就好了,我见过的应⽤都是设置居中的,没见过别的情况,个⼈感觉,不设置居中也不美观啊3、⽂字与图⽚类似,⽂字也需要做⼀些设置:⽂字的⼤⼩⽂字也是需要设置居中的,也像图⽚⼀样固定写死4、颜⾊⽂字和图⽚的颜⾊都是只有两种,⼀种是选中状态下的,⼀种是未选中的,我们可以在这⾥统⼀设置,提供⼀个⽅法就可以了5、边距这⾥需要设置三个地⽅的边距:Top边距,也就是图⽚与上边分割线的距离middle边距,也就是图⽚与⽂字的距离Bottom边距,也就是⽂字与底部的距离6、分割线上边说到了,图⽚上边需要设置分割线,当然,这只是部分使⽤者需要设置的,所以我们需要提供⼀个⽅法,⽤来设置是否显⽰分割线。
此外还要设置分割线的⾼度以及其背景颜⾊7、fragment我这个BottomTabBar既然是要与fragment联动的,所以必须要传⼊⼀个fragment⼤体的参数就是需要这些了,下⾯上代码:⽤法也简单,就像标题说的⼏⾏代码就可以搞定:引⽤⽅式:compile 'com.hjm:BottomTabBar:1.0.0'1. ⾸先是XML⽂件代码:<com.hjm.bottomtabbar.BottomTabBarandroid:id="@+id/bottom_tab_bar"android:layout_width="match_parent"android:layout_height="match_parent"/>简单吧,就这么⼀个控件就可以了。
android修改状态栏时间和⽇期颜⾊android修改状态栏时间和⽇期颜⾊条件:⼿机获取ROOT权限和安装R.E.管理器,刷⼊或安装好Recovery并备份,我是在死机后⽤Recovery N次恢复试验才成功的。
我的⼿机为华为c8500,/system/framework下有services.odex 和services.jar ,但services.jar⾥没有classes.dex,只有⼀个META-INF⽂件夹,但⽹上教程多数是修改services.jar⾥的classes.dex⽂件的。
下载并安装软件java jdk 7(java jdk1.7.0):⽹盘下载官⽹下载下载需要的软件⼯具包:BAT批处理.zip下载:ADB SHELL.RAR⽤R.E.管理器将/system下的framework整个⽂件夹复制出来放到电脑任意盘,将framework⽂件夹下的所有⽂件复制到如D盘下的名为abc 的⽂件夹,将BAT批处理.zip解压,把odex、dex转class.bat class转dex.bat smali.jar baksmali.jar 等所有⽂件都放到D盘abc⽂件夹⾥。
在abc⽂件夹⾥找到services.odex,把它拖到odex或dex转class.bat这个批处理⽂件图标上,就会⽣成⼀个out⽂件夹,⾥⾯就有要修改的⽂件。
(这个bat批处理可以将xxx.odex和xxx.dex反编译为class,odex⽂件需要framework下的⽂件,dex 反编译则不需要framework下的⽂件)修改时间颜⾊:⽂件位置在D:\abc\out\com\android\server\status\StatusBarIcon.smali直接进⼊out⽂件夹,搜索StatusBarIcon.smali 即可,⽤windows⾃带记事本打开,查找const/high16 v6, -0x100 (状态栏时间颜⾊是⿊⾊才⾏)将const/high16 v6, -0x100 修改为const v6, -0x1-0x100为⿊⾊, -0x1为⽩⾊,先试验⽩⾊,成功后修改什么颜⾊都可点记事本⽂件按钮,点保存,关闭记事本。
Android强制横屏+全屏的⼏种常⽤⽅法全屏:在Activity的onCreate⽅法中的setContentView(myview)调⽤之前添加下⾯代码1 requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题2 getWindow().setFlags(youtParams.FLAG_FULLSCREEN,3 youtParams.FLAG_FULLSCREEN);//设置全屏横屏:⽅法1:按照下⾯代码⽰例修改Activity的onResume⽅法@Overrideprotected void onResume() {/*** 设置为横屏*/if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}super.onResume();}⽅法2:在中找到对应的Application或者Activity中置⼊如下代码android:screenOrientation="landscape"android:configChanges="keyboardHidden|orientation"横屏+全屏(应⽤主题⽅法)1.在res.values下新建⼀个xml⽂件,名字⾃定义2.打开该xml⽂件在resources内置⼊代码<style name="FullScreen"><item name="android:windowNoTitle" >true</item><item name="android:windowFullscreen" >true</item></style> 3.在AndroidManifest.xml⽂件⾥⾯,找到Application(整个应⽤程序都设置)或者相应的Activity内添加android:theme="@style/FullScreen"。
android设置横屏和竖屏的⽅法⽅法⼀:在AndroidManifest.xml中配置假设不想让软件在横竖屏之间切换,最简单的办法就是在项⽬的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性。
他有下⾯⼏个參数:"unspecified":默认值由系统来推断显⽰⽅向.判定的策略是和设备相关的,所以不同的设备会有不同的显⽰⽅向."landscape":横屏显⽰(宽⽐⾼要长)"portrait":竖屏显⽰(⾼⽐宽要长)"user":⽤户当前⾸选的⽅向"behind":和该Activity以下的那个Activity的⽅向⼀致(在Activity堆栈中的)"sensor":有物理的感应器来决定。
假设⽤户旋转设备这屏幕会横竖屏切换。
"nosensor":忽略物理感应器。
这样就不会随着⽤户旋转设备⽽更改了("unspecified"设置除外)。
⽅法⼆:在java代码中设置设置横屏代码:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//横屏设置竖屏代码:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏由于横屏有两个⽅向的横法,⽽这个设置横屏的语句,假设不是默认的横屏⽅向,会把已经横屏的屏幕旋转180°。
所以能够先推断是否已经为横屏了。
假设不是再旋转,不会让⽤户认为转的莫名其妙啦!代码例如以下:if(this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_PORTRAIT){setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}三:1.直接新建两个布局⽂件,剩下的就什么也不⽤管了:右键单击‘res’⽂件夹 -> 'new' -> 'Android resource directory';将 Directory name 填写layout-land,Resource type 选择layout,这是建⽴了⼀个横屏的布局⽂件,同样的⽅式再建⽴⼀个layout-port资源⽂件夹,⾥⾯放⼀个竖屏的布局⽂件,名字要起⼀样的,这个很重要,然后再java⽂件中设置setvontentview就⾏了。
android实现下拉框(spinner),⾃⼰定义⼤⼩颜⾊背景位置,去掉默认样式⿊边1. 实现最简单的spinnerxml⽂件,有⼀个TextView,⼀个Spinner:<RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/tools" android:layout_width="match_parent"android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"><TextView android:text="@string/hello_world" android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/textView" /><Spinnerandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/spinner"android:layout_below="@+id/textView"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"android:layout_marginTop="50dp" /></RelativeLayout>.java⽂件public class MainActivity extends ActionBarActivity {private static final String[] name={"刘备","关⽻","张飞","曹操","⼩乔"};private TextView text ;private Spinner spinner;private ArrayAdapter<String> adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);text = (TextView) findViewById(R.id.textView);spinner = (Spinner) findViewById(R.id.spinner);//将可选内容与ArrayAdapter连接起来,simple_spinner_item是android系统⾃带样式adapter = new ArrayAdapter<String>(this,yout.simple_spinner_item,name);//设置下拉列表的风格,simple_spinner_dropdown_item是android系统⾃带的样式,等会⾃⼰定义改动adapter.setDropDownViewResource(yout.simple_spinner_dropdown_item);//将adapter 加⼊到spinner中spinner.setAdapter(adapter);//加⼊事件Spinner事件监听spinner.setOnItemSelectedListener(new SpinnerSelectedListener());}//使⽤数组形式操作class SpinnerSelectedListener implements AdapterView.OnItemSelectedListener {public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {text.setText("我的名字是:"+name[arg2]);}public void onNothingSelected(AdapterView<?> arg0) {}}执⾏效果:—————————————————————使⽤xml⽂件作为数据源创建adapter:<?xml version="1.0" encoding="utf-8"?><resources><string-array name="songs"><item>没有⼈</item><item>我的快乐时代</item><item>黄⾦时代</item><item>习惯失恋</item><item>你来⾃哪颗星</item></string-array></resources>.java⽂件:public class SpinnerActivity extends Activity {private TextView text;private Spinner spinner;private ArrayAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(yout.spinner);spinner = (Spinner) findViewById(R.id.spinner);text = (TextView) findViewById(R.id.textView);//将可选内容与ArrayAdapter连接起来adapter = ArrayAdapter.createFromResource(this, R.array.songs, yout.simple_spinner_item); //设置下拉列表的风格adapter.setDropDownViewResource(yout.simple_spinner_dropdown_item);//将adapter2 加⼊到spinner中spinner.setAdapter(adapter);//加⼊事件Spinner事件监听spinner.setOnItemSelectedListener(new SpinnerXMLSelectedListener());}//使⽤XML形式操作class SpinnerXMLSelectedListener implements OnItemSelectedListener{public void onItemSelected(AdapterView<?> arg0, View arg1, int position,long arg3) {text.setText("你使⽤什么样的⼿机:"+adapter.getItem(position));}public void onNothingSelected(AdapterView<?> arg0) {}}}spinner有三个属性能够记⼀下:android:spinnerMode="dropdown"android:dropDownVerticalOffset="-50dp"android:dropDownHorizontalOffset="20dp"android:popupBackground="#f0000000"spinnerMode=dropdown时,为下拉模式spinnerMode=dialog时,会在界⾯中间弹出android:popupBackground=”#f0000000”,能够去除spinner的默认⿊边dropDownVerticalOffset和dropDownHorizontalOffset都是改变下拉框位置的2.⾃⼰定义spinner样式改变字体颜⾊、⼤⼩和背景:新建⼀个xml布局⽂件,命名为spinner_item.xml:<?xml version="1.0" encoding="utf-8"?><TextViewxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:paddingRight="5dp"android:textColor="#f77718"android:gravity="left"android:textSize="15sp"android:padding="10dp"android:singleLine="true"android:text="New Text"android:id="@+id/textView32" />再创建⼀个下拉框样式布局的xml⽂件。
Android中实现切换主题的方法Android是目前最流行的移动操作系统之一,它提供了丰富的主题和界面设计选项,使开发者能够根据用户的喜好和需求来个性化设置应用的外观。
本文将介绍Android中实现切换主题的方法,帮助开发者为应用添加主题切换的功能。
一、使用主题资源文件Android提供了主题资源文件(theme resource file),可以通过定义不同的主题样式来实现切换主题的功能。
在res/values目录下新建一个themes.xml文件,用于定义主题样式。
```xml<?xml version="1.0" encoding="utf-8"?><resources><style name="Theme.Light" parent="Theme.AppCompat.Light"><!-- 在此定义浅色主题的样式 --></style><style name="Theme.Dark" parent="Theme.AppCompat"><!-- 在此定义深色主题的样式 --></style></resources>```在每个主题样式中,可以定义各种属性,如颜色、字体、背景等。
根据应用需求,可以自定义各种主题样式。
二、切换主题实现切换主题的方法有多种,可以根据应用需求选择适合的方式。
以下是两种常用的切换主题的方法示例。
1. 使用SharedPreferences保存当前主题在应用中使用SharedPreferences来保存当前的主题选项,并在启动应用时加载对应的主题。
首先,定义一个ThemeManager类,用于管理主题的切换和保存:```javapublic class ThemeManager {private static final String THEME_PREFS_NAME = "theme_prefs";private static final String PREF_THEME = "current_theme";public static void setTheme(Context context, String theme) {SharedPreferences prefs =context.getSharedPreferences(THEME_PREFS_NAME,Context.MODE_PRIVATE);prefs.edit().putString(PREF_THEME, theme).apply();}public static String getTheme(Context context) {SharedPreferences prefs =context.getSharedPreferences(THEME_PREFS_NAME,Context.MODE_PRIVATE);return prefs.getString(PREF_THEME, "Theme.Light"); // 默认主题为浅色主题}}```然后,在Application类的onCreate方法中根据保存的主题来加载对应的主题样式:```javapublic class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();String theme = ThemeManager.getTheme(this);setTheme(theme);}private void setTheme(String theme) {switch (theme) {case "Theme.Light":setTheme(R.style.Theme_Light);break;case "Theme.Dark":setTheme(R.style.Theme_Dark);break;default:break;}}}```通过调用ThemeManager类中的setTheme方法,可以在应用中切换不同的主题,然后重新启动应用以加载新的主题。
Android UI体验之全屏沉浸式透明状态栏效果前言:Android 4.4之后谷歌提供了沉浸式全屏体验,在沉浸式全屏模式下,状态栏、虚拟按键动态隐藏,应用可以使用完整的屏幕空间,按照Google 的说法,给用户一种身临其境的体验。
而Android 5.0之后谷歌又提出了ColorPalette 的概念,让开发者可以自己设定系统区域的颜色,使整个App 的颜色风格和系统的颜色风格保持统一。
今天学习总结一下如何实现Android 4.4以上全屏沉浸式透明状态栏效果。
先看下预期效果:首先现分清楚哪部分是状态栏,哪部分是导航栏状态栏StatusBar如下导航栏NavigationBar如下如何实现?1.)首先实现全屏第一种:继承主题特定主题在Android API 19以上可以使用****.TranslucentDecor***有关的主题,自带相应半透明效果,Theme.Holo.NoActionBar.TranslucentDecor和Theme.Holo.Light.NoActionBar.TranslucentDecor两种主题为新增加的,所以要新建values-v19文件夹并创建styles文件添加如下代码<style name="AppBaseTheme" parent="android:Theme.Holo.Light.NoActionBar.TranslucentDecor"><!-- Customize your theme here. --></style>第二种:在activity中采用代码的方式Android 4.4以上可以添加如下代码复制代码if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//透明状态栏window.addFlags(youtParams.FLAG_TRANSLUCENT_STATUS);//透明导航栏window.addFlags(youtParams.FLAG_TRANSLUCENT_NAVIGATION);}复制代码复制代码if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {window.clearFlags(youtParams.FLAG_TRANSLUCENT_STATUS| youtParams.FLAG_TRANSLUCENT_NAVIGATION);window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);window.addFlags(youtParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);}复制代码全屏效果不难发现此时状态栏占有的位置消失,和app的布局叠在一起了,接下来解决这个问题2.)解决状态栏占位问题第一种:主题添加如下设置<item name="android:fitsSystemWindows">true</item>第二种:activity layout根目录添加下面代码android:fitsSystemWindows="true"第三种:通过Java代码设置rootview.setFitsSystemWindows(true);fitsSystemWindows只作用在sdk>=19的系统上就是高于4.4的系统,这个属性可以给任何view设置,只要设置了这个属性此view的所有padding属性失效.只有在设置了透明状态栏(StatusBar)或者导航栏(NavigationBar)此属性才会生效,如果上述设置了状态栏和导航栏为透明的话,相当于对该View自动添加一个值等于状态栏高度的paddingTop,和等于导航栏高度的paddingBottom,效果如下3.)状态栏导航栏设置背景色4.4以上的可以采用修改contentView的背景色,或者动态添加一个view到contentView上复制代码if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//透明状态栏window.addFlags(youtParams.FLAG_TRANSLUCENT_STATUS);//透明导航栏//设置contentview为fitsSystemWindowsViewGroup contentView = (ViewGroup) findViewById(android.R.id.content);View childAt = contentView.getChildAt(0);if (childAt != null) {childAt.setFitsSystemWindows(true);}//给statusbar着色View view = new View(this);view.setLayoutParams(new youtParams(youtParams.MATCH_PARENT, getStatusBarHeight(this)));view.setBackgroundColor(color);contentView.addView(view);}复制代码动态获取StatusBarHeight函数如下复制代码/*** 获取状态栏高度** @param context context* @return 状态栏高度*/private static int getStatusBarHeight(Context context) {// 获得状态栏高度int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");return context.getResources().getDimensionPixelSize(resourceId);}复制代码动态获取NavigationBarHeight函数如下复制代码/*** 获取导航栏高度** @param context context* @return 导航栏高度*/public static int getNavigationBarHeight(Context context) {int resourceId = context.getResources().getIdentifier("navigation_bar_height", "dimen", "android");return context.getResources().getDimensionPixelSize(resourceId);}复制代码然后Android5.0以上谷歌提供了新的api可以更新状态栏和导航栏的背景色if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {window.clearFlags(youtParams.FLAG_TRANSLUCENT_STATUS| youtParams.FLAG_TRANSLUCENT_NAVIGATION);window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);window.addFlags(youtParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);//设置状态栏颜色window.setStatusBarColor(color);//设置导航栏颜色window.setNavigationBarColor(color);ViewGroup contentView = ((ViewGroup) findViewById(android.R.id.content));View childAt = contentView.getChildAt(0);if (childAt != null) {childAt.setFitsSystemWindows(true);}// contentView.setPadding(0, getStatusBarHeight(this), 0, 0);}复制代码这样总体效果就实现了4.)贴出整体java代码实现方式复制代码private void initWindows() {Window window = getWindow();int color = getResources().getColor(android.R.color.holo_blue_light);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {window.clearFlags(youtParams.FLAG_TRANSLUCENT_STATUS| youtParams.FLAG_TRANSLUCENT_NAVIGATION);window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);window.addFlags(youtParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);//设置状态栏颜色window.setStatusBarColor(color);//设置导航栏颜色window.setNavigationBarColor(color);ViewGroup contentView = ((ViewGroup) findViewById(android.R.id.content));View childAt = ew.getChildAt(0);if (childAt != null) {childAt.setFitsSystemWindows(true);} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//透明状态栏window.addFlags(youtParams.FLAG_TRANSLUCENT_STATUS);//透明导航栏window.addFlags(youtParams.FLAG_TRANSLUCENT_NAVIGATION);//设置contentview为fitsSystemWindowsViewGroup contentView = (ViewGroup) findViewById(android.R.id.content);View childAt = View.getChildAt(0);if (childAt != null) {childAt.setFitsSystemWindows(true);}//给statusbar着色View view = new View(this);view.setLayoutParams(new youtParams(youtParams.MATCH_PARENT, getStatusBarHeight(this)));view.setBackgroundColor(color);contentView.addView(view);}}复制代码总结:我这里为了更加明显的显示效果所以状态栏背景色和标题栏颜色不一致,在实际的开发中一般情况下我们都会设置成统一的颜色,在视觉上感觉整个页面更加统一,让用户真正沉浸在app 中。
一、Android设计常识开始介绍之前先帮大家梳理一下Android常用单位,方便各位亲们更好的掌握并了解Android端设计规范。
1。
1 Android常用单位1.1。
1。
PPI(pixels per inch):数字影像的解析度,也就是每英寸所拥有的像素数,即像素密度;PPI计算公式:ppi=√(长度像素数2 + 宽度像素数2)/屏幕对角线英寸数1.1。
2。
DPI(dots per inch):是指印刷上的计量单位,也就是每英寸上能印刷的网点数,我们设计用于显示器的默认为(72像素/英寸)就好了;1.1.3.屏幕尺寸(Screen Size):一般我们所说的手机屏幕尺寸,比如3英寸、5.5英寸等,都是指对角线的长度,而不是手机的面积;1。
1.4。
分辨率(Resolution):是指手机屏幕垂直和水平方向上的像素个数,比如分辨率为:720*1280,是指设备水平方向有720个像素点,垂直方向有1280个像素点1.1.5.px( pixels):像素,不同设备显示效果相同1。
1.6.pt( point):一个标准的长度单位,ios的逻辑单位,1Pt=1/72英寸,用于印刷业,非常简单易用;标注字体大小(72是早期台式机的DPI)1.1。
7。
sp(Scaled-independentpixels):放大像素,安卓的字体单位;1.1.8。
Dp(Density-independentpixels):是指设备的独立像素,不同的设备有不同的显示效果,它与设备硬件有关系;sp和dp基本一样,是android开发里特有的单位,都是为了保证文字在不同密度的显示屏上显示相同的效果;dp与设备硬件有关,与屏幕密度无关,sp与屏幕密度和设备硬件均无关;1.2 换算关系android开发中,文字大小的单位是sp,非文字的尺寸单位用dp,但是我们在设计稿用的单位是px。
这些单位如何换算,是设计师、开发者需要了解的关键。
*dp:以160PPI屏幕为标准,则1dp=1px。
效果如图(这种方式只支持Android4.4以上系统):
步骤:
1、使用Window对象设置Activity主题为铺满全屏(含状态栏和标题栏)
2、自定义ActionBar主题,使ActionBar全透明
3、设置内容显示在ActionBar之下(避免重叠)
实现:
【一】、首先是自定义一个Actionbar的style (ActionBar背景全透明、高度自定义)<style name="AppTheme.ActionBarStyle" parent="android:Widget.ActionBar"> <item name="android:background">#00000000</item>
<item name="android:height">55dp</item>
</style>
【二】、自定义APP主题,设置actionBarStyle为自定义actionBar样式
<style name="MyAppTheme" parent="android:Theme.Holo">
<item name="android:actionBarStyle">@style/AppTheme.ActionBarStyle</item> </style>
【三】、在mainfast配置文件中设置app主题为自定义主题
【四】、在Activity中的OnCreate方法中配置如下内容(实现背景铺满全屏,包括状态栏和ActionBar标题栏。
加上在自定义ActionBar主题时,设置了ActionBar样式为全透明,因此实现所需效果):
Window window = getWindow();
window.setFlags(youtParams.FLAG_TRANSLUCENT_STATUS,WindowManager. LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setFlags(youtParams.FLAG_TRANSLUCENT_NAVIGATION, youtParams.FLAG_TRANSLUCENT_NAVIGATION);
【五】、在布局文件里加入android:fitsSystemWindows="true"(使内容显示在ActionBar下面,不与状态栏和标题栏重叠)。