android 自定义view
16lz
2021-12-04
自定义的控件只需继承android的View,并实现 onDraw()方法即可,上代码:
- publicclassGameViewextendsView{
- privatePaintpaint;
- publicintangle=10;
- publicintscale=1;
- publicGameView(Contextcontext){
- super(context);
- paint=newPaint();
- newThread(newMyThread()).start();
- }
- publicGameView(Contextcontext,AttributeSetattrs){
- super(context,attrs);
- paint=newPaint();
- newThread(newMyThread()).start();
- }
- //重写onDraw方法
- publicvoidonDraw(Canvascanvas){
- //设置画笔
- paint.setColor(Color.RED);
- paint.setStyle(Paint.Style.FILL);
- //画一个矩形
- canvas.drawColor(Color.YELLOW);
- canvas.drawRect(50,5,90,25,paint);
- //在画布上画一个旋转的文字
- canvas.save();//先调用save
- canvas.rotate(30);//旋转
- paint.setColor(Color.BLACK);
- canvas.drawText("tesdsfsdfsdfsdfsdfsdf",0,20,80,60,paint);
- canvas.restore();//在调用restore,恢复
- Bitmapbmp=BitmapFactory.decodeResource(getResources(),R.drawable.icon);
- Matrixmatrix=newMatrix();
- matrix.setRotate(angle);//控制图片旋转
- matrix.postScale(scale,scale);//控制图片缩放
- Bitmapdstbmp=Bitmap.createBitmap(bmp,0,0,bmp.getWidth(),
- bmp.getHeight(),matrix,true);
- canvas.drawColor(Color.BLACK);
- canvas.drawBitmap(dstbmp,10,10,null);}
- classMyThreadimplementsRunnable{
- @Override
- publicvoidrun(){
- while(!Thread.currentThread().isInterrupted()){
- try{
- Thread.sleep(1000);
- }catch(InterruptedExceptione){
- Thread.currentThread().interrupt();
- }
- postInvalidate();//直接更新view
- }
- }
- }
- }
更多相关文章
- android解决坚屏拍照和保存图片旋转90度的问题,并兼容4.0
- Android(安卓)N 指纹框架
- android调用setRequestedOrientation之后
- android 包管理系统分析
- 【Android】使用LiveData KTX Builder让代码更简洁
- bridge和原生交互的简单用法
- Hybrid(在Android中的实现)
- android2.2资源文件详解4--menu文件夹下的菜单定义
- Android(安卓)Volley库源码简析(HTTP Request部分)