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 开发技术栈
智能电视越来越普及了,华为说四月发布智能电视跳票了,一加也说今后要布局智能电视,在智能电视方向,小米已经算是先驱了.但是还有不少开发把智能电视简单的理解成手机屏幕的放大,其实这两者并不一样. 一.序 ...
随机推荐
- wbadmin delete backup删除服务器旧的镜像备份
- 【原创】leetCodeOj --- Fraction to Recurring Decimal 解题报告
原题地址: https://oj.leetcode.com/problems/fraction-to-recurring-decimal/ 题目内容: Given two integers repre ...
- Quick Tip: How to Add Syntax Highlighting to Any Project
Quick Tip: How to Add Syntax Highlighting to Any Projectpublic String showAllArticleForPage() throws ...
- bash组织成树数据结构
君子也非独占,善假于物!bash也因此.昨天晚上,今天早上世界杯很精彩.晚上醒来看到不断地居住的电话.早上没有喝的水开始赞赏在英国和意大利的对决.也TM精彩,最后生下了罗马文化.意大利伊特鲁里亚文化获 ...
- CLR Profile解决内存占用过高
CLR Profile解决内存占用过高的问题 炮哥:"嘿,哥们,忙啥呢,电脑卡成这逼样." 勇哥:"在用CLR Profile工具分析下FlexiPrint的内存占用情况 ...
- DV工作流
- 直接选择排序----java实现
直接选择排序思路: 从待排序数据中选择第一个假定为最小的下标,然后他后面的与他循环比较,得到真的最小值下标,然后最小值前的那一区段依次后移,并把最小值赋值给第一个元素.第二次时,假定第二个为最小,然后 ...
- 【rman,1】经典案例增量备份
一.备份策略: 1.星期天晚上 -level 0 backup performed(全备份) 2.星期一晚上 -level 2 backup performed 3.星期二晚上 ...
- BZOJ 1324 Exca神剑 最小割
标题效果:给定一个n*m矩阵.所有的格宝石之子,人们可选择起始位置,后除去宝石的当前位置的周围消失,然后你就可以走两步,重复上述过程 easy发现格儿子把它周围格孩子不能拿 因此,党格访问问题 黑白染 ...
- 采用ToolRunner执行Hadoop基本面分析程序
为了简化执行作业的命令行.Hadoop它配备了一些辅助类.GenericOptionsParser它是一类.经常用来解释Hadoop命令行选项,并根据需要.至Configuration采取相应的对象设 ...