关闭

Android图形编程基本概念

标签: Android图形编程PaintCanvas自定义ViewColor
853人阅读 评论(0) 收藏 举报
分类:

1.颜色对象

Color

Android系统当中颜色的表示方法:

1.int color1 = Color.blue;

2.int color2 = Color.argb(177, 255, 255, 255);

3.在XML文件当中定义颜色


2.画笔对象

Paint

该类的对象用于控制画笔的风格和颜色等方面的信息

paint.setColor(Color.blue);


3.画布对象

该类代表着一块“画布”,可以在上面绘制字符、图形和图片等内容

canvas.drawCircle(300, 400, 100, paint);



自定义View的基本实现方法

1.定义一个类,继承View

2.复写View的onDraw函数

3.在onDraw当中使用Canvas和Paint对象绘制图形


Android坐标系:左上角为原点(向右向下为正方向)


画一条线

public class MyView extends View {

    public MyView(Context context) {
        super(context);
    }

    //当Android系统需要绘制一个View对象时,
    //就会调用该对象的onDraw方法
    @Override
    protected void onDraw(Canvas canvas) {
        Paint paint = new Paint();
        paint.setColor(Color.BLUE);

        canvas.drawLine(0, 0, 200, 200, paint);
        super.onDraw(canvas);
    }
}

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
        setContentView(new MyView(this));
    }
}



(杂记:RadioButton里的属性android:button="@null"是去掉其前面的圆点)


1.Paint的设置方法

setAntiAlias:设置画笔的锯齿效果

setStrokeWidth:设置空心的边框宽度

setStyle:设置画笔风格,空心或者实心

setARGB

setTextSize

setColor

setAlpha

getColor

getAlpha


2.使用Canvas绘制点、线和图形

绘制直线:

drawLine(float startX, float startY, float stopX, float stopY, Paint paint)

绘制矩形:

drawRect(float left, float top, float right, float bottom, Paint paint)

绘制圆形:

drawCircle(float cx, float cy, float radius, Paint paint)



3.使用Canvas绘制文字

使用Canvas绘制字符

drawText(String text, float x, float y, Paint paint)

y轴坐标并不是底部非坐标,而是基于基准线(并不是字符串的底部,比如是a的底部但不是p的底部等)




4使用Canvas绘制图片的方法

drawBitmap(Bitmap bitmap, float left, float top, Paint paint):



public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
        MyView myView = new MyView(this);
        setContentView(myView);
    }
}

public class MyView extends View {

    public MyView(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        Paint paint = new Paint();
        paint.setARGB(150, 0, 100, 200);
        //设置画笔风格为空心(默认为实心)
//        paint.setStyle(Paint.Style.STROKE);
//        paint.setStyle(Paint.Style.FILL);
        //设置空心的边框宽度
        paint.setStrokeWidth(10);
        paint.setTextSize(100);
        canvas.drawText("apple", 50, 200, paint);
        canvas.drawLine(0, 200, 500, 200, paint);
        canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher), 100, 300, paint);
//        canvas.drawRect(100, 300, 300, 500, paint);
//        canvas.drawCircle(200, 200, 150, paint);
        super.onDraw(canvas);
    }
}





0
0
查看评论

android编程之图形绘制

android课堂作业要求做个五子棋游戏,想想如果直接用控件可能速度会比较慢,因此就想用比较常规的游戏编程方法,屏幕绘制.今天查了些资料,并做个整理. 跟其他的屏幕绘制机制一样,android屏幕绘制也需要画布,其次还需要画笔,android的绘制机制可以描述成画笔在画布上的绘制过程.在andro...
  • maerdym
  • maerdym
  • 2012-04-05 22:36
  • 6169

Android多媒体开发 Pro Android Media 第一章 Android图像编程入门 1

本章我们将来学习图像采集和存储的基本知识。我们首先探索android提供的内置功能,然后在后续章节中学习如何定制化软件。内置的图像采集和存储功能是学习Android多媒体功能非常好的入门指南,同时也为后续音频和视频的学习铺路。 我们从如何使用内置相机应用(Camera)开始,之后转到MediaSto...
  • dairyman000
  • dairyman000
  • 2014-02-18 17:22
  • 2780

Android界面编程——Android基本控件

Android界面编程 Android应用开发的一项重要内容就是界面开发。对于用户来说,不管APP包含的逻辑多么复杂,功能多么强大,如果没有提供友好的图形交互界面,将很难吸引最终用户。 作为一个程序员如何才能开发出友好的图形界面呢。实际上Android提供了非常丰富UI(User ...
  • zhangyufeng0126
  • zhangyufeng0126
  • 2016-07-05 21:29
  • 2587

Google Blockly安卓原生图形化编程详解

1.自己创建Brockly工程后,发现运行起来会闪退。最终问题出在所有blockly界面相关的Activity需要在mainfest中定义android:windowSoftInputMode=”stateHidden|adjustPan” 2.所谓的xml转c语言其实是转换成javascript...
  • xinleiweikai
  • xinleiweikai
  • 2017-03-13 14:06
  • 1719

Android图形编程(1):Canvas使用

本文仅作简单示意,表达不清处,请谅解! Canvas基本使用: Canvas.drawPath(Path, Paint); Canvas.drawBitmap(Bitmap, 0, 0, Paint); => Canvas.draw??(??,Paint); //canvas使用...
  • berber78
  • berber78
  • 2013-12-27 21:23
  • 2898

OpenGL ES 2.0游戏与图形编程——适用于iOS 和 Android

  • 2014-05-21 16:53
  • 1.95MB
  • 下载

android图形系统编程学习(一)入门

这几篇Android 3D游戏开发的文章原文出自一位德国人Martin 在droidnova.com写的文章,有lixinso翻译为中文。第一部分首先介绍OpenGL相关的术语,并引导你开始3D开发的第一步。这个关于3D游戏的系列的叫做 Vortex .这个教程主要fo...
  • wbw1985
  • wbw1985
  • 2010-05-15 16:19
  • 3960

MFC edit控件实现自动换行

必须设置Vertical Scrollbar = TRUE 必须设置MultiLine = TRUE 必须设置Horizontal Scrollbar = FALSE 必须设置Auto HScroll&#...
  • a200638012
  • a200638012
  • 2016-07-08 17:22
  • 4786

设置MFC Edit control可以换行显示

MFC Edit control可以换行显示 1.设置edit control 属性Multiline为true 2.写入数据时,想换行的时候写入"\r\n"即可,CString str.Replace("\n","\r\n"); ...
  • a780902723
  • a780902723
  • 2014-12-09 16:52
  • 2468

MFC中EDIT控件实现换行

一、通过回车换行: 这里要有两个设置 .将控件的属性设置为Mutilines->true; .将控件的另一个属性设置为Want return->true. 水平和垂直滚动条设置: 水平滚动条,控件属性设置为:Horizontal Scroll->TRUE ...
  • dearwind153
  • dearwind153
  • 2015-12-09 21:13
  • 3890
    个人资料
    • 访问:97246次
    • 积分:2283
    • 等级:
    • 排名:第19373名
    • 原创:122篇
    • 转载:78篇
    • 译文:0篇
    • 评论:9条
    最新评论