[转载]Android Paint和Color类-Android开发进阶&经验分享-eoe Android开发者社区_Android开发论坛 - Powered by Discuz!

[转载]Android Paint和Color类-Android开发进阶&经验分享-eoe Android开发者社区_Android开发论坛 – Powered by Discuz!.

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

   setAntiAlias: 设置画笔的锯齿效果。
setColor: 设置画笔颜色
setARGB:  设置画笔的a,r,p,g值。
setAlpha:  设置Alpha值
setTextSize: 设置字体尺寸。
setStyle:  设置画笔风格,空心或者实心。
setStrokeWidth: 设置空心的边框宽度。
getColor:  得到画笔的颜色
getAlpha:  得到画笔的Alpha值。

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

<span class="kwd">package</span><span class="pln"> eoe</span><span class="pun">.</span><span class="typ">Demo</span><span class="pun">;</span><span class="pln">
 
</span><span class="kwd">import</span><span class="pln"> android</span><span class="pun">.</span><span class="pln">content</span><span class="pun">.</span><span class="typ">Context</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> android</span><span class="pun">.</span><span class="pln">graphics</span><span class="pun">.</span><span class="typ">Canvas</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> android</span><span class="pun">.</span><span class="pln">graphics</span><span class="pun">.</span><span class="typ">Color</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> android</span><span class="pun">.</span><span class="pln">graphics</span><span class="pun">.</span><span class="typ">Paint</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> android</span><span class="pun">.</span><span class="pln">util</span><span class="pun">.</span><span class="typ">Log</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> android</span><span class="pun">.</span><span class="pln">view</span><span class="pun">.</span><span class="typ">KeyEvent</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> android</span><span class="pun">.</span><span class="pln">view</span><span class="pun">.</span><span class="typ">MotionEvent</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> android</span><span class="pun">.</span><span class="pln">view</span><span class="pun">.</span><span class="typ">View</span><span class="pun">;</span><span class="pln">
 
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">GameView</span><span class="pln"> </span><span class="kwd">extends</span><span class="pln"> </span><span class="typ">View</span><span class="pln"> </span><span class="kwd">implements</span><span class="pln"> </span><span class="typ">Runnable</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
 
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">final</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> TAG </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Example_05_03_GameView"</span><span class="pun">;</span><span class="pln">
</span><span class="com">// 声明Paint对象 </span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="typ">Paint</span><span class="pln"> mPaint </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">;</span><span class="pln">
 
</span><span class="kwd">public</span><span class="pln"> </span><span class="typ">GameView</span><span class="pun">(</span><span class="typ">Context</span><span class="pln"> context</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">super</span><span class="pun">(</span><span class="pln">context</span><span class="pun">);</span><span class="pln">
</span><span class="com">// 构建对象 </span><span class="pln">
mPaint </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Paint</span><span class="pun">();</span><span class="pln">
 
</span><span class="com">// 开启线程 </span><span class="pln">
</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Thread</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">).</span><span class="pln">start</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 
</span><span class="lit">@Override</span><span class="pln">
</span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> onDraw</span><span class="pun">(</span><span class="typ">Canvas</span><span class="pln"> canvas</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">super</span><span class="pun">.</span><span class="pln">onDraw</span><span class="pun">(</span><span class="pln">canvas</span><span class="pun">);</span><span class="pln">
 
</span><span class="com">// 设置Paint为无锯齿 </span><span class="pln">
mPaint</span><span class="pun">.</span><span class="pln">setAntiAlias</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
 
</span><span class="com">// 设置Paint的颜色 </span><span class="pln">
mPaint</span><span class="pun">.</span><span class="pln">setColor</span><span class="pun">(</span><span class="typ">Color</span><span class="pun">.</span><span class="pln">RED</span><span class="pun">);</span><span class="pln">
mPaint</span><span class="pun">.</span><span class="pln">setColor</span><span class="pun">(</span><span class="typ">Color</span><span class="pun">.</span><span class="pln">BLUE</span><span class="pun">);</span><span class="pln">
mPaint</span><span class="pun">.</span><span class="pln">setColor</span><span class="pun">(</span><span class="typ">Color</span><span class="pun">.</span><span class="pln">YELLOW</span><span class="pun">);</span><span class="pln">
mPaint</span><span class="pun">.</span><span class="pln">setColor</span><span class="pun">(</span><span class="typ">Color</span><span class="pun">.</span><span class="pln">GREEN</span><span class="pun">);</span><span class="pln">
</span><span class="com">// 同样是设置颜色 </span><span class="pln">
mPaint</span><span class="pun">.</span><span class="pln">setColor</span><span class="pun">(</span><span class="typ">Color</span><span class="pun">.</span><span class="pln">rgb</span><span class="pun">(</span><span class="lit">255</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">));</span><span class="pln">
 
</span><span class="com">// 提取颜色 </span><span class="pln">
</span><span class="typ">Color</span><span class="pun">.</span><span class="pln">red</span><span class="pun">(</span><span class="lit">0xcccccc</span><span class="pun">);</span><span class="pln">
</span><span class="typ">Color</span><span class="pun">.</span><span class="pln">green</span><span class="pun">(</span><span class="lit">0xcccccc</span><span class="pun">);</span><span class="pln">
 
</span><span class="com">// 设置paint的颜色和Alpha值(a,r,g,b) </span><span class="pln">
mPaint</span><span class="pun">.</span><span class="pln">setAlpha</span><span class="pun">(</span><span class="lit">220</span><span class="pun">);</span><span class="pln">
 
</span><span class="com">// 这里可以设置为另外一个paint对象 </span><span class="pln">
</span><span class="com">// mPaint.set(new Paint()); </span><span class="pln">
</span><span class="com">// 设置字体的尺寸 </span><span class="pln">
mPaint</span><span class="pun">.</span><span class="pln">setTextSize</span><span class="pun">(</span><span class="lit">14</span><span class="pun">);</span><span class="pln">
 
</span><span class="com">// 设置paint的风格为“空心” </span><span class="pln">
</span><span class="com">// 当然也可以设置为"实心"(Paint.Style.FILL) </span><span class="pln">
mPaint</span><span class="pun">.</span><span class="pln">setStyle</span><span class="pun">(</span><span class="typ">Paint</span><span class="pun">.</span><span class="typ">Style</span><span class="pun">.</span><span class="pln">STROKE</span><span class="pun">);</span><span class="pln">
 
</span><span class="com">// 设置“空心”的外框的宽度 </span><span class="pln">
mPaint</span><span class="pun">.</span><span class="pln">setStrokeWidth</span><span class="pun">(</span><span class="lit">5</span><span class="pun">);</span><span class="pln">
 
</span><span class="com">// 得到Paint的一些属性 颜色、Alpha值、外框的宽度、字体尺寸 </span><span class="pln">
</span><span class="typ">Log</span><span class="pun">.</span><span class="pln">i</span><span class="pun">(</span><span class="str">"TAG"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"paint Color------>"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> mPaint</span><span class="pun">.</span><span class="pln">getColor</span><span class="pun">());</span><span class="pln">
</span><span class="typ">Log</span><span class="pun">.</span><span class="pln">i</span><span class="pun">(</span><span class="pln">TAG</span><span class="pun">,</span><span class="pln"> </span><span class="str">"paint Alpha------->"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> mPaint</span><span class="pun">.</span><span class="pln">getAlpha</span><span class="pun">());</span><span class="pln">
</span><span class="typ">Log</span><span class="pun">.</span><span class="pln">i</span><span class="pun">(</span><span class="str">"TAG"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"paint StrokeWidth--------->"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> mPaint</span><span class="pun">.</span><span class="pln">getStrokeWidth</span><span class="pun">());</span><span class="pln">
</span><span class="typ">Log</span><span class="pun">.</span><span class="pln">i</span><span class="pun">(</span><span class="str">"TAG"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"paint TextSize----------->"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> mPaint</span><span class="pun">.</span><span class="pln">getTextSize</span><span class="pun">());</span><span class="pln">
 
</span><span class="com">// 绘制一空心个矩形 </span><span class="pln">
canvas</span><span class="pun">.</span><span class="pln">drawRect</span><span class="pun">((</span><span class="lit">320</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">80</span><span class="pun">),</span><span class="pln"> </span><span class="lit">20</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="lit">320</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">80</span><span class="pun">)</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="lit">80</span><span class="pun">,</span><span class="pln"> </span><span class="lit">20</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="lit">40</span><span class="pun">,</span><span class="pln"> mPaint</span><span class="pun">);</span><span class="pln">
 
</span><span class="com">// 设置风格为实心 </span><span class="pln">
mPaint</span><span class="pun">.</span><span class="pln">setStyle</span><span class="pun">(</span><span class="typ">Paint</span><span class="pun">.</span><span class="typ">Style</span><span class="pun">.</span><span class="pln">FILL</span><span class="pun">);</span><span class="pln">
 
mPaint</span><span class="pun">.</span><span class="pln">setColor</span><span class="pun">(</span><span class="typ">Color</span><span class="pun">.</span><span class="pln">GREEN</span><span class="pun">);</span><span class="pln">
 
</span><span class="com">// 绘制绿色实心矩形 </span><span class="pln">
canvas</span><span class="pun">.</span><span class="pln">drawRect</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">20</span><span class="pun">,</span><span class="pln"> </span><span class="lit">40</span><span class="pun">,</span><span class="pln"> </span><span class="lit">20</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="lit">40</span><span class="pun">,</span><span class="pln"> mPaint</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 
</span><span class="com">// 触笔事件 </span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> onTouchEvent</span><span class="pun">(</span><span class="typ">MotionEvent</span><span class="pln"> </span><span class="kwd">event</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 
</span><span class="com">// 按键按下事件 </span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> onKeyDown</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> keyCode</span><span class="pun">,</span><span class="pln"> </span><span class="typ">KeyEvent</span><span class="pln"> </span><span class="kwd">event</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 
</span><span class="com">// 按键弹起事件 </span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> onKeyUp</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> keyCode</span><span class="pun">,</span><span class="pln"> </span><span class="typ">KeyEvent</span><span class="pln"> </span><span class="kwd">event</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> onKeyMultiple</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> </span><span class="typ">KeyCode</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> repeatCount</span><span class="pun">,</span><span class="pln"> </span><span class="typ">KeyEvent</span><span class="pln"> </span><span class="kwd">event</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 
</span><span class="lit">@Override</span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> run</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(!</span><span class="typ">Thread</span><span class="pun">.</span><span class="pln">currentThread</span><span class="pun">().</span><span class="pln">isInterrupted</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">try</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="typ">Thread</span><span class="pun">.</span><span class="pln">sleep</span><span class="pun">(</span><span class="lit">100</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">catch</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Exception</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="typ">Thread</span><span class="pun">.</span><span class="pln">currentThread</span><span class="pun">().</span><span class="pln">interrupt</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="com">// 更新界面 </span><span class="pln">
postInvalidate</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 
</span><span class="kwd">package</span><span class="pln"> eoe</span><span class="pun">.</span><span class="typ">Demo</span><span class="pun">;</span><span class="pln">
 
</span><span class="kwd">import</span><span class="pln"> android</span><span class="pun">.</span><span class="pln">app</span><span class="pun">.</span><span class="typ">Activity</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> android</span><span class="pun">.</span><span class="pln">os</span><span class="pun">.</span><span class="typ">Bundle</span><span class="pun">;</span><span class="pln">
 
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">Activity01</span><span class="pln"> </span><span class="kwd">extends</span><span class="pln"> </span><span class="typ">Activity</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="com">/** Called when the activity is first created. */</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="typ">GameView</span><span class="pln"> mGameView</span><span class="pun">;</span><span class="pln">
 
</span><span class="lit">@Override</span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> onCreate</span><span class="pun">(</span><span class="typ">Bundle</span><span class="pln"> savedInstanceState</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">super</span><span class="pun">.</span><span class="pln">onCreate</span><span class="pun">(</span><span class="pln">savedInstanceState</span><span class="pun">);</span><span class="pln">
 
setContentView</span><span class="pun">(</span><span class="pln">R</span><span class="pun">.</span><span class="pln">layout</span><span class="pun">.</span><span class="pln">main</span><span class="pun">);</span><span class="pln">
 
mGameView </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">GameView</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">);</span><span class="pln">
 
setContentView</span><span class="pun">(</span><span class="pln">mGameView</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span>
赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

登录

注册