Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13049878
  • 博文数量: 1293
  • 博客积分: 13501
  • 博客等级: 上将
  • 技术积分: 17974
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 18:11
文章分类

全部博文(1293)

文章存档

2019年(1)

2018年(1)

2016年(118)

2015年(257)

2014年(128)

2013年(222)

2012年(229)

2011年(337)

分类: Android平台

2013-08-02 17:37:04

image

注!这里的横向竖向是指终端实际显示的方向。

 

大部分手持终端的显示模式如图1.当我们在Activity的onCreate()中执行下面的语句时,整个屏幕会出现像图2的走向。

/*  从下往上运行,默认是从右到左  */
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  // 横向

由上可见,显然图3才是我们想要的显示效果。这又如何实现?

 

我们知道Canvas画布有两个经典的函数,分别是:

void android.graphics.canvas.drawText(text, x, y, paint);

void android.graphics.Canvas.drawLine(float startX, float startY, float stopX, float stopY, Paint paint) ;

1、画文字的实现分析




直接使用这两个函数的画出的必须是图2的效果。图3效果的实现,需要使用一些技巧即使用画布旋转。DrawText()函数重新将Canvas.drawText()封装来实现画图3的文字的效果。

void DrawText(Canvas canvas ,String text , float x ,float y,Paint paint ,float angle)
{
    if(angle != 0)
    {
         /* 对画布旋转,再画文本 */
        canvas.rotate(angle, x, y);  
    }
    canvas.drawText(text, x, y, paint);
    /*  使用画布恢初始状,以便画下一句文字时再进行旋转*/
    if(angle != 0)
    {
        canvas.rotate(-angle, x, y);
    }
}

 

上图中,对于A语句,需要如下调用:

DrawText(canvas,text,x,y,painter,-90);

对于B语句,需要如下调用:

DrawText(canvas,text,x,y,painter,-90);

 

2、画直接的实现分析

canvas.drawLine(100, 100, 100, 400, painter);

阅读(2138) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~