读《Android电视机(机顶盒)初次开发的一些经验分享》后的笔记
原文: 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、阴影、倒影的程序实现(完全可以由美工实现,这里代码只作参考)
倒影原理:基本上就是将原图倒置,画在画布上,然后加上一个半透明的蒙版。
阴影效果:网上有很多讲阴影实现的教程,而这里实现的是在一个圆角矩形的图片四周加上阴影效果。实现办法是在原图四边加上矩形的阴影,然后在四个圆角的地方画扇形阴影来实现。
- /**
- * @author: sunnybaby
- * @Title: createShadowBitmap
- * @Description: 生成带阴影图片
- * @param orignalBitmap:原图
- * @param shadowMargin:阴影边宽
- * @param iconCornerRadius:原图圆角半径
- * @return :生成的带阴影图片
- */
- public static Bitmap createShadowBitmap(Bitmap orignalBitmap,
- int shadowMargin, int iconCornerRadius) {
- int w = orignalBitmap.getWidth();
- int h = orignalBitmap.getHeight();
- Bitmap shadowBitmap = Bitmap.createBitmap(w + shadowMargin * 2, h
- + shadowMargin * 2, Config.ARGB_8888);
- int width = shadowBitmap.getWidth();
- int height = shadowBitmap.getHeight();
- Canvas canvas = new Canvas(shadowBitmap);
- canvas.drawBitmap(orignalBitmap, shadowMargin, shadowMargin, null);
- Paint paint = new Paint();
- paint.setXfermode(new PorterDuffXfermode(Mode.DST_OVER));
- int radius = shadowMargin + iconCornerRadius;
- // 四个边的阴影效果,采用线性阴影,宽度等于阴影边距+圆角半径
- LinearGradient leftGradient = new LinearGradient(radius, 0, 0, 0,
- 0x7F000000, 0x00000000, TileMode.CLAMP);
- LinearGradient rightGradient = new LinearGradient(width - radius, 0,
- width, 0, 0x7F000000, 0x00000000, TileMode.CLAMP);
- LinearGradient topGradient = new LinearGradient(0, radius, 0, 0,
- 0x7F000000, 0x00000000, TileMode.CLAMP);
- LinearGradient bottomGradient = new LinearGradient(0, height - radius,
- 0, height, 0x7F000000, 0x00000000, TileMode.CLAMP);
- paint.setShader(leftGradient);
- canvas.drawRect(0, radius, radius, height - radius, paint);
- paint.setShader(rightGradient);
- canvas.drawRect(width - radius, radius, width, height - radius, paint);
- paint.setShader(topGradient);
- canvas.drawRect(radius, 0, width - radius, radius, paint);
- paint.setShader(bottomGradient);
- canvas.drawRect(radius, height - radius, width - radius, height, paint);
- // 四个角的阴影效果,采用圆形阴影,半径等于阴影边距+圆角半径
- RadialGradient topLeftCornerGradient = new RadialGradient(radius,
- radius, radius, 0x7F000000, 0x00000000, TileMode.CLAMP);
- RadialGradient topRightCornerGradient = new RadialGradient(width
- - radius, radius, radius, 0x7F000000, 0x00000000,
- TileMode.CLAMP);
- RadialGradient bottomLeftCornerGradient = new RadialGradient(radius,
- height - radius, radius, 0x7F000000, 0x00000000, TileMode.CLAMP);
- RadialGradient bottomRightCornerGradient = new RadialGradient(width
- - radius, height - radius, radius, 0x7F000000, 0x00000000,
- TileMode.CLAMP);
- // 画四个角,就是画四个圆心角为90度的扇形,drawArc函数第一个参数为圆弧所在圆的的外接矩形,第二个参数为起始角度,第三个参数为扇形顺时针滑过的角度,第四个参数如果为true时,在绘制圆弧时将圆心包括在内(用来画扇形),第五个参数为画笔
- paint.setShader(topLeftCornerGradient);
- canvas.drawArc(new RectF(0, 0, radius * 2, radius * 2), 180, 90, true,
- paint);
- paint.setShader(topRightCornerGradient);
- canvas.drawArc(new RectF(width - radius * 2, 0, width, radius * 2),
- 270, 90, true, paint);
- paint.setShader(bottomLeftCornerGradient);
- canvas.drawArc(new RectF(0, height - radius * 2, radius * 2, height),
- 90, 90, true, paint);
- paint.setShader(bottomRightCornerGradient);
- canvas.drawArc(new RectF(width - radius * 2, height - radius * 2,
- width, height), 0, 90, true, paint);
- return shadowBitmap;
- }
读《Android电视机(机顶盒)初次开发的一些经验分享》后的笔记的更多相关文章
- 【Android市场】提交应用的一点经验分享
前言 如果只有一个或者少许的两三个Android市场,本文也没用存在的必要性,本文谨献给同在Android奋战的同仁. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnbl ...
- Android 使用GangSDK创建第三方家族公会系统经验分享
由于需要对之前的游戏加入一个家族系统,想到这块儿可能会有大量的工作需要自己做,就偷了个懒去网上搜罗了一波,有没有类似现成的系统?结果让我惊奇的发现,目前市面上居然真的有类似的服务,虽然是小公司开发的, ...
- Android 5.0 + IDA 6.8 调试经验分享
如今升级快.网上的资料仅仅能做參考. 学到了NDK逆向这一块,昨天为了能让IDA 能动态调试SO,瞎折腾了非常久,这里分享一下我的经验. 工具: IDA pro 6.8 Android 5.x IDA ...
- Android 关于编译ijkplayer下的so经验分享
前言:公司最近需要做直播方面的技术调研,所以需要去研究播放器相关的技术:刚好本人github上收藏了ijkplayer,之前一直没有研究过,现在刚好clone下来研究研究. 我先在Windows安装c ...
- Android NFC技术(三)——初次开发Android NFC你须知道NdefMessage和NdefRecord
Android NFC技术(三)--初次开发Android NFC你须知道NdefMessage和NdefRecord 这最近也是有好多天没写博客了,除了到处张罗着搬家之外,依旧还是许许多多的琐事阻碍 ...
- Android WebRTC 音视频开发总结
www.cnblogs.com/lingyunhu/p/3621057.html 前面介绍了WebRTCDemo的基本结构,本节主要介绍WebRTC音视频服务端的处理,,转载请说明出处(博客园RTC. ...
- Android各层推荐开发书籍及参考资料
Android各层推荐开发书籍及参考资料 转自:http://blog.csdn.net/fancylovejava/article/details/8657058 Android系统按照架构来说一共 ...
- Android各层推荐开发书籍及参考资料!!!
Android各层推荐开发书籍及参考资料 转自:http://blog.csdn.net/fancylovejava/article/details/8657058 Android系统按照架构来说一共 ...
- Android | 教你如何开发扫二维码功能
前言 最近要做一个停车场扫码收费的app,在网上搜了一圈,首先接触到了ZXing,上手试了下,集成过程不复杂,但是感觉效果欠佳,比如距离稍微远点儿就扫不出来了,另外角度对的不好,反光或者光线比较暗 ...
随机推荐
- 使用.Net Core RT 标准动态库
这个文档可以引导你如何通过CoreRT生成一个原生标准的系统动态库让其他编程语言调用. CoreRT 可以构建静态库, 这些库可以在编译时链接或者也可以构建运行时所需的共享库, 创建一个支持CoreR ...
- MySQL基础命令小结
数据库授权登录[root@localhost ~]# mysql -uroot -p123456mysql> grant select,lock tables on auth.* to 'adm ...
- Java中indexof()的使用
Java中字符串中子串的查找共有四种方法(indexof()) indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置.如果没有找到子字符串,则返回-1. 如果 starti ...
- 彻底弄清楚session是什么?
搬运自博主xueqinna的CSDN博客,根据自己的理解修改了部分内容,介意者请前往原博主博客看原文. 今天就来彻底的学一下session是个啥,作者罗列了几个要点:1.session 是啥?2.怎么 ...
- 9.Spring的IOC+MyBaits+log4j+Servlet
1.创建如下mysql脚本 drop table if exists book_info; create table if not exists book_info( book_id ) primar ...
- 阿里云 LAMP 使用基础
产品亮点 1.基于阿里云CentOS7.2镜像 2.采用yum方式安装,软件安装均为默认目录,未作任何修改. 3.采用经典LAMP组合,拓展性强,资源丰富,解决方案较多 4.附带PhpMyadmin和 ...
- Spring 单例模式和多例模式
1.Spring中的对象默认都是 单例模式. 2.使用 @Scope("prototype") 注解来使对象成为多例模式. 3.通过@Autowired 注入的Service 或者 ...
- Tkinter之Label
最近要弄弄以前想弄的东东了, 所以图形界面不可少,,TKinter, 就用它了, 简单,满足要求. #coding: utf8 from Tkinter import * def tklabel(ev ...
- 洛谷——P1507 NASA的食物计划
https://www.luogu.org/problem/show?pid=1507#sub 题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安 全技术问题一直大伤脑筋,因此在各方压力 ...
- C++:探究纯虚析构函数以及实现数组的高速排序与链表的归并排序
C++:探究纯虚析构函数以及实现数组的高速排序与链表的归并排序 标签: 数据结构 数组 链表 高速排序 归并排序 抽象类 虚继承 by 小威威 1.介绍 本篇博文将通过课后作业的(15 C++ Hom ...