android 通过canvas旋转 绘制文字 竖直等不同方向的显示
16lz
2021-01-23
效果如下:
主体代码如下:
packagecom.free.chart;importandroid.content.Context;
importandroid.graphics.Canvas;
importandroid.graphics.Color;
importandroid.graphics.Paint;
importandroid.view.SurfaceHolder;
importandroid.view.SurfaceView;
public classDrawTextStudy extendsSurfaceView implementsSurfaceHolder.Callback{
SurfaceHolderholder;
publicDrawTextStudy(Contextcontext){
super(context);
// TODOAuto-generatedconstructorstub
holder= this.getHolder();
holder.addCallback( this);
}
@Override
public voidsurfaceChanged(SurfaceHolderholder, intformat, intwidth,
intheight){
// TODOAuto-generatedmethodstub
}
@Override
public voidsurfaceCreated(SurfaceHolderholder){
// TODOAuto-generatedmethodstub
newThread( newMyThread()).start();
}
@Override
public voidsurfaceDestroyed(SurfaceHolderholder){
// TODOAuto-generatedmethodstub
}
voiddrawText(Canvascanvas,Stringtext, floatx, floaty,Paintpaint, floatangle){
if(angle!=0){
canvas.rotate(angle,x,y);
}
canvas.drawText(text,x,y,paint);
if(angle!=0){
canvas.rotate(-angle,x,y);
}
}
classMyThread implementsRunnable{
@Override
public voidrun(){
// TODOAuto-generatedmethodstub
Canvascanvas= null;
try{
canvas=holder.lockCanvas();
Paintpaint= newPaint();
paint.setColor(Color.WHITE);
paint.setTextSize(20);
canvas.drawLine(100,100,100,400,paint);
drawText(canvas,"Hello",80,200,paint,-90);
paint.setColor(Color.RED);
paint.setTextSize(40);
drawText(canvas,"free",150,180,paint,-45);
paint.setColor(Color.BLUE);
drawText(canvas,"World",150,80,paint,0);
canvas.drawLine(100,100,400,100,paint);
} catch(Exceptione){
} finally{
holder.unlockCanvasAndPost(canvas);
}
}
}
}
activity调用
public voidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);
setContentView( newDrawTextStudy( this));
}
更多相关文章
- 四个方向上的SlidingDrawer
- Android camera 竖直拍照 获取竖直方向照片
- Android 禁止屏幕旋转 & 屏幕旋转不刷新 Activity & 动态更改屏
- Android 屏幕方向以及UI界面状态的保存
- Android 手动设置屏幕方向后不能自动转屏问题
- Android开发提高篇之“多方向”抽屉
- 设备方向