「一句话经典」Android绘制View(view私人定制的必修课)
2017-02-09 16:45
218 查看
「一句话经典」Android绘制View(view私人定制的必修课):使用Paint、Bitmap、Canvas 以及其他在android.graphic 包下的常用类,如Color 、Matrix 、Drawable、Shape着色器类生产出新Bitmap图,然后被ImageView使用。
经典解读:
1 、(难点)绘图逻辑与人类绘画不一致:人类是使用画笔在画布/纸上绘画;但是android提供的绘图逻辑是画布使用画笔画画
。
2 、(需掌握)绘图逻辑全流程:输入:Bitmap(初始可为空) 、paint(包含颜色与粗细大小等属性)、Canvas(拿着paint画);输出 :Bitmap
3、开始画起
布局文件
活动类MainActivity
最终效果
附DEMO下载链接: http://download.csdn.net/detail/z00238082/9751090
经典解读:
1 、(难点)绘图逻辑与人类绘画不一致:人类是使用画笔在画布/纸上绘画;但是android提供的绘图逻辑是画布使用画笔画画
。
2 、(需掌握)绘图逻辑全流程:输入:Bitmap(初始可为空) 、paint(包含颜色与粗细大小等属性)、Canvas(拿着paint画);输出 :Bitmap
3、开始画起
布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:gravity="center" tools:context="com.crazy.caz.basisofdrawview.MainActivity"> <ImageView android:id="@+id/imageView" android:layout_width="300dp" android:layout_height="300dp" android:layout_gravity="center" android:background="@mipmap/ic_launcher"/> </LinearLayout>
活动类MainActivity
package com.crazy.caz.basisofdrawview; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Typeface; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView= (ImageView) findViewById(R.id.imageView); imageView.setImageBitmap(getBitmap()); } private Bitmap getBitmap() { //1. 创建 Bitmap int width=300; int height=300; Bitmap bm=Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_8888); //2. 创建Canvas Canvas canvas=new Canvas(bm); //3.创建用于绘制矩形的Paint Paint rectPaint=new Paint(); rectPaint.setColor(Color.YELLOW); //4. 绘制矩形 canvas.drawRect(0,0,width,height,rectPaint); //5.创建新的paint用于绘制文字"2017" Paint textPaint=new Paint(); textPaint.setColor(Color.BLUE); textPaint.setTextSize(100); textPaint.setTypeface( Typeface.defaultFromStyle( Typeface.BOLD_ITALIC ) ); textPaint.setTextAlign(Paint.Align.CENTER); //6.写字 canvas.drawText("2017",width/2,height/2,textPaint); //7. return bm; } }
最终效果
附DEMO下载链接: http://download.csdn.net/detail/z00238082/9751090
相关文章推荐
- 关于android ui的优化 view 的绘制速度
- android--ImageView绘制开关按钮
- Android中View绘制流程以及invalidate()等相关方法分析
- android自定义view--绘制顺序及相关原理
- Android View绘制流程
- 关于android ui的优化 view 的绘制速度
- Android中View(视图)绘制不同状态背景图片原理深入分析以及StateListDrawable使用详解
- android如何绘制view
- Android中View绘制流程以及invalidate()等相关方法分析
- 基于Android的OpenGL—在 GLSurfaceView上绘制三角形和使用投影和相机视图
- android view绘制圆角矩形(转)
- Android中View绘制流程以及invalidate()等相关方法分析
- android 如何使用surfaceview绘制类似游戏手柄的摇杆?
- Android ViewGroup提高绘制性能
- Android中View绘制流程以及invalidate()等相关方法分析
- 关于android ui的优化 view 的绘制速度
- Android是如何绘制View的
- Android中View绘制流程以及invalidate()等相关方法分析
- Android中View绘制流程以及invalidate()等相关方法分析
- android view内绘制NinePatch的方法