目录

前言

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控件获得焦点的扫光效果相关推荐

  1. android+下落+动画,完美起航-Android面试题之动画+事件处理篇

    前言 提示:秋招在即,计蒙准备在国庆假期结束前整理一套Android初级面试题籍,希望对大家有所帮助 提示:以下是本篇文章正文内容 动画 1.Android 中的动画有哪几类 帧动画.补间动画.属性动 ...

  2. android 上下收缩动画,Android 带有弹出收缩动画的扇形菜单实例

    最近试着做了个Android 带有弹出收缩动画的扇形菜单,留个笔记记录一下. 效果如下 public class MainActivity extends AppCompatActivity impl ...

  3. android 倒计时的控件,以动画的形式平滑的完成数字的过度

    原帖地址:http://gitonway.blog.163.com/blog/static/236894038201461894229615/ ※效果 ※简介 一个倒计时的控件,以动画的形式平滑的完成 ...

  4. Android之RemoteViews篇上————通知栏和桌面小控件

    Android之RemoteViews篇上----通知栏和桌面小控件 一.目录 文章目录 Android之RemoteViews篇上----通知栏和桌面小控件 一.目录 二.RemoteViews的概 ...

  5. 《深入理解Android 卷III》第六章 深入理解控件(ViewRoot)系统

    <深入理解Android 卷III>即将发布,作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分. ...

  6. 腾讯Android自动化测试实战3.1.4 Robotium的控件获取、操作及断言

    3.1.4 Robotium的控件获取.操作及断言 Robotium是一款在Android客户端中的自动化测试框架,它需要模拟用户操作手机屏幕.要完成对手机的模拟操作,应该包含以下几个基本操作: (1 ...

  7. 【Android自定义View实战】之自定义评价打分控件RatingBar,可以自定义星星大小和间距...

    [Android自定义View实战]之自定义评价打分控件RatingBar,可以自定义星星大小和间距

  8. android如何创建spinner组件,Andriod开发之下拉列表控件(Spinner)的用法

    Spinner是Android的下拉列表控件,今天对这个控件进行了学习,发现该控件比其它简单控件使用起来稍微复杂,特地将Spinner控件的使用方法以及注意事项记录下来,以备后用. Spinner控件 ...

  9. android menu item 显示,Android 如何通过menu id来得到menu item 控件 .

    Android 如何通过menu id来得到menu item 控件 . (2012-07-21 06:43:31) 标签: android 如何 杂谈 Android 如何通过menu id来得到m ...

最新文章

  1. runtime objc_msgSend
  2. FLEX中Sequence实例教程. 顺序执行的效果.
  3. 有关可变形部件模型(Deformable Part Model)的一些说明
  4. list删除某个元素_Redis对象——列表(List)
  5. Java黑皮书课后题第8章:*8.27(列排序)用下面的方法实现一个二维数组中的列排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵
  6. 电缆桥架的拉挤玻璃钢材质优势
  7. HTML5 音频 audio
  8. 下载文章图片 php,PHP下载文章中的图片+处理文章中的字符
  9. 多个pdf合并成一个pdf_十秒教你将多个PDF如何合并成一个PDF
  10. AI算力的阿喀琉斯之踵:内存墙
  11. 计算机上机单招试题及答案,全国高职单招计算机类模拟试卷考卷及答案
  12. 任意多边形的最大内切圆算法
  13. 2023.04.22更新大麦网移动端/M端抢购软件和使用教程
  14. 【转载】STM32的全部AltiumDesigner元件库文件
  15. 学习ARM开发(3)
  16. vba遍历数组_Excel VBA中如何对数组进行去重
  17. jQuery动画基础讲解(教你玩转jQuery动画)
  18. 1、pinpoint-简介
  19. 一次搞清五种 I/O 模型(生动形象版)
  20. 在 Mac 和蓝牙设备间共享文件

热门文章

  1. Fabric--启动网络手动
  2. 合并odex和少dex的apk为完整的apk文件
  3. vector邻接表建图+dijkstra模板
  4. java项目(注册和登录(成功后查看商品的信息))
  5. 2020-11-16(深入理解计算机系统2.4节选)
  6. Windows保护模式学习笔记(十)—— TLB
  7. 160个Crackme007
  8. android 数据库sqlite的使用
  9. 164. 可达性统计【拓扑排序 / bitset】
  10. 100. 增减序列【差分 / 思维】