登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

查看: 5471404|回复: 689

Android软件开发之盘点自定义View界面大合集(二)

  [复制链接]

249

主题

278

帖子

17

安币

初级码农

Rank: 1

发表于 2011-9-2 19:23:37 | 显示全部楼层 |阅读模式
自定义View界面大合集
今天我用自己写的一个Demo 和大家详细介绍一个Android中自定义View中的使用与绘制技巧。

1.自定义view绘制字符串
      
       相信在实际开发过程中必然很多地方都须要用到系统字 为什么会用到系统字? 方便 省内存 我相信做过J2ME游戏开发的朋友应该深知内存有多么多么重要  而且使用它还可以带来一个更重要的好处就是很方便的可以实现多国语言的切换 笔者现在在正在做的一个产品就是可以多语言切换的软件  有英语 繁体中文 等等 设想如果使用图片字的话那每个语言都须要出一套图,我用一个例子简单介绍一下绘制字符串。
  1. package cn.m15.xys;

  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.graphics.Canvas;
  5. import android.graphics.Color;
  6. import android.graphics.Paint;
  7. import android.graphics.Paint.FontMetrics;
  8. import android.os.Bundle;
  9. import android.view.Display;
  10. import android.view.View;

  11. public class Font extends Activity {
  12.     public int mScreenWidth = 0;
  13.     public int mScreenHeight = 0;
  14.     @Override
  15.     protected void onCreate(Bundle savedInstanceState) {
  16.         setContentView(new FontView(this));
  17.         // 获取屏幕宽高
  18.         Display display = getWindowManager().getDefaultDisplay();
  19.         mScreenWidth  = display.getWidth();
  20.         mScreenHeight = display.getHeight();
  21.         super.onCreate(savedInstanceState);

  22.     }

  23.     class FontView extends View {
  24.         public final static String STR_WIDTH = "获取字符串宽为:";
  25.         public final static String STR_HEIGHT = "获取字体高度为:";
  26.         Paint mPaint = null;
  27.         
  28.         public FontView(Context context) {
  29.             super(context);
  30.             mPaint = new Paint();
  31.         }

  32.         @Override
  33.         protected void onDraw(Canvas canvas) {
  34.             //设置字符串颜色
  35.             mPaint.setColor(Color.WHITE);
  36.             canvas.drawText("当前屏幕宽" + mScreenWidth, 0, 30, mPaint);
  37.             canvas.drawText("当前屏幕高"+ mScreenHeight, 0, 60, mPaint);
  38.             //设置字体大小
  39.             mPaint.setColor(Color.RED);
  40.             mPaint.setTextSize(18);
  41.             canvas.drawText("字体大小为18", 0, 90, mPaint);
  42.             //消除字体锯齿
  43.             mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
  44.             canvas.drawText("消除字体锯齿后", 0, 120, mPaint);
  45.             //获取字符串宽度
  46.             canvas.drawText(STR_WIDTH + getStringWidth(STR_WIDTH), 0, 150, mPaint);
  47.             //获取字体高度
  48.             canvas.drawText(STR_HEIGHT + get