提示: 使用 removeEventListener() 方法来移除 addEventListener() 方法添加的事件句柄。...scroll 当文档被滚动时发生的事件。 unload 用户退出页面。...( 和 ) 表单事件 blur 元素失去焦点时触发 change 该事件在表单元素的内容改变时触发( , , , 和 ) focus 元素获取焦点时触发 focusin 元素即将获取焦点是触发...动画事件 animationend 该事件在 CSS 动画结束播放时触发 animationiteration 该事件在 CSS 动画重复播放时触发 animationstart 该事件在 CSS...动画开始播放时触发 过渡事件 transitionend 该事件在 CSS 完成过渡后触发。
onhashchange: 当窗口的锚点哈希值发生变化时触发。 鼠标相关 onclick: 当点击页面时触发。 onmouseup: 鼠标按键被松开时触发。...动画相关 onanimationcancel: 当CSS动画意外中止时,即在任何时候它停止运行而不发送animationend事件时将发送此事件,例如当animation-name被改变,动画被删除等...onanimationiteration: 此事件将会在CSS动画到达每次迭代结束时触发,当通过执行最后一个动画步骤完成对动画指令序列的单次传递完成时,迭代结束。...onemptied: 当期播放列表为空时触发 onended: 事件在视频/音频播放结束时触发。 onerror: 事件在视频/音频数据加载期间发生错误时触发。...动画相关 animationend: 该事件在CSS动画结束播放时触发 animationiteration: 该事件在CSS动画重复播放时触发 animationstart: 该事件在CSS动画开始播放时触发
screenY 返回当某个事件被触发时,鼠标指针的垂直坐标。 shiftKey 返回当事件被触发时,"SHIFT" 键是否被按下。...2 onscroll 当文档被滚动时发生的事件。 2 onunload 用户退出页面。...onemptied 当期播放列表为空时触发 onended 事件在视频/音频(audio/video)播放结束时触发。...动画事件 事件 描述 DOM animationend 该事件在 CSS 动画结束播放时触发 animationiteration 该事件在 CSS 动画重复播放时触发 animationstart...该事件在 CSS 动画开始播放时触发 过渡事件 事件 描述 DOM transitionend 该事件在 CSS 完成过渡后触发。
2 onscroll 当文档被滚动时发生的事件。 2 onunload 用户退出页面。...onemptied 当期播放列表为空时触发 onended 事件在视频/音频(audio/video)播放结束时触发。...动画事件 事件 描述 DOM animationend 该事件在 CSS 动画结束播放时触发 animationiteration 该事件在 CSS 动画重复播放时触发 animationstart...该事件在 CSS 动画开始播放时触发 过渡事件 事件 描述 DOM transitionend 该事件在 CSS 完成过渡后触发。...2 screenX 返回当某个事件被触发时,鼠标指针的水平坐标。 2 screenY 返回当某个事件被触发时,鼠标指针的垂直坐标。
另外我们必须指定正在使用的音频流,而且需要确定所请求的音频焦点是短暂的(Transient)还是永久的(Permanent)。 短暂的焦点锁定:当计划播放一个短暂的音频时使用(比如播放导航指示)。...永久的焦点锁定:当计划播放一个较长但时长可预期的音频时使用(比如播放音乐)。...下面的代码片段是一个在播放音乐时请求永久音频焦点的例子,我们必须在开始播放之前立即请求音频焦点,比如在用户点击播放或者游戏中下一关的背景音乐开始前。...在实际场景当中,这意味着停止播放,移除媒体按钮监听,允许新的音频播放器可以唯一地监听那些按钮事件,并且放弃自己的音频焦点。...下面的代码片段让我们的播放器在暂时失去音频焦点时降低音量,并在重新获得音频焦点之后恢复原来音量。
为了避免所有音乐应用同时播放,Android 引入了“音频焦点”的概念。 一次只能有一个应用获得音频焦点。 当您的应用需要输出音频时,它需要请求获得音频焦点,获得焦点后,就可以播放声音了。...在其他应用获得音频焦点时,应该停止或者暂停播放,或者降低音量。...例如,我们在使用导航的时候可以听音乐,当出现导航语音的时候,音乐音量会降低以便我们能听清楚导航的语音,当导航语音播放完毕后,音乐恢复音量,继续播放。...8.0(API 级别 26)开始,当您调用 requestAudioFocus() 时,必须提供 AudioFocusRequest 参数。...在暂时性失去音频焦点时,您应该继续监控音频焦点的变化,并准备好在重新获得焦点后恢复正常播放。当抢占焦点的应用放弃焦点时,您会收到一个回调 (AUDIOFOCUS_GAIN)。
资源作为组件的背景或者前景Drawable资源时,可以随着组件状态的变更而自动切换相对应的资源,例如,一个Button可以处于不同的状态(按钮按下、获取焦点) 我们可以使用一个StateListDrawable...,当组件的状态变更时,会自定向下遍历StateListDrawable对应的xml文件来查找第一个匹配的Item 当有通知栏被拉下来或者一个对话框弹出的时候应用程序就不在前台了 注意:如果有多个item,那么程序将自动从上到下进行匹配,最先匹配的将得到应用。...上述动画运行了3个帧,通过设置android:oneshot 属性(attribute)为true,动画会循环一次并停留在最后一帧,如果为false那么会轮询(loop)的运行动画 我们可以通过编码来加载播放动画...AnimationDrawable. start()方法不能够在Activity的onCreate()方法中调用,因为AnimationDrawable还未完全的附加(attached)到Window,如果你不需要交互而立即播放动画
当语音播报完,导航应用会释放掉音频焦点,您的应用可以再次获得音频聚焦,然后恢复到原有音量播放(选择降低音量的回避模式时),或者恢复播放(选择暂停的回避模式时)。...当通话结束,您的应用会被授权延迟音频聚焦。这个授权是来自刚才申请音频聚焦被拒绝后锁住的那个请求,它只是被延迟一段时间后再授权给您。...用户正在收听音乐或播客,而您的应用正好在短时间内生成音频: 在您的应用程序生成音频之前,它应该请求短暂的音频焦点。 只有当它被授予焦点时,才能播放音频。...总结 当您的应用程序需要输出音频时,应该请求音频焦点(并且可以请求不同类型的焦点)。 只有在获得音频焦点之后,才能播放声音。...在 Android O 上,如果您的应用程序在请求音频焦点时被拒,系统可以等音频焦点空闲时发送给您的应用程序(延迟聚焦)。 想详细了解如何在您的应用中用代码实现音频焦点,请阅读 第三篇文章。
开始使用 Photoshop 相机 当您使用 Photoshop Camera 拍照时,智能镜头会自动识别场景中的元素并在您拍照时应用实时效果。...使用相机应用程序 Photoshop Camera 将自动设置焦点和曝光点。如果您想手动执行此操作,请点击场景中的某个区域以设置焦点和初始曝光,然后拖动曝光滑块以使场景变亮或变暗。...当检测到人像或风景场景时,为这些对象推荐的镜头会显示一个蓝色徽章。 2. 在屏幕上向左或向右滑动以查看镜头提供的不同变化。 3. 在您构图时实时预览镜头效果。...当有新镜头可用时,地球图标旁边会出现一个蓝点。 使用镜头属性和全局属性修改图像 镜头属性可以让您自定义镜头对图像的效果。当您查看应用了镜头的图像时,点击该镜头的图标以查看其镜头属性。...视频播放图标允许您停止播放动画效果。 分享和导出您的照片 1. 当您选择共享或导出照片时,您有机会对导出的图像应用裁剪。 2.
应用经常会遇到如下的业务诉求:场景一:通过事件添加和移除悬浮窗,悬浮窗样式可定制(暂定两种,无白边圆球形和小视频播放窗口类型),可代码修改位置和布局。...场景七:视频类应用主动调用画中画完成后台播放,以及返回桌面时自动启动画中画。...方案描述场景一:通过事件添加和移除悬浮窗,悬浮窗样式可定制(暂定两种,无白边圆球形和小视频播放窗口类型),可代码修改位置和布局。...// 通过查找子窗口名称对子窗口进行销毁 window.findWindow("mySubWindow").destroyWindow()场景七:视频类应用主动调用画中画完成后台播放,以及返回桌面时自动启动画中画...2.通过pipController.setAutoStartEnabled(true)在返回桌面时完成全局画中画播放。核心代码创建XComponent组件。
focusChange值表示焦点是否已获得,焦点是否丢失,以及该丢失是否是短暂的,或者新的焦点持有者是否会持续一段未知的时间。当失去焦点时,监听者可以使用焦点变化信息来决定失去焦点时采用的行为。...在瞬间失去音频焦点期间,您应该继续监视音频焦点的变化,并准备在重新获得焦点时恢复正常播放。...当别的应用程序放弃焦点时(调用abandonAudioFocus),您会收到回调(AUDIOFOCUS_GAIN)。此时,您可以将音量恢复到正常水平或重新开始播放。...当某项内容被点击后,我希望使用 AudioManager 来请求 Audio Focus,然后再设置 MediaPlayer 来播放声音。所以在ListView的点击监听事件里面操作。...* 每当音频焦点改变时(由于另一个应用或设备,我们获得或失去音频焦点),该触发器被触发。
Refresh组件支持自定义下拉刷新能力,允许设置下拉刷新时的显示内容,增强组件基础能力 动画效果增加或增强: 支持给组件设置球面高阶属性、下边缘像素扩展、取色模糊、G2圆角、阴影、渐变等高阶图形属性,...丰富高阶动画效果 支持自定义动画,满足多种多样的动画诉求。...Refresh组件支持自定义下拉刷新能力,允许设置下拉刷新时的显示内容,增强组件基础能力 动画效果增加或增强: 支持给组件设置球面高阶属性、下边缘像素扩展、取色模糊、G2圆角、阴影、渐变等高阶图形属性,...媒体播放,相机,音视频编解码等的优化 音频 支持通过Native接口(OHAudio)进行音频播放和录制。对于音频录制和播放的时延比较敏感的场景,使用Native接口可实现更低的时延。...支持音频焦点:应用播放音频时无需手动申请焦点,系统会在后台自动申请焦点,并自动执行焦点策略(如暂停、淡出、淡出恢复等);应用仅需要注册焦点事件监听函数,以接收焦点事件并更新状态,如暂停时停止进度条。
结合写的三篇文章 Android动画之帧动画 Android动画之补间动画 Android动画之属性动画 Android 中的动画可以分为以下几类: 1.帧动画:就是让一系列的静态图片依次播放...,实现动画。...2.补间动画:指定动画的开始、结束的"关键帧",而动画变化的"中间帧"由系统计算,并补齐。...3.属性动画:可以看作是增强版的补间动画 一.帧动画: 启动方式:动画本身开启 缺点:效果单一,帧播放需要多张图片,占用空间较大 优点:制作简单 二.补间动画: 启动方式:实现该动画的View...优点:相对于逐帧动画来说,补间动画更为自然(流畅) 缺点:当平移动画执行完停在最后的位置,结果焦点还在原来的位置(控件的属性没有真的被改变) 三.属性动画 启动方式:动画本身开启 1.四种类型:
当Button被Pressed后,Button才会出现焦点,所以 FocusStates组中的状态由Unfcused转换到Focused。...而这个两个焦点状态并不和Button的鼠标移入移出的状态相冲突所以是能共 存的。...我想要实现的效果是开始时“面板”从上方移入到舞台中间并且透明度从0变到100。并且下边的Enter按钮始终是要左右的摇晃的。 ...当鼠标移入Enter按钮时Enter字体变大,颜色也发生改变,移出时则变回原样。 分析效果后(是否能视图能共存),我需要四个组来实现。进场、透明变化、摇动、大小以及颜色变化。...在各个组内建立StoryBoard动画。 视图状态内的StoryBoard在切换后是默认可以直接播放的。 在初始化的时候控制控件的视图状态。
,可以用于控制动画的播放和暂停。...Viewer构造函数的初始化选项 animation: 是否显示动画控制面板,默认为true。当启用时,动画小部件会在场景下方展示当前时间和时间轴,可以通过鼠标交互来改变时间。...shouldAnimate:是否应该在每一帧之间循环播放场景动画。如果设置为true,则会循环播放动画,否则将保持静态不动。通过设置此属性,可以控制场景动画是否自动播放。...automaticallyTrackDataSourceClocks: 是否自动跟踪数据源时钟,当设置为true时,数据源始终与场景时钟同步,如果数据源没有时钟,则不会跟踪。默认为true。...需要注意的是,默认情况下,此属性被设置为true,因此当用户点击或悬停在Cesium Viewer的画布上时,焦点将会自动从当前的DOM元素中移开。如果您想要保留焦点,请将该属性设置为false。
何时使用 Refs 下面是几个适合使用 refs 的情况: 管理焦点,文本选择或媒体播放。 触发强制动画。 集成第三方 DOM 库。 避免使用 refs 来做任何可以通过声明式实现来完成的事情。...ref 被传递给 render 中的元素时,对该节点的引用可以在 ref 的 current 属性中被访问。...const node = this.myRef.current; ref 的值根据节点的类型而有所不同: 当 ref 属性用于 HTML 元素时,构造函数中使用 React.createRef() ...当 ref 属性用于自定义 class 组件时,ref 对象接收组件的挂载实例作为其 current 属性。 你不能在函数组件上使用 ref 属性,因为他们没有实例。 以下例子说明了这些差异。...它已过时并可能会在未来的版本被移除。
为什么要添加插入图片的过渡动画 当向一个ViewGroup添加控件或者移除控件;这种场景虽然能够实现效果,并没有一点过度效果,直来直去的添加或者移除,显得有点生硬。...如何运用到插入或者删除图片场景中 向一个ViewGroup添加控件或者移除控件,这两种效果的过程是应对应于控件的显示、控件添加时其他控件的位置移动、控件的消失、控件移除时其他控件的位置移动等四种动画效果...当设置了布局动画的ViewGroup添加或者删除内部view时就会触发动画。...stateAlwaysHidden-总是隐藏状态:当设置该状态时,软键盘总是被隐藏,和stateHidden不同的是,当我们跳转到下个界面,如果下个页面的软键盘是显示的,而我们再次回来的时候,软键盘就会隐藏起来...当父布局是scrollView的时候,感觉没啥变化,还是自定将布局顶起,输入框不被遮挡,不可以手动滑出被遮挡的布局(白瞎了scrollView); 看了上面的属性,那么该如何设置呢?
未知时长,但不允许被其它应用截取音频焦点。例如:录音软件。 在 Android O 或者更新的版本上您必须使用 builder 来实例化一个 AudioFocusRequest 类。...请求结果以一个 int 变量返回:AUDIOFOCUS_REQUEST_GRANTED 表示获得授权, AUDIOFOCUS_REQUEST_FAILED 表示被系统拒绝。...如果用户主动暂停播放时,您的应用应释放音频焦点。如果是为了响应音频焦点的暂时丢失而暂停播放,则不应释放音频焦点。 这里有一些用例来说明这一点。...您在这个回调里处理暂停音乐播放。 当 Google Assistant 使用结束,您的 OnAudioFocusChangeListener 会收到 AUDIOFOCUS_GAIN 事件回调。...在前面的步骤中,我们遇到了一个应用暂停播放应该释放音频焦点的情况,但是这个应用依旧保留了音频焦点。
下面是一些音频焦点使用场景(假设用户正在使用您的应用播放音频)。 当您的应用需要播放声音的时候,应该先请求音频聚焦,在获得音频焦点后再播放声音。...用例一 : 用户在使用您的应用播放音频1时,打开另一个应用并尝试播放该应用相关的音频2 您的应用不处理音频焦点的情况下: 您的音频1和另一个应用的音频2会重叠播放,用户无法正常听到来自任何应用的音频,这样的用户体验很不友好...您的应用处理了音频焦点的情况下: 在另一个应用需要播放音频时,它会请求音频焦点常驻,即音频永久聚焦。一旦系统授权,它便会开始播放音频,这时候您的应用需要响应音频焦点的丢失通知,停止播放。...用例二 : 当您播放音频时候,正好手机来电,需要播放响铃。 您的应用不处理音频焦点的情况下: 手机响铃后,用户会听到铃声和您的手机音频叠加在一起播放。如果用户选择直接挂断电话,您的音频会保持播放。...您的应用应该选择暂停播放,然后在通话结束后恢复播放。 ? 总结 当您的应用需要输出音频时,应该请求音频焦点。只有在获得音频焦点后,才能开始播放。