zoukankan      html  css  js  c++  java
  • 读《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、阴影、倒影的程序实现(完全可以由美工实现,这里代码只作参考)

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

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

    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.     }  
  • 相关阅读:
    一种集各种优点于一身的技术面试方式--转
    spring cloud集成 consul源码分析
    一篇文章全面了解监控知识体系--转
    使用CNN做电影评论的负面检测——本质上感觉和ngram或者LSTM同,因为CNN里图像检测卷积一般是3x3,而文本分类的话是直接是一维的3、4、5
    CNN tflearn处理mnist图像识别代码解说——conv_2d参数解释,整个网络的训练,主要就是为了学那个卷积核啊。
    神经网络中embedding层作用——本质就是word2vec,数据降维,同时可以很方便计算同义词(各个word之间的距离),底层实现是2-gram(词频)+神经网络
    使用LSTM做电影评论负面检测——使用朴素贝叶斯才51%,但是使用LSTM可以达到99%准确度
    如何比较Keras, TensorLayer, TFLearn ?——如果只是想玩玩深度学习,想快速上手 -- Keras 如果工作中需要解决内部问题,想快速见效果 -- TFLearn 或者 Tensorlayer 如果正式发布的产品和业务,自己设计网络模型,需要持续开发和维护 -- Tensorlayer
    TensorFlow高层次机器学习API (tf.contrib.learn)
    tensorflow LSTM
  • 原文地址:https://www.cnblogs.com/gszw/p/7679645.html
Copyright © 2011-2022 走看看