大专生可以学android开发吗?想学android的大专生看过来

如题所述

想学android的大专生看过来分享到: 还记得当初我要转行学习android软件开发的时候,还有朋友劝我不要轻易转行,都在质疑一个问题——大专生可以学android开发吗?我在上海青大实训学习有一段时间了,事实证明,大专生可以学android开发,当然问题总归会有的,保持乐观的心态,认真去学,我可以,你也可以!下面我分享android的2D绘图。 Android图形基础Color类 Android中的颜色用四个数字表示,透明度、红、绿、蓝(ARGB)各占一个数字。每个数字8bit(0-255)。Alpha值为0时完全透明。为了提高效率,Android代码使用整数而不是Color类的实例来表示颜色。 创建color对象的方法:(需要import android.graphics.Color;) (1)使用静态常量: int color = Color.BLUE; (2)使用静态工厂(已知ARGB值): int color = Color.argb(A, R, G, B); (3)使用XML资源文件: 定义颜色: #7fff00ff 在Java代码中调用: int color = getResource().getColor(R.color.mycolor);//返回mycolor的资源ID Android图形基础Paint类 要绘图,首先要调整画笔,待画笔调整好之后,再将图像绘制到画布上,这样才可以显示在手机屏幕上。Android 中的画笔是 Paint类,Paint 中包含了很多方法对其属性进行设置,主要方法如下: void setARGB(int a, int r, int g, int b) 设置Paint对象颜色,参数一为alpha透明通道 void setAlpha(int a) //设置alpha不透明度,范围为0~255 void setAntiAlias(boolean aa) //是否抗锯齿 void setColor(int color) //设置颜色,这里Android内部定义的有Color类包含了一些常见颜色定义 void setFakeBoldText(boolean fakeBoldText) //设置伪粗体文本 void setLinearText(boolean linearText) //设置线性文本 PathEffect setPathEffect(PathEffect effect) //设置路径效果 Rasterizer setRasterizer(Rasterizer rasterizer) //设置光栅化 Shader setShader(Shader shader) //设置阴影 void setTextAlign(Paint.Align align) //设置文本对齐 void setTextScaleX(float scaleX) //设置文本缩放倍数,1.0f为原始 void setTextSize(float textSize) //设置字体大小 Typeface setTypeface(Typeface typeface) //设置字体,Typeface包含了字体的类型,粗细,还有倾斜、颜色等。 void setUnderlineText(boolean underlineText) //设置下划线 Android图形基础Path类 Path类包含一组矢量绘图命令,可以为绘制如线条、矩形、曲线等设定路径。比如新建一个圆形路径: Path circle = new Path(); circle.addCircle(150, 150, 100, Direction.CW); 其中addCircle()方法中的四个参数分别为圆心x坐标、圆心y坐标、半径(单位是像素)以及绘制方向(CW是顺时针,CCW是逆时针)。 其他常用方法: void addOval(RectF oval, Path.Direction dir) //设定椭路径 void addRect(float left, float top, float right, float bottom, Path.Direction dir) //设定矩形路径 void moveTo(float x, float y) //设定起点位置 void lineTo(float x, float y) //画一条直线到(x,y)位置 Android图形基础Shader类 Android中提供了Shader类专门用来渲染图像以及一些几何图形,Shader下面包括几个直接子类,分别是BitmapShader、 ComposeShader、LinearGradient、RadialGradient、SweepGradient。 BitmapShader主要用来渲染图像,LinearGradient 用来进行梯度渲染,RadialGradient 用来进行环形渲染,SweepGradient 用来进行梯度渲染,ComposeShader则是一个 混合渲染,可以和其它几个子类组合起来使用。 Shader类的使用,都需要先构建Shader对象,然后通过Paint的setShader方法设置渲染对象,然后设置渲染对象,然后再绘制时使用这个Paint对象即可。当然,用不同的渲染时需要构建不同的对象。 Android图形基础Canvas类 当我们调整好画笔之后,现在需要绘制到画布上,这就得用Canvas类了。在Android中既然把Canvas当做画布,那么就可以在画布上绘制我们想要的任何东西。除了在画布上绘制之外,还需要设置一些关于画布的属性,比如,画布的颜色、尺寸等。Canvas提供了如下一些方法: Canvas(): 创建一个空的画布,可以使用setBitmap()方法来设置绘制具体的画布。 Canvas(Bitmap bitmap): 以bitmap对象创建一个画布,则将内容都绘制在bitmap上,因此bitmap不得为null。 Canvas(GL gl): 在绘制3D效果时使用,与OpenGL相关。 drawColor: 设置Canvas的背景颜色。 setBitmap: 设置具体画布。 clipRect: 设置显示区域,即设置裁剪区。 isOpaque:检测是否支持透明。 rotate: 旋转画布 setViewport: 设置画布中显示窗口。 skew: 设置偏移量。 综合案例: import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.LinearGradient; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; import android.graphics.Shader; import android.os.Bundle; import android.view.View; public class PathActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyView myView = new MyView(this); setContentView(myView); } private class MyView extends View { public MyView(Context context) { super(context); } /* 重写onDraw() */ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); /* 设置背景为白色 */ canvas.drawColor(Color.WHITE); Paint paint = new Paint(); /* 去锯齿 */ paint.setAntiAlias(true); /* 设置paint的颜色 */ paint.setColor(Color.RED); /* 设置paint的 style 为STROKE:空心 */ paint.setStyle(Paint.Style.STROKE); /* 设置paint的外框宽度 */ paint.setStrokeWidth(3); /* 画一个空心圆形 */ canvas.drawCircle(40, 40, 30, paint); /* 画一个空心正方形 */ canvas.drawRect(10, 90, 70, 150, paint); /* 画一个空心长方形 */ canvas.drawRect(10, 170, 70, 200, paint); /* 画一个空心椭圆形 */ canvas.drawOval(new RectF(10, 220, 70, 250), paint); /* 画一个空心三角形 */ Path path = new Path(); path.moveTo(10, 330); path.lineTo(70, 330); path.lineTo(40, 270); path.close(); canvas.drawPath(path, paint); /* 画一个空心梯形 */ Path path1 = new Path(); path1.moveTo(10, 410); path1.lineTo(70, 410); path1.lineTo(55, 350); path1.lineTo(25, 350); path1.close(); canvas.drawPath(path1, paint); /* 设置paint的颜色 */ paint.setColor(Color.BLUE); /* 设置paint 的style为 FILL:实心 */ paint.setStyle(Paint.Style.FILL); /* 画一个实心圆 */ canvas.drawCircle(120, 40, 30, paint); /* 画一个实心正方形 */ canvas.drawRect(90, 90, 150, 150, paint); /* 画一个实心长方形 */ canvas.drawRect(90, 170, 150, 200, paint); /* 画一个实心椭圆 */ RectF re2 = new RectF(90, 220, 150, 250); canvas.drawOval(re2, paint); /* 画一个实心三角形 */ Path path2 = new Path(); path2.moveTo(90, 330); path2.lineTo(150, 330); path2.lineTo(120, 270); path2.close(); canvas.drawPath(path2, paint); /* 画一个实心梯形 */ Path path3 = new Path(); path3.moveTo(90, 410); path3.lineTo(150, 410); path3.lineTo(135, 350); path3.lineTo(105, 350); path3.close(); canvas.drawPath(path3, paint); /* 设置渐变色 */ Shader mShader = new LinearGradient(0, 0, 100, 100, new int[] { Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW }, null, Shader.TileMode.REPEAT); // Shader.TileMode三种模式 // REPEAT:沿着渐变方向循环重复 // CLAMP:如果在预先定义的范围外画的话,就重复边界的颜色 // MIRROR:与REPEAT一样都是循环重复,但这个会对称重复 paint.setShader(mShader);// 用Shader中定义定义的颜色来话 /* 画一个渐变色圆 */ canvas.drawCircle(200, 40, 30, paint); /* 画一个渐变色正方形 */ canvas.drawRect(170, 90, 230, 150, paint); /* 画一个渐变色长方形 */ canvas.drawRect(170, 170, 230, 200, paint); /* 画一个渐变色椭圆 */ RectF re3 = new RectF(170, 220, 230, 250); canvas.drawOval(re3, paint); /* 画一个渐变色三角形 */ Path path4 = new Path(); path4.moveTo(170, 330); path4.lineTo(230, 330); path4.lineTo(200, 270); path4.close(); canvas.drawPath(path4, paint); /* 画一个渐变色梯形 */ Path path5 = new Path(); path5.moveTo(170, 410); path5.lineTo(230, 410); path5.lineTo(215, 350); path5.lineTo(185, 350); path5.close(); canvas.drawPath(path5, paint); /* 写字 */ paint.setTextSize(24); canvas.drawText("圆形", 240, 50, paint); canvas.drawText("正方形", 240, 120, paint); canvas.drawText("长方形", 240, 190, paint); canvas.drawText("椭圆形", 240, 250, paint); canvas.drawText("三角形", 240, 320, paint); canvas.drawText("梯形", 240, 390, paint); } } } 效果图:
温馨提示:答案为网友推荐,仅供参考
相似回答