Android控件扫光动画,完美起航-AndroidTV控件获得焦点的扫光效果
目录
前言
Android TV开发与手机开发最大的不同点就是焦点,TV常用的操作方式是遥控器,所以给用户一个醒目美观的焦点是至关重要的。很多产品经理在设计焦点的时候都会选择扫光的效果,比如小牧电视的控件选中效果。今天就给大家介绍一款自定义的扫光效果控件。
效果展示
1、海报扫光效果
2、带圆角的控件扫光效果,光效不会超过圆角的位置
3、扫光容器,可以在扫光容器中放子控件,目前仅实现了LinearLayout
4、图片扫光效果,光效与图片中不透明内容交融的一种效果
实现思路
这一组控件的实现思路,其实很简单,就是光效bitmap的移动,可以是移动画布,也可以是移动bitmap,两种思路都可以实现。当然其中在实现圆角扫光、光效与图片内容交融等效果时,用到一个比较重要的知识点,就是PorterDuffXfermode。具体介绍Xfermode或者PorterDuffXfermode的文章可以去网上搜一下,有很多。简单讲PorterDuffXfermode是一个非常强大的转换模式,使用它,可以使用图像合成的16条Porter-Duff规则的任意一条来控制Paint如何与已有的Canvas图像进行交互。
PorterDuffXfermode的风格就是上面的16中,我们可以简单的理解为一个SRC图形与DST图形的交集,并集类似的效果,在我们这组控件中,主要用到了DST_ATOP、DST_IN。详细使用方法可参考控件源码。
使用方法
首先需要引入library:
implementation 'com.beauney.scanning:scanning-view:1.0.1'
1、海报斜向的扫光效果控件使用
xml中使用控件:
java代码中调用start()、stop()方法:
RelativeLayout container = findViewById(R.id.container);
for (int i = 0; i < container.getChildCount(); i++) {
container.getChildAt(i).setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
ScanningView scanningView = view.findViewWithTag("scanning_view");
if (b) {
AnimatorUtil.scaleBigAnimator(view);
scanningView.start();
} else {
AnimatorUtil.scaleSmallAnimator(view);
scanningView.stop();
}
}
});
}
该控件提供了自定义属性lightImage,可以自定义更换光效图片:
图片制作参考默认扫光图片
2、带圆角的竖向扫光效果控件使用
xml中使用控件:
java代码中调用start()、stop()方法:
mScanningRoundView.start();
mScanningRoundView.stop();
该控件提供了两个自定义属性,用于修改光效图片和圆角角度,参考如下代码:
图片制作参考默认扫光图片,这里没有采用9patch的图片,所以控件高度要和光效图片的高度一致。
3、带圆角的扫光容器使用
xml中使用控件:
java代码中调用start()、stop()方法:
mScanningLayout.start();
mScanningLayout.stop();
同样提供了两个自定义属性,用于修改光效图片和圆角角度,参考如下代码:
图片制作参考默认扫光图片,这里没有采用9patch的图片,所以控件高度要和光效图片的高度一致。
4、图片扫光效果控件使用
xml中使用控件:
java代码中调用相关方法
public void startScanning(View view) {
//启动控件动效之前需要将原始的图片传入
if (mScanningImageView.getSrcBitmap() == null) {
mScanningImageView.setSrcBitmap(ScreenCapture.captureWidget(mIconImg));
}
mScanningImageView.start();
}
public void stopScanning(View view) {
mScanningImageView.stop();
}
该控件提供了一个自定义属性,用于修改光效颜色,参考如下代码:
完成的源码和demo
Android控件扫光动画,完美起航-AndroidTV控件获得焦点的扫光效果相关推荐
- android+下落+动画,完美起航-Android面试题之动画+事件处理篇
前言 提示:秋招在即,计蒙准备在国庆假期结束前整理一套Android初级面试题籍,希望对大家有所帮助 提示:以下是本篇文章正文内容 动画 1.Android 中的动画有哪几类 帧动画.补间动画.属性动 ...
- android 上下收缩动画,Android 带有弹出收缩动画的扇形菜单实例
最近试着做了个Android 带有弹出收缩动画的扇形菜单,留个笔记记录一下. 效果如下 public class MainActivity extends AppCompatActivity impl ...
- android 倒计时的控件,以动画的形式平滑的完成数字的过度
原帖地址:http://gitonway.blog.163.com/blog/static/236894038201461894229615/ ※效果 ※简介 一个倒计时的控件,以动画的形式平滑的完成 ...
- Android之RemoteViews篇上————通知栏和桌面小控件
Android之RemoteViews篇上----通知栏和桌面小控件 一.目录 文章目录 Android之RemoteViews篇上----通知栏和桌面小控件 一.目录 二.RemoteViews的概 ...
- 《深入理解Android 卷III》第六章 深入理解控件(ViewRoot)系统
<深入理解Android 卷III>即将发布,作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分. ...
- 腾讯Android自动化测试实战3.1.4 Robotium的控件获取、操作及断言
3.1.4 Robotium的控件获取.操作及断言 Robotium是一款在Android客户端中的自动化测试框架,它需要模拟用户操作手机屏幕.要完成对手机的模拟操作,应该包含以下几个基本操作: (1 ...
- 【Android自定义View实战】之自定义评价打分控件RatingBar,可以自定义星星大小和间距...
[Android自定义View实战]之自定义评价打分控件RatingBar,可以自定义星星大小和间距
- android如何创建spinner组件,Andriod开发之下拉列表控件(Spinner)的用法
Spinner是Android的下拉列表控件,今天对这个控件进行了学习,发现该控件比其它简单控件使用起来稍微复杂,特地将Spinner控件的使用方法以及注意事项记录下来,以备后用. Spinner控件 ...
- android menu item 显示,Android 如何通过menu id来得到menu item 控件 .
Android 如何通过menu id来得到menu item 控件 . (2012-07-21 06:43:31) 标签: android 如何 杂谈 Android 如何通过menu id来得到m ...
最新文章
- runtime objc_msgSend
- FLEX中Sequence实例教程. 顺序执行的效果.
- 有关可变形部件模型(Deformable Part Model)的一些说明
- list删除某个元素_Redis对象——列表(List)
- Java黑皮书课后题第8章:*8.27(列排序)用下面的方法实现一个二维数组中的列排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵
- 电缆桥架的拉挤玻璃钢材质优势
- HTML5 音频 audio
- 下载文章图片 php,PHP下载文章中的图片+处理文章中的字符
- 多个pdf合并成一个pdf_十秒教你将多个PDF如何合并成一个PDF
- AI算力的阿喀琉斯之踵:内存墙
- 计算机上机单招试题及答案,全国高职单招计算机类模拟试卷考卷及答案
- 任意多边形的最大内切圆算法
- 2023.04.22更新大麦网移动端/M端抢购软件和使用教程
- 【转载】STM32的全部AltiumDesigner元件库文件
- 学习ARM开发(3)
- vba遍历数组_Excel VBA中如何对数组进行去重
- jQuery动画基础讲解(教你玩转jQuery动画)
- 1、pinpoint-简介
- 一次搞清五种 I/O 模型(生动形象版)
- 在 Mac 和蓝牙设备间共享文件