「一句话经典」Android绘制View(view私人定制的必修课)

「一句话经典」Android绘制View(view私人定制的必修课):使用Paint、Bitmap、Canvas 以及其他在android.graphic 包下的常用类,如Color 、Matrix 、Drawable、Shape着色器类生产出新Bitmap图,然后被ImageView使用。

经典解读:

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 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值