您的位置:首页 > 移动开发 > Android开发

Android中Paint字体属性的设置

2015-02-05 10:01 267 查看
在Android SDK中使用Typeface类来定义字体,可以通过常用字体类型名称进行设置,如设置默认黑体:

Paint mp = new paint();
mp.setTypeface(Typeface.DEFAULT_BOLD)


常用的字体类型名称还有:

Typeface.DEFAULT //常规字体类型
Typeface.DEFAULT_BOLD //黑体字体类型
Typeface.MONOSPACE //等宽字体类型
Typeface.SANS_SERIF //sans serif字体类型
Typeface.SERIF //serif字体类型

除了字体类型设置之外,还可以为字体类型设置字体风格,如设置粗体:

Paint mp = new Paint();
Typeface font = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD);
p.setTypeface( font );


常用的字体风格名称还有:

Typeface.BOLD //粗体
Typeface.BOLD_ITALIC //粗斜体
Typeface.ITALIC //斜体
Typeface.NORMAL //常规

但是有时上面那些设置在绘图过程中是不起作用的,所以还有如下设置方式:

Paint mp = new Paint();
mp.setFakeBoldText(true); //true为粗体,false为非粗体
mp.setTextSkewX(-0.5f); //float类型参数,负数表示右斜,整数左斜
mp.setUnderlineText(true); //true为下划线,false为非下划线
mp.setStrikeThruText(true); //true为删除线,false为非删除线


Paint常用的方法还有:

mp.setTextSize(); //设置字体大小,int型,如12
mp.setStrokeWidth(w); //设置线宽,float型,如2.5f,默认绘文本无需设置(默认值好像为0),但假如设置了,再绘制文本的时候一定要恢复到0


说明:对于中文粗体的设置,好像只能通过setFakeBoldText(true)来实现,尽管效果看起来不是很实在(字体中空效果)。


Android Paint和Color类

要绘图,首先得调整画笔,待画笔调整好之后,再将图像绘制到画布上,这样才可以显示在手机屏幕上。Android 中的画笔是 Paint类,Paint 中包含了很多方法对其属性进行设置,主要方法如下:

setAntiAlias: 设置画笔的锯齿效果。

setColor: 设置画笔颜色

setARGB: 设置画笔的a,r,p,g值。

setAlpha: 设置Alpha值

setTextSize: 设置字体尺寸。

setStyle: 设置画笔风格,空心或者实心。

setStrokeWidth: 设置空心的边框宽度。

getColor: 得到画笔的颜色

getAlpha: 得到画笔的Alpha值。

下面是一个简单的示例 来说明这些方法的使用。先来看看运行效果吧。



1 package eoe.Demo;

2

3 import android.content.Context; 、

4 import android.graphics.Canvas;

5 import android.graphics.Color;

6 import android.graphics.Paint;

7 import android.util.Log;

8 import android.view.KeyEvent;

9 import android.view.MotionEvent;

10 import android.view.View;

11

12 public class GameView extends View implements Runnable {

13

14 public final static String TAG = "Example_05_03_GameView";

15 // 声明Paint对象

16 private Paint mPaint = null;

17

18 public GameView(Context context) {

19 super(context);

20 // 构建对象
21 mPaint = new Paint();

22

23 // 开启线程

24 new Thread(this).start();

25 }

26

27 @Override

28 protected void onDraw(Canvas canvas) {

29 super.onDraw(canvas);

30

31 // 设置Paint为无锯齿

32 mPaint.setAntiAlias(true);

33

34 // 设置Paint的颜色

35 mPaint.setColor(Color.RED);

36 mPaint.setColor(Color.BLUE);

37 mPaint.setColor(Color.YELLOW);

38 mPaint.setColor(Color.GREEN);

39 // 同样是设置颜色

40 mPaint.setColor(Color.rgb(255, 0, 0));

41

42 // 提取颜色

43 Color.red(0xcccccc);

44 Color.green(0xcccccc);

45

46 // 设置paint的颜色和Alpha值(a,r,g,b)

47 mPaint.setAlpha(220);

48

49 // 这里可以设置为另外一个paint对象

50 // mPaint.set(new Paint());

51 // 设置字体的尺寸

52 mPaint.setTextSize(14);

53

54 // 设置paint的风格为“空心”

55 // 当然也可以设置为"实心"(Paint.Style.FILL)

56 mPaint.setStyle(Paint.Style.STROKE);

57

58 // 设置“空心”的外框的宽度

59 mPaint.setStrokeWidth(5);

60

61 // 得到Paint的一些属性 颜色、Alpha值、外框的宽度、字体尺寸

62 Log.i("TAG", "paint Color------>" + mPaint.getColor());

63 Log.i(TAG, "paint Alpha------->" + mPaint.getAlpha());

64 Log.i("TAG", "paint StrokeWidth--------->" + mPaint.getStrokeWidth());

65 Log.i("TAG", "paint TextSize----------->" + mPaint.getTextSize());

66

67 // 绘制一空心个矩形

68 canvas.drawRect((320 - 80), 20, (320 - 80) / 2 + 80, 20 + 40, mPaint);

69

70 // 设置风格为实心

71 mPaint.setStyle(Paint.Style.FILL);

72

73 mPaint.setColor(Color.GREEN);

74

75 // 绘制绿色实心矩形

76 canvas.drawRect(0, 20, 40, 20 + 40, mPaint);

77 }

78

79 // 触笔事件
80 public boolean onTouchEvent(MotionEvent event) {

81 return true;

82 }

83

84 // 按键按下事件

85 public boolean onKeyDown(int keyCode, KeyEvent event) {

86 return true;

87 }

88

89 // 按键弹起事件

90 public boolean onKeyUp(int keyCode, KeyEvent event) {

91 return true;

92 }

93

94 public boolean onKeyMultiple(int KeyCode, int repeatCount, KeyEvent event) {

95 return true;

96 }

97

98 @Override

99 public void run() {

100 while (!Thread.currentThread().isInterrupted()) {

101 try {

102 Thread.sleep(100);

103 } catch (Exception e) {

104 Thread.currentThread().interrupt();

105 }

106 // 更新界面

107 postInvalidate();

108 }

109 }

110 }

111

112

113 package eoe.Demo;

114

115 import android.app.Activity;

116 import android.os.Bundle;

117

118 public class Activity01 extends Activity {

119

120 private GameView mGameView;

121

122 @Override

123 public void onCreate(Bundle savedInstanceState) {

124 super.onCreate(savedInstanceState);

125

126 setContentView(R.layout.main);

127

128 mGameView = new GameView(this);

129

130 setContentView(mGameView);

131 }

132 }


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: