android tv 全屏幕垂直画
它们的定义view
采纳canvas双缓冲方式,它可以减少呈现时间。提高性能。
StaggeredView.java
源码例如以下:
package com.xxx.demo; import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
import android.view.WindowManager;
public class StaggeredView extends View {
int width;
int height;
Paint p;
Bitmap bitmap = null;
Canvas x = null; public StaggeredView(Context context) {
super(context);
WindowManager wm = (WindowManager) getContext().getSystemService(
Context.WINDOW_SERVICE);
width = wm.getDefaultDisplay().getWidth();
height = wm.getDefaultDisplay().getHeight();
p = new Paint();
} private void initMyCanvas() {
p.setColor(Color.WHITE);// 设置绿色
bitmap = Bitmap.createBitmap(20, 20, Bitmap.Config.ARGB_8888);
// Create canvas.
x = new Canvas();
x.setBitmap(bitmap);
p.setStyle(Paint.Style.STROKE);
p.setAntiAlias(true);
for (int i = 0; i <=20; i++) {
changeColor(i, p);
x.drawLine(i, 0, i, 20, p);// 画线
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
// 创建画笔
long startTime=System.currentTimeMillis();
initMyCanvas();
int bitWidth = bitmap.getWidth();
int bitHeight = bitmap.getHeight();
for (int i = 0; i < height; i += bitHeight) {
for (int j = 0; j < width; j += bitWidth) {
// changeColor(i,j,p);
// canvas.drawPoint(i, j, p);
canvas.drawBitmap(bitmap, j, i, p);
}
}
System.out.println("时间==="+(System.currentTimeMillis()-startTime));
}
/**
* 改变画笔的颜色
*
* @param i
* @param p
*/
private void changeColor(int i, Paint p) {
switch (i % 2) {
case 0:
p.setColor(Color.WHITE);
break;
case 1:
p.setColor(Color.BLACK);
break;
}
}
}
首先先画出一个小的矩形区域,创建一个canvas画在BitMap上,之后使用系统的canavas复用前面的BitMap,能够提高处理的效率。
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new StaggeredView(this));
}
}
打印的结果例如以下:
I/System.out: 时间===91
方法二:
StaggeredView2.java
採用默认的方式。就是一个循环,画width个竖线。效率还是非常低下的。
。
public class StaggeredView2 extends View {
int width;
int height;
Paint p;
Bitmap bitmap = null;
Canvas x = null;
public StaggeredView2(Context context) {
super(context);
WindowManager wm = (WindowManager) getContext().getSystemService(
Context.WINDOW_SERVICE);
width = wm.getDefaultDisplay().getWidth();
height = wm.getDefaultDisplay().getHeight();
p = new Paint();
initMyCanvas();
}
private void initMyCanvas() {
p.setColor(Color.WHITE);// 设置绿色
bitmap = Bitmap.createBitmap(20, 20, Bitmap.Config.ARGB_8888);
// Create canvas.
x = new Canvas();
x.setBitmap(bitmap);
p.setStyle(Paint.Style.STROKE);
p.setAntiAlias(true);
for (int i = 0; i <= 30; i++) {
changeColor(i, p);
x.drawLine(i, 0, i, 30, p);// 画线
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
// 创建画笔
long startTime=System.currentTimeMillis();
for (int i = 0; i < width; i++) {
changeColor(i, p);
canvas.drawLine(i,0, i, height - 1, p);
}
System.out.println("时间==="+(System.currentTimeMillis()-startTime));
}
/**
* 改变画笔的颜色
*
* @param i
* @param p
*/
private void changeColor(int i, Paint p) {
switch (i % 2) {
case 0:
p.setColor(Color.WHITE);
break;
case 1:
p.setColor(Color.BLACK);
break;
}
}
}
结果为:
I/System.out: 时间===277
相对前面的方式而言。效率是非常低下的。。
。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
android tv 全屏幕垂直画的更多相关文章
- Android TV开发总结(五)TV上屏幕适配总结
前言:前面几篇总结一些TV上的小Sample,开源到GitHub:https://github.com/hejunlin2013/TVSample, 点击链接,可以持续关注.今天总结下TV上屏幕适配. ...
- 联发科发布全球首款搭载Android TV的智能电视系统芯片MT5595
联发科发布全球首款搭载Android TV的智能电视系统芯片MT5595 admin 资讯 01-07 1 1月7日消息,联发科宣布与Google共同开发出全世界第一个搭载Android TV操作系统 ...
- Android Tv 中的按键事件 KeyEvent 分发处理流程
这次打算来梳理一下 Android Tv 中的按键点击事件 KeyEvent 的分发处理流程.一谈到点击事件机制,网上资料已经非常齐全了,像什么分发.拦截.处理三大流程啊:或者 dispatchTou ...
- Android TV 电视调试和遥控器事件监听
Android TV 真机调试 要进行Android TV开发免不了要进行真机调试. 1.确定电视盒子和开发机器在同一局域网中 2.打开电视盒子的adb允许调试开关 3.进入adb所在文件夹进行adb ...
- Android TV开发总结(六)构建一个TV app的直播节目实例
请尊重分享成果,转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52966319 近年来,Android TV的迅速发展,传统的有线电视受 ...
- Android TV开发总结(三)构建一个TV app的焦点控制及遇到的坑
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52835829 前言:上篇中,&l ...
- Android TV开发总结(二)构建一个TV Metro界面(仿泰捷视频TV版)
前言:上篇是介绍构建TV app前要知道的一些事儿,开发Android TV和手机本质上没有太大的区别,屏大,焦点处理,按键处理,是有别于有手机和Pad的实质区别.今天来介绍TV中Metro UI风格 ...
- Android TV开发总结(一)构建一个TV app前要知道的事儿
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52792562 前言:近年来,智能 ...
- 聊聊真实的 Android TV 开发技术栈
智能电视越来越普及了,华为说四月发布智能电视跳票了,一加也说今后要布局智能电视,在智能电视方向,小米已经算是先驱了.但是还有不少开发把智能电视简单的理解成手机屏幕的放大,其实这两者并不一样. 一.序 ...
随机推荐
- TCP/IP-协议族----17、应用层简单
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVrZXdhbmd6aQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- TMS320F28335项目开发记录2_CCS与JTAG仿真器连接问题汇总
CCS与仿真器连接问题 实际使用过程中.仿真器和CCS连接可能出现这样或那样的问题,或许你的连接非常成功,没碰到过什么问题.但我的问题的确不少,可能与电脑配置有关吧,也可能与人品有关吧. 以下的自己的 ...
- Apache Rewrite 理解
因为工作须要,查了一下Apache的文档,对当中反向引用和条件的运行做了理解和实验,以下是对Apache 2.2文档的摘录,并在上面做了实验的样例说明,希望能给一些须要深入理解的一些帮助. 其它部分就 ...
- Threejs 它可以在建立其内部房间效果可见
Threejs 中建立可看到其内部的房间效果 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协 ...
- Android使用的开发MediaRecorder录制声音
至 Android 录制声音的应用,Android提供 MediaRecorder 类别.大约MediaRecorder可以参考一个特定的解释<Android开发之MediaRecorder类具 ...
- 程序猿学英语—In July the English learning summary
七月的英语学习更加曲折,七月初.查看更多,周六和周日可以保证每天两小时的英语教室学习.周一到周 五一般是上完晚自习九点多来机房学习英语,学习一个小时十点多再回宿舍. 考完试,回家待了五天,不好意思的说 ...
- OWIN 为WebAPI
OWIN 为WebAPI 宿主 跨平台 OWIN是什么? OWIN的英文全称是Open Web Interface for .NET. 如果仅从名称上解析,可以得出这样的信息:OWIN是针对.NET平 ...
- 如何插上U盘 自动复制内容
U盘插入自动复制,有效对付那些不肯给PPT的老师,还有一定几率拿到期末考试卷子···有图有真相!业界良心的好东西!!现在看还来得及!!! 代码优化了一下,把不是很重要的都删掉了,这次使用时看不出任何现 ...
- cocos2d-x路~使得第一个字游戏(一个)
前言 去年的回忆.另外,在第三.他们开发了他们的第一场比赛四月,它是游戏.所以我决定走上独立开发的道路上.了.第一款游戏达到它应有的盈利水平.然而这款游戏开发后的时间里.都没再取得还有一款令自己惬意的 ...
- SecureCRT使用提示
一旦itpub我写上面,我不知道这个博客的背后,我们无法上传和修改内容.好恼火啊! 原文链接:SecureCRT的几个使用方法设置 在原文的基础上,再补充几个功能: 1.最好将全部设置定制在Globa ...