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 实现全屏画竖线

时间: 2024-10-12 04:33:52

android tv 实现全屏画竖线的相关文章

Android应用程序全屏显示方法

导入两个包: import android.view.Window; import android.view.WindowManager; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(W

android开发:全屏和退出全屏

android开发:全屏和退出全屏 from://http://blog.csdn.net/dyllove98/article/details/8831933 2013-04-21 20:31 413人阅读 评论(0) 收藏 举报 xml代码: <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_conten

audio与video控件/标签的隐藏,iso/Android下自动全屏播放,短暂黑屏问题

(一)audio音频标签 <audio src="xxx.mp3"></audio> (二)video视频标签 <video src="xxx.mp4"></video> (三)使用video代替audio (1) 有时候audio标签被屏蔽,不能被浏览器解释通过,可以选择使用video来代替: <video src="xxx.mp3"></video> (2) 若想要将音乐

android activity ImageView全屏设置

开始接触android也有1月有余了,看了一小部分的教学视频+刚哥的疯狂讲义.总是看着视频做一些Demo,有些木讷.今天尝试终于进入项目中,在项目中巩固知识点. 功能1 project启动 显示欢迎页面而后跳转 主页面: 问题点 1 实现Imange 全屏显示: 解决方案: 1.设置image scaleType 属性: android:scaleType="fitXY" 2.设置 activity theme 属性: <activity android:name=".

Android中设置全屏的方法

在实际的应用程序开发中,我们有时需要把 Activity 设置成全屏显示,一般情况下,可以通过两种方式来设置全屏显示效果.其一,通过在代码中可以设置,其二,通过manifest配置文件来设置全屏. 其一:在代码中设置(如下) public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置无标题 requestWindowFeature(Window.FEATURE_NO_TITL

Android 沉浸式全屏

Android 4.4 带来了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可 以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 “身临其境” 的体验. Android 4.4 中提供了 IMMERSIVE 和 IMMERSIVE_STICKY 标记, 可以用这两个标记与 SYSTEM_UI_FLAG_HIDE_NAVIGATION 和SYSTEM_UI_FLAG_FULLSCREEN 一起使用, 来实现沉 浸模式. 注意: 这些标 记在Xamarin

Android中的全屏

全屏一般有两种方法,第一种是在festxml文件中配置: 也就是给activity节点加上android:theme="@android:style/Theme.NoTitleBar.Fullscreen": <activity android:name="com.howlaa.girlsos.FirstActivity" android:label="@string/app_name" android:theme="@andro

Android中实现全屏、无标题栏的两种办法

在进行UI设计时,我们经常需要将屏幕设置成无标题栏或者全屏.要实现起来也非常简单,主要有两种方法:配置xml文件和编写代码设置. 1.在xml文件中进行配置 在项目的清单文件AndroidManifest.xml中,找到需要全屏或设置成无标题栏的Activity,在该Activity进行如下配置即可. 实现全屏效果: android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 实现无标题栏(但有系统自带的任务栏): androi

Android Ireader的全屏与非全屏的切换效果实现

ireader在全屏与非全屏切换,整体的阅读view并没有进行明显示的重绘与抖动现像,如果只是单纯的设置activity的全屏与非全屏切换,因为view的大小变动,会有抖动现象出现 而Android只在4.4版本才提供了沉浸式状态拦,而在4.4之前怎么办呢 1.首先直接在AndroidManifest.xml中需要全屏显示的Activity属性中添加 1 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 2.设置act