传奇私服开服一条龙,右下眼皮跳是怎么回事,金华烟草电子商务网
前文常用的控件介绍了不少,现在就来讨论一下手机开发中常用到的画图。要掌握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>
java程序的源码如下:
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 studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论