`
xindrace
  • 浏览: 95695 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android入门第十四篇之画图

 
阅读更多

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!

        常用控件说了不少,现在说说手机开发中也常用到的画图。要掌握Android的画图,首先就要了解一下,基本用到的图形接口:

1.Bitmap,可以来自资源/文件,也可以在程序中创建,实际上的功能相当于图片的存储空间;

2.Canvas,紧密与Bitmap联系,把Bitmap比喻内容的话,那么Canvas就是提供了众多方法操作Bitamp的平台;

3.Paint,与Canvas紧密联系,是"画板"上的笔刷工具,也用于设置View控件上的样式; 

4.Drawable,如果说前三者是看不见地在内存中画图,那么Drawable就是把前三者绘图结果表现出来的接口。Drawable多个子类,例如:位图(BitmapDrawable)、图形(ShapeDrawable)、图层(LayerDrawable)等。

 

本文主要讲解如何在ImageView画图,以及如何直接在Button(继承View的控件)上面绘制自定义图像。

直接把资源图片画出来

 

 

在ImageView上画图以及绘字

 

 

直接在控件背景上画图

 

main.xml的源码:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    >  
<Button android:id="@+id/Button01" android:layout_width="fill_parent" android:layout_height="44px" android:text="显示资源图片"></Button>  
<Button android:id="@+id/Button02" android:layout_width="fill_parent" android:layout_height="44px" android:text="显示并绘画资源图片"></Button>  
<Button android:id="@+id/Button03" android:layout_height="44px" android:layout_width="fill_parent" android:text="在控件上绘图"></Button>  
<ImageView android:id="@+id/ImageView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>  
  
</LinearLayout>  

 

package com.testDraw;  
  
import android.app.Activity;  
import android.content.res.Resources;  
import android.graphics.Bitmap;  
import android.graphics.Bitmap.Config;  
import android.graphics.BitmapFactory;  
import android.graphics.Canvas;  
import android.graphics.Color;  
import android.graphics.Paint;  
import android.graphics.Typeface;  
import android.graphics.drawable.BitmapDrawable;  
import android.graphics.drawable.Drawable;  
import android.os.Bundle;  
import android.view.View;  
import android.widget.Button;  
import android.widget.ImageView;  
  
public class testDraw extends Activity {  
      
    ImageView iv;  
    Button btn1,btn2,btn3,btn4;  
    Resources r;  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        iv=(ImageView)this.findViewById(R.id.ImageView01);  
        btn1=(Button)this.findViewById(R.id.Button01);  
        btn2=(Button)this.findViewById(R.id.Button02);  
        btn3=(Button)this.findViewById(R.id.Button03);  
  
        btn1.setOnClickListener(new ClickEvent());  
        btn2.setOnClickListener(new ClickEvent());  
        btn3.setOnClickListener(new ClickEvent());  
          
        r = this.getResources();  
  
    
    }  
    class ClickEvent implements View.OnClickListener {  
  
        public void onClick(View v) {  
            if(v==btn1)//显示资源图片   
            {//功能等效   
                //iv.setBackgroundResource(R.drawable.icon);//打开资源图片   
                Bitmap bmp=BitmapFactory.decodeResource(r, R.drawable.icon);//打开资源图片   
                iv.setImageBitmap(bmp);  
            }  
            else if(v==btn2)//显示并绘画资源图片   
            {  
                Bitmap bmp=BitmapFactory.decodeResource(r, R.drawable.icon);//只读,不能直接在bmp上画   
                Bitmap newb = Bitmap.createBitmap( 300, 300, Config.ARGB_8888 );  
                  
                Canvas canvasTemp = new Canvas( newb );  
                canvasTemp.drawColor(Color.TRANSPARENT);  
                  
                Paint p = new Paint();  
                String familyName ="宋体";  
                Typeface font = Typeface.create(familyName,Typeface.BOLD);  
                p.setColor(Color.RED);  
                p.setTypeface(font);  
                p.setTextSize(22);  
                canvasTemp.drawText("写字。。。",50,50,p);  
                canvasTemp.drawBitmap(bmp, 50, 50, p);//画图   
                iv.setImageBitmap(newb);  
            }  
            else if(v==btn3)//直接在Button上绘图   
            {  
                Bitmap newb = Bitmap.createBitmap( btn3.getWidth(), btn3.getHeight(), Config.ARGB_8888 );  
                Canvas canvasTemp = new Canvas( newb );  
                canvasTemp.drawColor(Color.WHITE);  
                Paint p = new Paint();  
                String familyName = "宋体";  
                Typeface font = Typeface.create(familyName, Typeface.BOLD);  
                p.setColor(Color.RED);  
                p.setTypeface(font);  
                p.setTextSize(20);  
                canvasTemp.drawText("写字。。。", 30, 30, p);  
                Drawable drawable = new BitmapDrawable(newb);  
                btn3.setBackgroundDrawable(drawable);  
            }  
        }  
          
    }  
  
}  

 

 

分享到:
评论

相关推荐

    Android新手入门2016(16)--画图

    在Android开发领域,画图是实现用户界面个性化和复杂功能的重要手段。本教程将带你走进Android画图的世界,让你从新手快速成长为能绘制出丰富多彩图形的开发者。在2016年的这个系列教程中,我们将重点探讨如何在...

    android opengl 入门 画点 画图

    本教程将引导你入门Android上的OpenGL ES,讲解如何在屏幕上画点和画图。 首先,我们需要理解OpenGL ES的基本概念。OpenGL ES是一个基于状态机的API,它的操作会影响一系列的状态变量。这些状态变量包括颜色、深度...

    Android画图之Matrix剖析

    Android画图之Matrix剖析Android画图之Matrix剖析Android画图之Matrix剖析Android画图之Matrix剖析Android画图之Matrix剖析Android画图之Matrix剖析Android画图之Matrix剖析

    Android简单画图应用开发

    在Android平台上,开发一款简单的画图应用涉及到许多关键知识点,主要集中在Android Studio的使用、UI设计、绘图机制以及交互处理。以下是对这些知识点的详细解释: 1. **Android Studio**: Android Studio是...

    android简单的画图板实现代码

    在Android平台上,开发一款画图板应用是一项常见的任务,它能提供给用户一个自由创作的空间。这个"android简单的画图板实现代码"就是一个适合初学者的示例项目,旨在帮助开发者了解如何在Android环境中实现画图功能...

    android 交互式画图

    在Android平台上,交互式画图是一项常见的功能,它允许用户通过触摸屏幕或使用其他输入设备在屏幕上绘制图形,实现各种创意表达。这个项目名为"InteractDraw",显然是一个实现简单画图功能的应用,提供了丰富的操作...

    android 画板,白板,画图

    这个“android 画板,白板,画图”模块提供了一种简单的方法,让用户可以在屏幕上进行涂鸦、绘图、添加文字以及处理图像,非常适合用于教育、设计或者简单的娱乐应用。下面将详细介绍这个模块的关键知识点。 1. **...

    Android 画图程序源码.rar

    Android 画图程序源码分析 在Android平台上开发一款画图程序,涉及到许多核心技术和组件。这个"Android 画图程序源码.rar"文件提供了一个实际的案例,可以帮助我们深入理解Android图形系统的工作原理,以及如何创建...

    Android画图示例集合

    这个"Android画图示例集合"项目,通过实际代码示例,将帮助开发者熟悉以上知识点,并能熟练地在Android应用中进行自定义图形绘制。在实践中不断探索和学习,你将能够创建出更多创新和吸引人的用户界面。

    Android代码-画图工具源码.zip

    本篇文章将深入解析“Android代码-画图工具源码.zip”中的关键知识点,帮助开发者理解和构建自己的Android画图应用。 1. **SurfaceView**:Android画图工具的核心是SurfaceView,它是一个可以显示连续动画或处理高...

    Android入门之画图详解

    本文将深入解析Android入门级别的画图技术,帮助初学者理解和掌握如何在屏幕上绘制图形。 首先,我们来看看画图涉及的核心组件: 1. **Bitmap**:Bitmap是Android中的一个关键类,它代表了图像数据,可以是从资源...

    Android 画板(白板)源码 涂鸦 画图 图画

    本项目"Android 画板(白板)源码 涂鸦 画图 图画"提供了一个完整的实现,让用户能够自由地进行绘图操作。以下是基于该源码的主要知识点: 1. **绘图基础**: - Android的`Canvas`类:它是Android图形系统的核心,...

    基于android系统的画图板

    在Android平台上,开发一个画图板应用涉及到许多关键的技术点,包括用户交互、图形渲染、数据存储以及资源管理等。以下是对"基于Android系统的画图板"这一主题的详细解析: 1. **用户交互**:Android系统提供了丰富...

    看代码学Android开发系列:android画图程序源代码

    本教程将通过分析提供的“android画图程序源代码”来深入理解Android图形绘制的基本概念和技术。 首先,Android提供了多种方式来绘制图形,主要包括Canvas、Paint、Path以及Bitmap等类。Canvas是绘画的基础,它提供...

    Android 画图程序源码.zip

    在Android平台上,开发一款自动画图程序涉及到许多关键知识点,这些知识对于理解Android应用开发以及图形绘制至关重要。从"Android 画图程序源码.zip"的标题和描述中,我们可以推测该程序具备自动绘图功能,并能动态...

    android画图板示例程序

    在Android平台上,开发一款画图板应用涉及到许多关键知识点,主要集中在自定义View、画布(Canvas)以及触摸事件处理上。下面将详细解释这些技术点。 1. **自定义View**: Android系统允许开发者创建自己的视图组件...

    Android 画图/签名

    在Android平台上,开发人员可以利用Canvas和Bitmap等组件来实现丰富的图形绘制功能,包括但不限于画图、签名等交互式操作。Canvas是Android图形系统的核心部分,它提供了在内存中的Bitmap上绘制各种形状、线条和图像...

    android 画图集合.zip

    在Android平台上,画图功能是通过Canvas类和相关的图形API实现的,这使得开发者能够创建丰富的自定义视图和交互式图形界面。本压缩包"android 画图集合.zip"包含多个示例项目,旨在帮助开发者深入理解Android图形...

    Android代码-画图程序源码.zip

    在Android平台上,开发一款画图程序可以为用户提供一个创意表达的平台,让他们通过手指或触控笔绘制出自己的作品。这个"Android代码-画图程序源码.zip"压缩包包含了实现这样一个功能的源代码,我们可以从中学到许多...

Global site tag (gtag.js) - Google Analytics