它们的定义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 全屏幕垂直画的更多相关文章

  1. Android TV开发总结(五)TV上屏幕适配总结

    前言:前面几篇总结一些TV上的小Sample,开源到GitHub:https://github.com/hejunlin2013/TVSample, 点击链接,可以持续关注.今天总结下TV上屏幕适配. ...

  2. 联发科发布全球首款搭载Android TV的智能电视系统芯片MT5595

    联发科发布全球首款搭载Android TV的智能电视系统芯片MT5595 admin 资讯 01-07 1 1月7日消息,联发科宣布与Google共同开发出全世界第一个搭载Android TV操作系统 ...

  3. Android Tv 中的按键事件 KeyEvent 分发处理流程

    这次打算来梳理一下 Android Tv 中的按键点击事件 KeyEvent 的分发处理流程.一谈到点击事件机制,网上资料已经非常齐全了,像什么分发.拦截.处理三大流程啊:或者 dispatchTou ...

  4. Android TV 电视调试和遥控器事件监听

    Android TV 真机调试 要进行Android TV开发免不了要进行真机调试. 1.确定电视盒子和开发机器在同一局域网中 2.打开电视盒子的adb允许调试开关 3.进入adb所在文件夹进行adb ...

  5. Android TV开发总结(六)构建一个TV app的直播节目实例

    请尊重分享成果,转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52966319 近年来,Android TV的迅速发展,传统的有线电视受 ...

  6. Android TV开发总结(三)构建一个TV app的焦点控制及遇到的坑

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52835829 前言:上篇中,&l ...

  7. Android TV开发总结(二)构建一个TV Metro界面(仿泰捷视频TV版)

    前言:上篇是介绍构建TV app前要知道的一些事儿,开发Android TV和手机本质上没有太大的区别,屏大,焦点处理,按键处理,是有别于有手机和Pad的实质区别.今天来介绍TV中Metro UI风格 ...

  8. Android TV开发总结(一)构建一个TV app前要知道的事儿

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52792562 前言:近年来,智能 ...

  9. 聊聊真实的 Android TV 开发技术栈

    智能电视越来越普及了,华为说四月发布智能电视跳票了,一加也说今后要布局智能电视,在智能电视方向,小米已经算是先驱了.但是还有不少开发把智能电视简单的理解成手机屏幕的放大,其实这两者并不一样. 一.序 ...

随机推荐

  1. Google Maps Android API v2 (2)- 地图对象

    地图对象 Android的谷歌地图API允许你在你的Andr​​oid应用程序中显示谷歌地图.在谷歌地图移动(GMM)的应用程序,你看到的地图,这些地图具有相同的外观和API暴露出许多相同的功能.GM ...

  2. c++ 计算程序运行时间

    转载 http://blog.csdn.net/trustbo/article/details/10582287 以前经常听人提起如何计算程序运行时间,给出一系列函数,当时没有注意,随便选了clock ...

  3. DOMContentLoaded和window.onload

    相信写js的.都知道window.onload吧,可是并非每一个人都知道DOMContentLoaded,事实上即使你不知道.非常有可能你也常常使用了这个东西. 普通情况下,DOMContentLoa ...

  4. BZOJ 2007 NOI2010 海拔高度 最小减产计划

    标题效果:YT城市是一个精心规划的城市.这个城市是东西向和南北向干道成n×n地区性.简单.可以YT作为一个城市广场,每个区域也可被视为一个正方形.因此,.YT市中含有(n+1)×(n+1)交叉口和2n ...

  5. 上curl java 模拟http请求

    最近,我的项目要求java模拟http请求,获得dns解决 tcp处理过的信息特定的连接. java api提供urlConnection apache提供的httpClient都不能胜任该需求,二次 ...

  6. 开源Math.NET基础数学类库使用(09)相关数论函数使用

    原文:[原创]开源Math.NET基础数学类库使用(09)相关数论函数使用               本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4 ...

  7. Minimum Sum LCM(uva10791+和最小的LCM+推理)

    L - Minimum Sum LCM Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submi ...

  8. ignore,neglect,omit,overlook

    一:简介——ignore :通常指有意不顾,或不理显而易见的事物.neglect :侧重指有意的忽略或忽视,也可指粗心与疏忽.omit :指有意或无意地忘记做某事,也指删去被视作不重要.不合意的东西. ...

  9. 提升Mac os x 10.10+xcode6.1之后,Cocoapods发生故障的解决方案

    提升Mac OS X 10.10+Xcode 6.1之后.Cocoapods图书馆管理也依赖于相应升级.现在最新的Release版本号是 0.34.在之前的版本号.当数据库更新和管理,你会遇到一个错误 ...

  10. POJ2112Optimal Milking(二分法+floyd最短+网络流量)

    职务地址:http://poj.org/problem?id=2112 近期忙着预习课本备考,没怎么刷题.(我是真的有在好好看书..)不敲题还是手痒痒.立即就邀请赛了,还是每晚睡觉前都拿来刷题吧.白天 ...