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

Posted 肥宝Fable

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android新手入门2016(16)--画图相关的知识,希望对你有一定的参考价值。

本文来自肥宝传说之路,引用必须注明出处!

画图设计到图片的格式,有空可以看看图片资源各种格式。了解一下图片格式,对学习有用的。而且我面试别人的时候也很喜欢问这个问题,哈哈。

先看个图。


直接看代码吧,注释很详细了。

activity_hello_world.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="55dp" 
	    android:text="显示资源图片"></Button>  
	<Button android:id="@+id/Button02" 
	    android:layout_width="fill_parent" 
	    android:layout_height="55dp" 
	    android:text="显示并绘画资源图片"></Button>  
	<Button android:id="@+id/Button03" 
	    android:layout_height="55dp" 
	    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>  
HelloWorldActivity.java

package com.fable.helloworld;  
  
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 HelloWorldActivity extends Activity {  
	
	ImageView iv;  
    Button btn1,btn2,btn3;  
    Resources r;  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_hello_world);  
        
        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.fable5);//打开资源图片  
                Bitmap bmp=BitmapFactory.decodeResource(r, R.drawable.fable5);//打开资源图片  
                iv.setImageBitmap(bmp);  //显示图片
            }  
            else if(v==btn2)//显示并绘画资源图片  
            {  
                Bitmap bmp=BitmapFactory.decodeResource(r, R.drawable.fable5);//只读,不能直接在bmp上画  
                Bitmap newb = Bitmap.createBitmap( 300, 300, Config.ARGB_8888 );//创建一个新的位图
                  
                Canvas canvasTemp = new Canvas( newb );//画布,画布,用newb的内容来画在画布上
                canvasTemp.drawColor(Color.TRANSPARENT);//设置画布的背景颜色为透明TRANSPARENT
                  
                Paint p = new Paint();//画笔,哈哈,有点意思吧,又画布又画笔的
                String familyName ="宋体";//使用宋体,可以使用非系统的字体,游戏中很多字体是特殊的,需要放在assets/fonts/
                Typeface font = Typeface.create(familyName,Typeface.BOLD);//加粗
                p.setColor(Color.RED);  //画笔颜色为红色
                p.setTypeface(font);  //设置字体
                p.setTextSize(24);  //字体大小
                canvasTemp.drawText("肥宝传说之路",50,50,p); //在画布上画上几个字
                canvasTemp.drawBitmap(bmp, 50, 50, p);//在画布上画上刚刚读出来的fable5
                //上面的东西都是画在画布上的newb图上面的。
                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.BLUE);  //蓝色
                p.setTypeface(font);  //设置画笔的字体
                p.setTextSize(24);  //字体的大小
                canvasTemp.drawText("Android新手入门2016", 14, 24, p);  //写几个字,xy不要填太大,超过按钮大小位置就找不到了
                Drawable drawable = new BitmapDrawable( getApplicationContext().getResources(), newb); //其实这个看的不是很明白 
                btn3.setBackgroundDrawable(drawable);  //把这个图当做按钮的背景
            }  
        }  
    }  
}

代码稍后上传。




以上是关于Android新手入门2016(16)--画图的主要内容,如果未能解决你的问题,请参考以下文章

Android新手入门2016(14)--FragmentTabHost实现选项卡和菜单

Android新手入门2016(11)--非阻塞对话框AlertDialog

Android新手入门2016(15)--Gallery画廊

android api 16 中的 BigDecimal

R语言数据分析和画图基础讲解

cad2008新手入门教程