原文: http://blog.csdn.net/tanghongchang123/article/details/52982818

一、基本命令:

1、adb connect [ip]

2、 adb disconnect [ip]

3、adb uninstall [package]

4、.adb shell input text ****:用来输入文字的,在调试程序的时候,很多情况下要键入文字,手机输入方便,电视上,用遥控器按键盘非常麻烦的,可以用这个命令。

二、  焦点控制

1、控制控件是否可获得焦点

android:focusable="true/false" 当这个属性置为true时,表示当前控件可以获得焦点,否则相反。也可以在程序中通过代码来设置:

v.setFocusable(true/false);

2、控制按遥控器上下左右时下一个获得焦点的控件

    • android:nextFocusUp="@+id/..."
    • android:nextFocusDown="@+id/..."
    • android:nextFocusLeft="@+id/..."
    • android:nextFocusRight="@+id/..."
    • 以下是通过程序设置
    • v.setNextFocusUp(id);
    • v.setNextFocusDown(id);
    • v.setNextFocusRight(id);

v.setNextFocusRight(id);

3、TV分辨率的适配问题

如果适配不对,容易出现OOM(out of memory)问题。按现有TV情况,一般建议设置

drawable-sw1080dp

drawable-sw720dp

相应地,提供对应分辨率下的尺寸:

values-sw1080dp

values-sw720dp

比如同样的都是1080P,有的是32寸,有的是42寸。尺寸小,dpi高,使得图片会被压缩。在values文件里,可以使用dp、PIX,默认dpi是160。也可以考虑values采用PX验证一下。

4、阴影、倒影的程序实现(完全可以由美工实现,这里代码只作参考)

倒影原理:基本上就是将原图倒置,画在画布上,然后加上一个半透明的蒙版。

阴影效果:网上有很多讲阴影实现的教程,而这里实现的是在一个圆角矩形的图片四周加上阴影效果。实现办法是在原图四边加上矩形的阴影,然后在四个圆角的地方画扇形阴影来实现。

  1. /**
  2. * @author: sunnybaby
  3. * @Title: createShadowBitmap
  4. * @Description: 生成带阴影图片
  5. * @param orignalBitmap:原图
  6. * @param shadowMargin:阴影边宽
  7. * @param iconCornerRadius:原图圆角半径
  8. * @return :生成的带阴影图片
  9. */
  10. public static Bitmap createShadowBitmap(Bitmap orignalBitmap,
  11. int shadowMargin, int iconCornerRadius) {
  12. int w = orignalBitmap.getWidth();
  13. int h = orignalBitmap.getHeight();
  14. Bitmap shadowBitmap = Bitmap.createBitmap(w + shadowMargin * 2, h
  15. + shadowMargin * 2, Config.ARGB_8888);
  16. int width = shadowBitmap.getWidth();
  17. int height = shadowBitmap.getHeight();
  18. Canvas canvas = new Canvas(shadowBitmap);
  19. canvas.drawBitmap(orignalBitmap, shadowMargin, shadowMargin, null);
  20. Paint paint = new Paint();
  21. paint.setXfermode(new PorterDuffXfermode(Mode.DST_OVER));
  22. int radius = shadowMargin + iconCornerRadius;
  23. // 四个边的阴影效果,采用线性阴影,宽度等于阴影边距+圆角半径
  24. LinearGradient leftGradient = new LinearGradient(radius, 0, 0, 0,
  25. 0x7F000000, 0x00000000, TileMode.CLAMP);
  26. LinearGradient rightGradient = new LinearGradient(width - radius, 0,
  27. width, 0, 0x7F000000, 0x00000000, TileMode.CLAMP);
  28. LinearGradient topGradient = new LinearGradient(0, radius, 0, 0,
  29. 0x7F000000, 0x00000000, TileMode.CLAMP);
  30. LinearGradient bottomGradient = new LinearGradient(0, height - radius,
  31. 0, height, 0x7F000000, 0x00000000, TileMode.CLAMP);
  32. paint.setShader(leftGradient);
  33. canvas.drawRect(0, radius, radius, height - radius, paint);
  34. paint.setShader(rightGradient);
  35. canvas.drawRect(width - radius, radius, width, height - radius, paint);
  36. paint.setShader(topGradient);
  37. canvas.drawRect(radius, 0, width - radius, radius, paint);
  38. paint.setShader(bottomGradient);
  39. canvas.drawRect(radius, height - radius, width - radius, height, paint);
  40. // 四个角的阴影效果,采用圆形阴影,半径等于阴影边距+圆角半径
  41. RadialGradient topLeftCornerGradient = new RadialGradient(radius,
  42. radius, radius, 0x7F000000, 0x00000000, TileMode.CLAMP);
  43. RadialGradient topRightCornerGradient = new RadialGradient(width
  44. - radius, radius, radius, 0x7F000000, 0x00000000,
  45. TileMode.CLAMP);
  46. RadialGradient bottomLeftCornerGradient = new RadialGradient(radius,
  47. height - radius, radius, 0x7F000000, 0x00000000, TileMode.CLAMP);
  48. RadialGradient bottomRightCornerGradient = new RadialGradient(width
  49. - radius, height - radius, radius, 0x7F000000, 0x00000000,
  50. TileMode.CLAMP);
  51. // 画四个角,就是画四个圆心角为90度的扇形,drawArc函数第一个参数为圆弧所在圆的的外接矩形,第二个参数为起始角度,第三个参数为扇形顺时针滑过的角度,第四个参数如果为true时,在绘制圆弧时将圆心包括在内(用来画扇形),第五个参数为画笔
  52. paint.setShader(topLeftCornerGradient);
  53. canvas.drawArc(new RectF(0, 0, radius * 2, radius * 2), 180, 90, true,
  54. paint);
  55. paint.setShader(topRightCornerGradient);
  56. canvas.drawArc(new RectF(width - radius * 2, 0, width, radius * 2),
  57. 270, 90, true, paint);
  58. paint.setShader(bottomLeftCornerGradient);
  59. canvas.drawArc(new RectF(0, height - radius * 2, radius * 2, height),
  60. 90, 90, true, paint);
  61. paint.setShader(bottomRightCornerGradient);
  62. canvas.drawArc(new RectF(width - radius * 2, height - radius * 2,
  63. width, height), 0, 90, true, paint);
  64. return shadowBitmap;
  65. }

读《Android电视机(机顶盒)初次开发的一些经验分享》后的笔记的更多相关文章

  1. 【Android市场】提交应用的一点经验分享

    前言 如果只有一个或者少许的两三个Android市场,本文也没用存在的必要性,本文谨献给同在Android奋战的同仁. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnbl ...

  2. Android 使用GangSDK创建第三方家族公会系统经验分享

    由于需要对之前的游戏加入一个家族系统,想到这块儿可能会有大量的工作需要自己做,就偷了个懒去网上搜罗了一波,有没有类似现成的系统?结果让我惊奇的发现,目前市面上居然真的有类似的服务,虽然是小公司开发的, ...

  3. Android 5.0 + IDA 6.8 调试经验分享

    如今升级快.网上的资料仅仅能做參考. 学到了NDK逆向这一块,昨天为了能让IDA 能动态调试SO,瞎折腾了非常久,这里分享一下我的经验. 工具: IDA pro 6.8 Android 5.x IDA ...

  4. Android 关于编译ijkplayer下的so经验分享

    前言:公司最近需要做直播方面的技术调研,所以需要去研究播放器相关的技术:刚好本人github上收藏了ijkplayer,之前一直没有研究过,现在刚好clone下来研究研究. 我先在Windows安装c ...

  5. Android NFC技术(三)——初次开发Android NFC你须知道NdefMessage和NdefRecord

    Android NFC技术(三)--初次开发Android NFC你须知道NdefMessage和NdefRecord 这最近也是有好多天没写博客了,除了到处张罗着搬家之外,依旧还是许许多多的琐事阻碍 ...

  6. Android WebRTC 音视频开发总结

    www.cnblogs.com/lingyunhu/p/3621057.html 前面介绍了WebRTCDemo的基本结构,本节主要介绍WebRTC音视频服务端的处理,,转载请说明出处(博客园RTC. ...

  7. Android各层推荐开发书籍及参考资料

    Android各层推荐开发书籍及参考资料 转自:http://blog.csdn.net/fancylovejava/article/details/8657058 Android系统按照架构来说一共 ...

  8. Android各层推荐开发书籍及参考资料!!!

    Android各层推荐开发书籍及参考资料 转自:http://blog.csdn.net/fancylovejava/article/details/8657058 Android系统按照架构来说一共 ...

  9. Android | 教你如何开发扫二维码功能

    前言   最近要做一个停车场扫码收费的app,在网上搜了一圈,首先接触到了ZXing,上手试了下,集成过程不复杂,但是感觉效果欠佳,比如距离稍微远点儿就扫不出来了,另外角度对的不好,反光或者光线比较暗 ...

随机推荐

  1. Redis-RDB持久化设置

    1.如何配置RDB持久化机制redis.conf文件,也就是/etc/redis/6379.conf,去配置持久化 save 60 1000 每隔60s,如果有超过1000个key发生了变更,那么就生 ...

  2. kvm介绍、安装及创建虚拟机

    kvm虚拟化介绍 一.虚拟化分类 1.虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立 ...

  3. Linux基础:uniq命令总结

    本文只总结一些常用的用法,更详细的说明见man uniq和 uniq --help. uniq命令 uniq命令主要用于去重. 需要注意的是,不相邻的行不算重复值. 语法格式 Usage: uniq ...

  4. js中三个默认方法call,applay,bind

    这三个都是函数自带的方法(Function.prototype),这三个方法都能够改变函数内部 this的指向, call //call方法接收三个参数,第一个是this指向,第二个,三个是传递给函数 ...

  5. Spring MVC学习总结(2)——Spring MVC常用注解说明

        使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 02     之前在使用Struts2实现MVC的注解时,是借助struts2-convention这个插件,如今我们使 ...

  6. LCS,LIS,LCIS

    网站:CSUST 8月3日(LCS,LIS,LCIS) LCS:      以下讲解来自:http://blog.csdn.net/yysdsyl/article/details/4226630 [问 ...

  7. Ngnix--知识点

    ngnix擅长负载 均衡的反向代理 haproxy擅长高可用的反向代理,这个还支持TCP协议 ngnix只能支持HTTP和Email(这个HTTPS需要核实一下) ngnix和haproxy都需要ke ...

  8. find-median-from-data-stream & multiset priority queue 堆

    https://leetcode.com/problems/find-median-from-data-stream/ 这道题目实在是不错,所以单独拎出来. https://discuss.leetc ...

  9. POJ 1198/HDU 1401

    双向广搜... 呃,双向广搜一般都都用了HASH判重,这样可以更快判断两个方向是否重叠了.这道题用了双向的BFS,有效地减少了状态.但代码太长了,不写,贴一个别人的代码.. #include<i ...

  10. Flip Game(枚举)Poj

     Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 31329   Accepted: 13622 De ...