动画视频模板网站河北省建设机械会网站
- 作者: 五速梦信息网
- 时间: 2026年03月21日 11:21
当前位置: 首页 > news >正文
动画视频模板网站,河北省建设机械会网站,东营招聘信息网官网,网站自助制作用户界面改进
Android用户界面改进最明显的就是MD了。MD是Google于2014年推出的设计语言#xff0c;它是一套完整的设计系统#xff0c;包含了动画、样式、布局、组件等一系列与设计有关的元素。通过对这些行为的描述#xff0c;让开发者设计出更符合目标的软件#xff0c…用户界面改进
Android用户界面改进最明显的就是MD了。MD是Google于2014年推出的设计语言它是一套完整的设计系统包含了动画、样式、布局、组件等一系列与设计有关的元素。通过对这些行为的描述让开发者设计出更符合目标的软件同时对这些软件的功能也更易于用户的理解。除此之外还有另外两个用户界面方面的改进包括
多窗口功能App Shortcuts
多窗口功能
在Android7之前的版本上所有activity都是全屏的如果不设置透明效果一次只能看到一个activity的界面。但是从Android7开始系统支持了多窗口的功能。在有了多窗口支持之后用户可以同时打开和看到多个应用的界面。这对于用户来说是非常方便的。
Android上的多窗口功能有下面3种模式。 二分屏模式 这种模式主要在手机上使用。该模式将屏幕一分为二同时显示两个应用的界面。屏幕中间是一条可以移动调整窗口大小的分隔线。 画中画模式 这种模式主要在TV上使用在该模式下某个应用的界面(通常是视频播放类应用)以一个小的浮动窗口形式在屏幕上显示。在Android8上系统支持在tv之外的设备上使用这一功能。例如手机上的视频聊天软件可以利用这一功能。 Freeform模式 这种模式类似于常见的桌面操作系统窗口可以自由拖动和修改大小。但这一功能在手机设备上使用起来不是很方便因此系统上没有提供直接打开这一功能的入口。Android7上想要打开这一功能需要借助命令行。 将设备连上pc之后执行以下两条adb命令即可打开freeform模式 1adb shell settings put global enable_freeform_support 1。 2然后重启手机adb reboot。 重启之后在近期任务界面会出现一个按钮这个按钮可以将窗口切换到freeform模式。可能在有些手机上会报权限错误这个大家可以Google下如何解决。
开发者相关
生命周期
多窗口不影响和改变原先activity的生命周期。 在多窗口模式下多个activity可以同时可见但只有一个activity是resumed状态。所有其他activity都会处于paused状态(尽管它们是可见的)。 在以下三种场景下系统会通知应用有状态变化应用可以进行处理
当用户以多窗口的模式启动的应用当用户改变了activity的窗口大小当用户将应用窗口从多窗口模式改为全屏模式
Manifest新增属性
AndroidManifest.xml中新增了下面两个属性来进行多窗口的控制。 android:resizeableActivity[“true”|“false”] 这个属性可以用在activity或者application中。如果该属性设置为trueactivity将能以分屏和自由形状模式启动。如果此属性设置为falseactivity将不支持多窗口模式。如果该值为false且用户尝试在多窗口模式下启动activity该activity将全屏显示。对于api目标level为24或更高级别的应用来说这个值默认是true。 android:supportsPictureInPicture[“true”|“false”] 这个属性用在activity上表示该activity是否支持画中画模式。如果android:resizeableActivityfalse这个属性值将被忽略。
Layout新增属性
除了AndroidManifest.xml在layout文件中也新增了一些属性来进行相应的控制。
android:defaultWidth、android:defaultHeight指定了freeform模式下的默认宽度和高度android:gravity指定了freeform模式下的初始gravityandroid:minWidth、android:minHeight指定了分屏和freeform模式下的最小高度和宽度。如果用户在分屏模式中移动分界线使activity尺寸低于指定的最小值系统会将activity剪裁为用户请求的尺寸。 activityandroid:supportsPictureInPicturetrueandroid:name.MainActivityandroid:exportedtrueintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filterlayout android:defaultHeight500dpandroid:gravitytop|endandroid:minHeight450dpandroid:minWidth300dpandroid:defaultWidth600dp/layout/activitypackage com.mvp.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;import com.mvp.myapplication.databinding.ActivityMainBinding;public class MainActivity extends AppCompatActivity {// Used to load the myapplication library on application startup.static {System.loadLibrary(myapplication);}private ActivityMainBinding binding;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);binding ActivityMainBinding.inflate(getLayoutInflater());setContentView(binding.getRoot());// Example of a call to a native methodTextView tv binding.sampleText;tv.setText(stringFromJNI());// Android7上还增加了下面这些api
// this.isInMultiWindowMode()//查询是否处于多窗口模式
// this.isInPictureInPictureMode()//查询是否处于画中画模式
// this.onMultiWindowModeChanged();//多窗口模式变化时进行通知(进入或退出多窗口)
// this.onPictureInPictureModeChanged();//画中画模式变化时进行通知(进入或退出画中画模式)this.enterPictureInPictureMode();//进入画中画模式如果系统不支持这个调用无效}/*** A native method that is implemented by the myapplication native library,* which is packaged with this application.*/public native String stringFromJNI();
}至于多窗口功能的实现主要依赖于ams和wms这两个系统服务它们都位于system_server进程中。前者负责所有activity的管理后者负责所有窗口的管理(不仅activity具有窗口其他模块也会有窗口例如输入法)。ams和wms需要配合一起工作因为无论是创建还是销毁activity都涉及activity对象和窗口对象的创建和销毁。
App Shortcuts
App Shortcuts是Android7.1上推出的新功能。借助于这项功能应用程序可以在launcher中放置一些常用的应用入口以方便用户使用。 每个shortcut可以对应一个或者多个intent它们各自会通过特定的intent来启动应用程序例如
对于一个地图应用可以提供一个shortcut导航用户至某个特定的地点对于一个通信应用可以提供一个shortcut来发送消息给好友对于一个视频应用可以提供一个shortcut来播放某个电视剧
当一个shortcut包括了多个intent时用户的一次点击会触发所有这些intent其中的最后一个intent决定了用户所看到的结果。
开发者API
使用shortcuts有两种方式。
动态形式在运行时通过ShortcutManager API来进行注册。通过这种方式可以在运行时动态地发布、更新和删除shortcut。静态形式在apk中包含一个资源文件来描述shortcut。这种注册方法将导致如果要更新shortcut必须更新整个应用程序。 目前每个应用程序最多可以注册4个shortcuts无论是动态形式还是静态形式。
具体用户读者可以参考下面这篇博客https://www.jianshu.com/p/6b6f79096256
系统界面改进
系统界面属于系统的一部分。系统上方的status bar以及下方的navigation bar都属于系统界面。除此之外近期任务界面、锁屏也都是属于系统界面。可见系统界面是用户交互最多的ui元素。
systemUI整体介绍
AOSP源码中包含了两类Android应用程序
一类是系统的内置应用这些应用提供了手机的基本功能。包括launcher、系统设置、电话、相机等。它们位于/packages/apps/目录下。理论上这些应用都是可以被第三方应用所替代的例如我们完全可以安装一个第三方的电话、相机而不使用系统的这也是Android系统最为灵活的地方(注意系统设置通常无法被第三方应用替代因为它使用了一些拥有非常高权限的内部api。为了保证系统安装这些api很多不会对外开放)。另外一类应用则是属于framework的一部分这些应用是无法被第三方应用所替代的。它们位于/frameworks/base/packages目录下包括了systemUI、VpnDialogs等。
整个systemUI 由一个application的子类systemUIApplication进行初始化application对应了整个应用程序的全局状态。系统会保证application对象一定是应用程序中第一个实例化的对象。并且application的oncreate方法一定早于应用中所有的activity、service、broadcastreceiver(但是不包含contentProvider)创建之前被调用。 systemUIApplication负责了所有systemUI组件的初始化这其中就包含了最常见的system Bar(status Bar和navigation Bar合称为system Bar)。 system Bar虽然是系统的一部分但是为了让应用能够提供更好的用户体验系统提供了接口来进行控制。开发者可以根据需要来显示或隐藏status bar和navigation bar(它们中两者之一或者全部)。
三种模式 对于system bar的控制Android系统定义了三种场景模式
Lights Out模式 这是Android4.4之前版本上的模式这种模式的行为是当用户几秒钟内没有操作的情况下action bar和status bar会被淡化成不可用状态。但是navigation bar是正常可用的虽然它会被dim。如果在4.4之后的版本上开发考虑下面这两种模式。Lean Back模式 在这种模式下system bar虽然是隐藏的每当用户轻触屏幕时它们会重新显示出来变成可用。因此这种模式适合于用户无须频繁交互的应用例如播放视频。Immersive模式 在这种模式下只有当用户从屏幕边缘滑向屏幕中间时system bar才会显示出来。因此这种模式适用于需要频繁交互但用户不太需要system bar的应用。例如全屏游戏或者画图软件。
api与使用场景 https://www.jianshu.com/p/7de7bcf604b0
沉浸式全屏 Android4.4引用了一个新的flagSYSTEM_UI_FLAG_IMMERSIVE。使用这个flag可以使你的应用获得真正的全屏。当这个flag与SYSTEM_UI_FLAG_HIDE_NAVIGATION和SYSTEM_UI_FLAG_FULLSCREEN组合起来使用时会隐藏整个system bar使得应用获取整个屏幕的触摸事件。 由于应用接受了全部的触摸事件只有当用户从屏幕边缘往内部滑动时system bar才会显示出来。这样会清除SYSTEM_UI_FLAG_HIDE_NAVIGATION如果设置了SYSTEM_UI_FLAG_FULLSCREEN也会被清除。如果希望system bar在这之后再次自动隐藏起来可同时设置SYSTEM_UI_FLAG_IMMERSIVE_STICKY。
提醒气泡 当应用程序中首次进入沉浸式模式时系统会显示提醒气泡。提醒气泡用于提醒用户如何显示系统栏。
非沉浸式模式 这是应用程序在进入沉浸式模式之前出现的状态。除此之外如果使用了SYSTEM_UI_FLAG_IMMERSIVE标志并且当用户从屏幕边缘往内部滑动时此时会清除SYSTEM_UI_FLAG_HIDE_NAVIGATION和SYSTEM_UI_FLAG_FULLSCREEN标志。清除这些标志后system bar将重新出现并保持可见此时也会是这样。请注意最好的做法是将所有UI控件与系统栏保持同步以最大限度地减少屏幕地状态数量从而提供更加无缝地用户体验。所以这里所有的UI控件都与状态栏一起显示。一旦应用程序进入沉浸式模式UI控件将于系统栏一起隐藏。为了确保UI可视性与系统栏可见性保持同步可通过View.OnSystemUiVisibilityChangeListener来响应UI改变事件。
沉浸式模式 系统栏和其他UI控件被隐藏。可以使用SYSTEM_UI_FLAG_IMMERSIVE_STICKY或SYSTEM_UI_FLAG_IMMERSIVE标志来实现此状态。
响应System UI的改变事件 在system bar隐藏或显示之后应用自身的UI也可能需要做一些改变。并且保持这两者的状态同步时一个很好的做法。 如果应用想要关心system ui的变更事件只需要设置一个监听即可。例如可以在activity的oncreate方法完成这个监听 View decorView getWindow().getDecorView();decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {Overridepublic void onSystemUiVisibilityChange(int visibility) {//只有在LOW_PROFILE、HIDE_NAVIGATION和FULLSCREEN都没有设置的时候system bar才是可见的if ((visibility View.SYSTEM_UI_FLAG_FULLSCREEN)0){//system bar可见时例如显示action bar或者导航相关的控件}else{//system bar不可见时 例如隐藏action bar或者导航相关的控件}}});
相关文章
-
动画视频模板网站wordpress提示不安全
动画视频模板网站wordpress提示不安全
- 技术栈
- 2026年03月21日
-
冬镜seo广州关于进一步优化
冬镜seo广州关于进一步优化
- 技术栈
- 2026年03月21日
-
东直门小学的网站建设安徽网站建设制作
东直门小学的网站建设安徽网站建设制作
- 技术栈
- 2026年03月21日
-
动力论坛源码网站后台地址是什么沈阳网站优化 唐朝网络
动力论坛源码网站后台地址是什么沈阳网站优化 唐朝网络
- 技术栈
- 2026年03月21日
-
动漫设计工作室网站宣传片制作上海虹口网站建设
动漫设计工作室网站宣传片制作上海虹口网站建设
- 技术栈
- 2026年03月21日
-
动漫网站建设的目的关于手机的软文营销
动漫网站建设的目的关于手机的软文营销
- 技术栈
- 2026年03月21日






