全部博文(1293)
分类: Android平台
2013-08-02 17:37:04
注!这里的横向竖向是指终端实际显示的方向。
大部分手持终端的显示模式如图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);