它们的定义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. Android:What is ART?

    背景:Android4.2之前,安卓手机系统的应用程序均在Dalvik Java的虚拟机上执行,这样的执行模式还要依靠一个编译器来实现与应用程序的沟通.应用程序每次执行时,都须要将程序内的代码转变为机 ...

  2. 解决SMARTFORMS 中table 控件单行跨页的问题

    在CX项目中,MM模块做了大量的的单据打印的工作,一个问题困扰了我好久,一直不能解决.当物料描述很长时,table控件在单元格中能自动换行,这样就有可能在换页处出现一行记录的一部分打在上一页,一部分记 ...

  3. Springmvc +JNDI 在Tomcat下 配置数据源(转)

    一.             简介 jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务 ...

  4. Windows下一个AndroidStudio 正在使用Git(AndroidStudio工程GitHub关联)

    前提条件 : 1. 设备 Git client 下载链接 2. 有着 GitHub 账号 (假设你已经有了一些git基础, 假设还一点都不会, 请去找其它加成学习) AndroidStudio项目公布 ...

  5. 004串重量 (keep it up)

    设计算法并写出代码移除字符串中反复的字符,不能使用额外的缓存空间. 注意: 能够使用额外的一个或两个变量,但不同意额外再开一个数组拷贝. 简单题直接上代码: #include <stdio.h& ...

  6. SQL查询优化——数据结构设计

    本文部分内容会涉及mysql,可能在其它数据库中并不适用. 本章节仅仅针对数据库结构设计做讨论.查询优化的其它内容待续. 数据库设计及使用是WEB开发程序猿必备的一项基础技能,在大数据量和高并发场景, ...

  7. 【Android笔记】MediaPlayer基本用法

    Android MediaPlayer基本使用方式 使用MediaPlayer播放音频或者视频的最简单样例: JAVA代码部分: public class MediaPlayerStudy exten ...

  8. effective c++ 条款10 handle assignment to self operator =

    非强制性,但是个好习惯 当使用连锁赋值时很有用 x=y=z=10; class Window { public: Window& operator=(int size) { ... retur ...

  9. 区分内边距与外边距padding和margin

    以两个并排显示的div为例说明. 现在两个div都有背景颜色, 右边的div中有几行p, 若是想要使两个div之间有间隔, 即两块带了颜色区域之间产生空隙, 则给div的css中外边距margin赋值 ...

  10. 利用Sails.js+MongoDB开发博客系统

    http://yoyoyohamapi.me/categories/利用Sails-js-MongoDB开发博客系统/ 利用Sails.js+MongoDB开发博客系统 Apr 14, 2016 利用 ...