每一個activity都要在AndroidManifest.xml註冊和字型
<activity android:name=".TabWidget" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Map" /> <activity android:name=".Schedule" />
Canvas 作為繪製文字時,使用FontMetrics物件,計算位置的座標。
它的思路和java.awt.FontMetrics的基本相同。
FontMetrics物件
它以四個基本座標為基準,分別為:
・FontMetrics.top
・FontMetrics.ascent
・FontMetrics.descent
・FontMetrics.bottom
該圖片將如下
Java程式碼
- Paint textPaint = new Paint( Paint.ANTI_ALIAS_FLAG);
-
textPaint.setTextSize( 35);
- textPaint.setColor( Color.WHITE);
- // FontMetrics物件
- FontMetrics fontMetrics = textPaint.getFontMetrics();
- String text = "abcdefghijklmnopqrstu";
- // 計算每一個座標
- float baseX = 0;
- float baseY = 100;
- float topY = baseY + fontMetrics.top;
- float ascentY = baseY + fontMetrics.ascent;
-
float descentY = baseY + fontMetrics.descent;
- float bottomY = baseY + fontMetrics.bottom;
- // 繪製文字
- canvas.drawText( text, baseX, baseY, textPaint);
- // BaseLine描畫
- Paint baseLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);>
- baseLinePaint.setColor( Color.RED);
- canvas.drawLine(0, baseY, getWidth(), baseY, baseLinePaint);
- // Base描畫
- canvas.drawCircle( baseX, baseY, 5, baseLinePaint);
- // TopLine描畫
- Paint topLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
- topLinePaint.setColor( Color.LTGRAY);
- canvas.drawLine(0, topY, getWidth(), topY, topLinePaint);
- // AscentLine描畫
- Paint ascentLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
- ascentLinePaint.setColor( Color.GREEN);
- canvas.drawLine(0, ascentY, getWidth(), ascentY, ascentLinePaint);
- // DescentLine描畫
- Paint descentLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
- descentLinePaint.setColor( Color.YELLOW);
- canvas.drawLine(0, descentY, getWidth(), descentY, descentLinePaint);
- // ButtomLine描畫
- Paint bottomLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
- bottomLinePaint.setColor( Color.MAGENTA);
- canvas.drawLine(0, bottomY, getWidth(), bottomY, bottomLinePaint);
相關推薦
每一個activity都要在AndroidManifest.xml註冊和字型
<activity android:name=".TabWidget" android:label="@string/app_name" android:theme="@android:style/Theme.NoTit
每一個工程師都要學的安全測試,老闆再也不用擔心伺服器被黑
本文由雲+社群發表 本篇包含了XSS漏洞攻擊及防禦詳細介紹,包括漏洞基礎、XSS基礎、編碼基礎、XSS Payload、XSS攻擊防禦。 第一部分:漏洞攻防基礎知識 XSS屬於漏洞攻防,我們要研究它就要了解這個領域的一些行話,這樣才好溝通交流。同時我建立了一個簡易的攻擊模型用於XSS漏洞學
Servlet的配置(建立專案的時候每寫一個servlet都要在web.xml中宣告servlet)
&&在web.xml中新增一組如下標籤 <servlet> <!--servlet開始標籤--> <servlet-name>servletTest</servlet-name>
每解決一個bug, 都要高興好長時間
在我的電腦上, A與X互動,沒有問題。 在他人的電腦上, A與Y互動有問題。我一開始被誤導進入了這樣一個假設:釋出A的時候,可能缺乏某種某種庫, 這種庫在我的電腦上有,在他們的電腦上沒有。 最後結果:電腦沒有問題, A中應該對是X還是Y進行判斷。原來如此。
13.mutiset樹每一個結點都是一個鏈表的指針,可以存儲相同的數據
air include 頭結點 fin names body 指針 cst cin 1 #include <iostream> 2 //紅黑樹(自動保證平衡,自動生成平衡查找樹) 3 #include <set> 4 #include &l
求滿足條件的全部字串,條件:長度為n且它的每一個字元都屬於陣列s
#include<stdio.h> int main(){ void prin(char s[],int n,int sign,char *p); char s[3] = {'A','B','C'}; int n; scanf("%d",&
《惢客創業日記》2018.09.13(週四) 讓每一個銷售員都有一張“惢客名片”
今天收穫非常大,跟一個朋友聊了一個多小時惢客,除了《惢客》的校驗草稿被掃走,還要預定10月份在喜馬拉雅FM上線的《惢客創業日記》,通過這次與朋友的溝通,讓我有了五個收穫: 第一、他對惢客這個專案的認同和認可,使我又一次充滿了信心。記得,一年前我給他打電話聊惢客時,他還聽的雲裡霧裡。
費斯汀格法則:一種強大的能力叫做把每一個選擇都變成對的
美國社會心理學家費斯汀格(Festinger),有一個著名的理論,即被人們稱為的“費斯汀格法則”:生活中的10%是由發生在你身上的事情組成,而另外的90%則是由你對所發生事情如何反應所決定的。 費斯汀格在書中舉了一個例子。卡斯丁早上起床後洗漱時,隨手將自己的高檔手錶
【AngularJS】過濾陣列中的子集(每一個子項都過濾)
說白了就是filter+repeat; 原始碼: <!DOCTYPE html> <html> <head> <meta charset="utf-8"&
Eclipse裡專案名有紅叉,但是底下的每一個檔案都沒有紅叉
有這種錯誤讓人很惱火,因為並不知道是哪個檔案引起的整個專案錯誤。所以我們可以開啟下邊的錯誤按鈕,看看是什麼問題。 如果是因為java compiler level does not match
每一個程式設計師要遵守的一些優秀程式設計風格
無論你是業餘的還是專業的程式設計師,正確的程式設計風格,不但有助於提升軟體產品的功能,還可以明顯減少軟體災難的產生。今天,我們就來探討一下有助於我們獲取更佳程式設計風格的一些最好的規則。 程式碼的可讀性至上 程式碼要能可閱讀和可理解,就需要格式化成一致的方式。對函
熟練運用每一個光標移動到最前和最後
body 光標移動 使用 簡單 ubuntu 事情 linux命令 linux系統中 ctr 看一個真正的專家操作命令行絕對是一種很好的體驗-光標在單詞之間來回穿梭,命令行不同的滾動。在這裏強烈建立適應GUI節目的開發者嘗試一下在提示符下面工作。但是事情也不是那麽簡單,還是
Eclipse自動註冊Servlet:web.xml註冊和@Servlet註解
在建立Javaweb專案中要會用到大量的Servlet類,若一一手動註冊會很繁瑣,此時我們就得想辦法實現web.xml自動註冊了。 Servlet自動註冊的兩種方法: 1.web.xml自動註冊 [email protected]註解 1.web.xm
一個公司是要有多無聊和搞笑才會出這種筆試題目為難程式設計師呢? 哈哈, 大家樂呵一下
某些公司, 偶爾會故意出一些刁鑽的沒有任何意義的筆試題目來為難大家, 我們就不要生氣了, 也來搞笑一下吧, 笑一笑, 十年少。 程式如下: #include <stdio.h> int main( ) {http://www.ba
Android Studio建立Activity快捷註冊到AndroidManifest.xml
平常的時候,我們都是建立一個Activity之後,然後開啟AndroidManifest.xml去註冊該Activity,其實是可以使用快捷鍵的,Windows快捷鍵如下Alt+Enter回車鍵即可,
從AndroidManifest.xml中獲取已註冊Activity的方法
契機:在學習並積累自定義控制元件,為了看效果,需要放到Activity中來顯示。每次寫新的自定義控制元件,不可能都放到同一個Activity中,為了更好觀看效果,每個Activity中只放少數控制元件。如此,隨著自定義控制元件增多,Activity也逐漸增多,相應的需要在A
每一個程序員都是自學成才
自主 團隊 發的 出發點 技能 roi 時間 使用 你在 有很多成為程序員的方法。如果你正行進在一條非常規的道路上,那麽你可能會想知道你該追上那些有學位的人。你該怎麽和那些在課堂上花了很多時間學習計算機和編程的人競爭? 我的經驗來看,競爭的要點不在於學歷:關鍵在於
每一個程序猿都應該用MBP
project 前段時間 oot 打開 win8 電源 fusion .com 變量 換筆記本的想法非常久了。前段時間換工作就想看換工作之後是什麽情況吧。可能工作配的筆記本就是MBP。後來發現是想多了,新工作的筆記本是Thinkpad X240。 配置全然夠用了,8G內存
每一個JavaScript開發者都應該知道的10道面試題
結束 vid 認識 本質 特定 更新 mixin 構造函數 程序猿 JavaScript十分特別。而且差點兒在每一個大型應用中起著至關關鍵的數據。那麽,究竟是什麽使JavaScript顯得與眾不同,意義非凡? 這裏有一些問題將幫助你了解其真正的奧妙所在:
AndroidManifest.xml裏加入不同package的component (Activity、Service裏android:name裏指定的值一般為句號加類名),可以通過指定完全類名(包名+類名)來解決
代碼 gui 目的 tools 註冊 不同 res 收藏 small 我們都知道對於多個Activity如果在同一個包中,在Mainfest中可以這樣註冊 Xml代碼 <span style="font-size: small;"><?xml