1、效果图

2、自定义代码:

<span style="font-family:Comic Sans MS;font-size:14px;">public class ImageTextView extends View implements OnClickListener {

	private Paint mImagePaint;
private Paint mTextPaint;
private int mTextSize=16;
private Bitmap imageBitmap;
private Context context;
private int viewHeight;
private DisplayMetrics displayMetrics;
private int imageTop;
private int textTop; public ImageTextView(Context context) {
super(context);
this.context = context;
init();
} public ImageTextView(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
init();
} public ImageTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.context = context;
init();
}
/**
* 初始化数据
*/
private void init() {
displayMetrics = getDisplayMetrics();
mImagePaint = new Paint();
mTextPaint = new Paint();
mTextPaint.setColor(Color.BLACK);
mTextPaint.setTextSize(mTextSize*displayMetrics.density);
//
mTextPaint.setAntiAlias(true); // 打开抗矩齿
imageBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.home);
//设置背景颜色
setBackground(getResources().getDrawable(R.drawable.item_background_selector));
//设置点击事件
setOnClickListener(this);
} @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
viewHeight = getHeight();
imageTop = (viewHeight - imageBitmap.getHeight())/2;
//是文字在垂直方向上居中
textTop = (int) ((viewHeight - getFontHeight(mTextPaint))/2-mTextPaint.getFontMetrics().top);
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(imageBitmap, 10, imageTop, mImagePaint);
canvas.drawText("打开",imageBitmap.getWidth()+20, textTop, mTextPaint);
} /**
* 获取手机分辨率
* @return
*/
public DisplayMetrics getDisplayMetrics() {
DisplayMetrics dm = new DisplayMetrics();
//取得DisplayMetrics对象方法一
dm = context.getApplicationContext().getResources().getDisplayMetrics();
//取得DisplayMetrics对象方法二
// ((Activity)cx).getWindowManager().getDefaultDisplay().getMetrics(dm);
return dm;
} /**
* 获取字体的高度
* @param paint
* @return
*/
private int getFontHeight(Paint paint){
FontMetrics fm = paint.getFontMetrics();
return (int)Math.ceil(fm.descent - fm.ascent);
} /**
* 改变字体颜色
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mTextPaint.setColor(Color.BLUE);
break;
case MotionEvent.ACTION_UP:
mTextPaint.setColor(Color.BLACK);
break;
default:
break;
}
invalidate();
return super.onTouchEvent(event);
} @Override
public void onClick(View v) { } }</span>

3、文字居中参考

http://blog.csdn.net/hursing/article/details/18703599

最新文章

  1. 【转】深入浅出JavaScript之闭包(Closure)
  2. android布局居中
  3. UI: 多窗口
  4. 代理模式及jdk动态代理原理
  5. Jenkins+ANT+SVN快速搭建持续集成环境
  6. css3 text-overflow属性
  7. Image Segmentation的定义
  8. 关于ImageMagick出现无效参数(invalid parameter)的解决方法
  9. visual studio 2013 快捷键大全
  10. Moqui学习之代码分析mantle priceServices.xml
  11. 如果在遨游浏览器里设置Bing(必应)搜索为默认搜索
  12. Ubuntu 16.04 下卸载 lnmp/lamp 方法
  13. WDatePicker 屏蔽onchange事件的解决办法
  14. java.lang.UnsupportedClassVersionError: Unsupported major.minor version 52.0的错误
  15. WinForm实现类似QQ停靠,显示隐藏过程添加特效效果
  16. jQuery获取Select选择的Text和 Value(转,待测试确认)
  17. 使用Spring标签&lt;form:textarea&gt;时,用readonly=“readonly”属性时不起作用。
  18. vue 从入门到精通(一)
  19. Gridview的item含有checkbox,setOnItemClickListener方法失效的问题
  20. Eclipse 中 Java 代码报版本错误的问题

热门文章

  1. 最大子序列和问题--时间复杂度O(NlogN)
  2. For循环中由于ajax异步导致的问题解决(增加alert数据正常,去掉alert之后数据错误)
  3. Windows任务计划向远程服务器拷贝文件,报登录失败: 未知的用户名或错误密码
  4. css3 伪元素和伪类选择器详解
  5. toLocaleTimeString()方法在IE和谷歌浏览器上 根据本地时间格式,把 Date 对象的时间部分(不含日期)转换为“时间字符串”存在区别
  6. Navicat 连接 Oracle数据库并,导入数据泵(.dmp)
  7. java笔记--正则表达式的运用(包括电话,邮箱验证等)
  8. Try-Catch真的会影响程序性能吗
  9. 使用iCarousel的旋转木马效果请求图片
  10. visio 修改画布大小