⑴ android 404 對應哪個異常
android 404是指請求的url地址不存在。是http協議的一部分,詳解請看android學習手冊,
上面內容來源於andrid學習手冊,裡面有108個例子,文檔還有源碼,360手機助手中下載
404
(HTTP狀態碼)
編輯
HTTP 404或Not Found錯誤信息是HTTP的其中一種「標准回應信息」(HTTP狀態碼),此信息代表客戶端在瀏覽網頁時,伺服器無法正常提供信息,或是伺服器無法回應且不知原因。
中文名
網頁或文件未找到
外文名
NOT FOUND
HTTP狀態碼
404
目錄
1影響
2實現
3設置
影響
編輯
自定義404錯誤頁面是增強用戶體驗的很好的做法,但在應用過程中往往並未注意到對搜索引擎的影響,譬如:錯誤的伺服器端配置導致返回「404」狀態碼或自定義404錯誤頁面使用Meta Refresh導致返回「302」狀態碼。正確設置的自定義404錯誤頁面,不僅應當能夠正確地顯示,同時,應該返回「404」錯誤代碼,而不是 「200」或「302」。雖然對訪問的用戶而言,HTTP狀態碼究竟是「404」還是「200」來說並沒有什麼區別,但對搜索引擎這則是相當重要的。
搜索引擎蜘蛛在請求某個URL時得到「404」狀態回應時,即知道該URL已經失效,便不再索引該網頁,並向數據中心反饋將該URL表示的網頁從索引資料庫中刪除,當然,刪除過程有可能需要很長時間;而當搜索引擎得到「200」狀態碼時,則會認為該url是有效的,便會去索引,並會將其收錄到索引資料庫,這樣的結果便是這兩個不同的url具有完全相同的內容:自定義404錯誤頁面的內容,這會導致出現復制網頁問題。輕則被搜索引擎降權,重則會K掉網站。
實現
編輯
改變伺服器默認錯誤頁面就可以達到效果。下面是一些可以使得訪客輕松實現正常訪問的建議。
遵循的理念:
有趣的404(18張)
提供簡明的問題描述,消除訪客的挫敗感。提供合理的解決方案,輔助訪客完成訪問目標。提供個性化的友好界面,提升訪問體驗。
實現方式(按照從簡單到復雜的順序排列):
使得訪客轉到某個地方而不是後退。
頁麵包含該站點重要部分的鏈接,如主頁或站點地圖。不要僅僅告訴他們檢查拼寫。使用文本的鏈接替代圖片,因為有許多訪客不會想到點擊這個圖片。
例子:我們的站點有一個主頁的返回鏈接。這是實現友好反饋的最低限度。此外,我們還會考慮,在有效的幫助信息不足的情況下,如何通過訪客的反饋彌補錯誤。
需要包括一個指向網站管理員的email鏈接,或者一個用於提交丟失鏈接的表格。
相對於發送email,訪客更喜歡使用提交表格。
加入一個搜索框用於搜索站點。
例:MSN在所有頁面的底部都有一個搜索框,同時也鏈向站點的重要部分。
在站點中列出接近於訪客期望頁面的鏈接,用於推測訪客正在尋找的頁面。你不需要採納上述所有的建議,但是這些建議一致服務於使得訪客更願意停留在你的站點的目的。
合理的404錯誤頁面至此即可以完成了,這將給訪客提供許多有價值的信息。[1]
設置
編輯
1. 對於存在的網頁內容由於路徑改變而導致訪問不了時,可在IIS 中定義404錯誤指向一個動態頁面,在頁面裡面使用301永久重定向跳轉到新的地址,此時伺服器返回301狀態碼。
2、設置404指向一個設計好的html 文件,此時頁面返回的404狀態碼。 idc提供商基本都提供404設置的功能,直接上傳文件設置即可。在IIs中設置方法:打開IIS管理器-->點擊要設置自定義404的網站的屬性-->點擊自定義錯誤選項-->選中404頁-->選中並打開編輯屬性-->設置成 URL --> URL 里填寫「/err404.html」-->按確定退出再把做好的err404.html 頁面上傳到網站根目錄下。此處在「消息類型」中一定要選擇「文件」或「默認值」,而不要選擇「URL」,不然,將導致返回「200」狀態碼。3、404指向一個動態頁面,比如error.asp,如果不在頁面裡面進行設置,僅僅是返回提示的HTML 代碼,將導致頁面返回200 狀態碼,這是不正確的,我們可以在顯示完提示內容後,增加語句: Response.Status="404 Not Found" ,這樣就保證頁面返回404狀態碼。
3、Apache下設置404錯誤頁面。為Apache Server設置404錯誤頁面的方法很簡單,只需在.htaccess 文件中加入如下內容即可,ErrorDocument 404 /notfound.php
⑵ 求助android監聽事件 實現代碼監聽滑鼠的左鍵,中間鍵,右鍵
android是有滑鼠的。
通常,設置你的 /system/usr/idc/<your touch panel>.idc文件中的
touch.deviceType = Pointer
就是滑鼠了。
現在市面上已經賣了不少用android做的智能手機或dongle,都是支持滑鼠的。
至於值的話,從KeyEvent和MotionEvent中查一下吧,或者google一下? 也或許,可以trace一下
⑶ 如何發布打包並發布自己的Android應用
我將重點給大家介紹,發布時候生成的「簽名文件」的作用(前面提過,叫大家一定要保管好此文件),如何驗證自己的App是否發布成功,是否成功簽名,以及發布後的apk文件如何上傳(一般上傳到哪裡去,要怎麼弄呢?要注意那些問題等等)。
談到「簽名文件」的作用,首先我想到了Windows下的「DLL地獄」。如果讀者是一位Windows程序員(尤其是年紀大一點的程序員),談「DLL」色變,那可真是個噩夢啊。
所謂的「DLL地獄」,就是指「DLL文件覆蓋」(因為Windows文件系統有個原則,同一個目錄下面如果出現同類型且類型命名相同的文件,後者將覆蓋前者。)。好了,這大概不是本文的重點,有興趣的讀者可以參考相關資料。
後來到了.NET的時代,這個問題得到了很好的解決。熟悉.NET且有一定深入研究的童鞋都應該知道,.NET中有一種「強命名程序集」的概念,正是用於解決這個問題。
形象點說,就是給了「DLL文件」簽名、描述,讓他們能夠區分開來,從而避免「地獄」。(個人淺淺的認為,不知道這樣講是否正確,不足之處請指出)。
回到Android中來,這年頭開發Android應用的人可不少(因為想賺錢的人實在太多了)。那「包名、類名」這些是不是很容易出現「撞車」呢?有了簽名文件,這些就能夠得到很好的解決了。
APK如果使用一個key簽名,發布時另一個key簽名的文件將無法安裝或覆蓋老的版本,這樣可以防止你已安裝的應用被惡意的第三方覆蓋或替換掉。
比如:你發布在「電子市場」的應用,一段時間後你需要升級應用了,繼續使用你以前的「簽名文件」,這樣就能保證你的版權和安全。道高一尺,魔高一丈。
在中國大地的屏幕上,再牛B的軟體也可能被破解的,有簽名文件,就能很好的防止這種事情(不能完全)。
這樣簽名其實也是開發者的身份標識。交易中抵賴等事情發生時,簽名可以防止抵賴的發生。
上面說了幾點,都是使用簽名文件的好處。不一定很完整,但都是很常見,很典型的。
那我們如何檢查自己發布後是否「簽名成功」呢???
其實,我們使用Eclipse+ADT插件從開發環境安裝到手機中的APK文件已經包含了ADT插件的Debug簽名文件。但是這不是發布時候的「正式簽名」文件。讀者可以參考我上文(linuxidc.com/Linux/2011-10/45887.htm)中的具體步驟,嘗試著發布自己的app,並請保留好簽名文件。
簽名完成後,你可以用winrar打開apk,在Meta-inf目錄下,用文本編輯器打開CERT.RSA文件,如果能看到部分你建的key時候輸入的文本就是正式簽名了,如果測試簽名會有debug字樣。(一般情況會亂碼,但是用肉眼仔細觀察,你就能略微的看清楚一些啦)
值得提醒的就是,軟體代碼更新後(需要發布新的APK了),要將Manifest的Android:versionCode值+1,每更新一次都要加1。
弄明白這些之後,該向大家講講上傳應用了。由於Android是一個相對開放的平台,所以上傳應用的限制也低一些,而且缺乏官方的規范。不像蘋果和它的APP商店那般封閉。國內而言,上傳應用的網站有很多,國內比較有名的就是「安卓市場」,「Android 電子市場」,「機鋒市場」......
不同的市場審核規則也不盡相同,但是大同小異。還有一些值得注意的是:注意你的APP語言(國際化),屏幕解析度及尺寸的支持...(當然,這是打包前就應該做好的工作啦)
⑷ android studio基礎問題
1. SkinMagic使用的方法
1.1 初始化皮膚控制項 InitSkinMagicLib
例: nInitSkinMagicLib=InitSkinMagicLib( AfxGetInstanceHandle(),_T("LSA") ,NULL,NULL);載入皮膚文件 LoadSkinFile(根據文件路徑進行載入)或LoadSkinFromResource(根據資源名稱進行載入)。
例:nLoadSkinFile=LoadSkinFile(sSkinFilePath);
1.2 使用SetDialogSkin或者SetSingleDialogSkin或者SetShapeWindowSkin給窗體載入皮膚
這三者是有區別的。
1.3.1 SetDialogSkin是給所有的窗體均載入同樣的皮膚。不建議使用這個函數。除非你的軟體均使用同樣的皮膚。
1.3.2 SetSingleDialogSkin給單個指定的窗體載入皮膚。窗口的顯示方式是規則窗體。
1.3.3 SetShapeWindowSkin 給單個指定的窗體載入皮膚。窗口的顯示方式為非規則窗體。
2.SkinMagic使用的高級方法
2.1 RemoveWindowSkin去掉指定窗體上的皮膚
當某個窗體或者控制項不需要皮膚時可以使用此函數
2.2 RemoveDialogSkin 停止自動給窗體載入皮膚。主要是針對SetDialogSkin的。
2.3 EnableWindowScrollbarSkin 給指定窗體載入滾動條皮膚。比較適用於自繪的控制項。
例:nSkin=EnableWindowScrollbarSkin(GetDlgItem(IDC_DLGTREE_EXPORT)->m_hWnd,SB_BOTH);
2.4 DisableWindowScrollbarSkin 使指定窗體停止載入滾動條皮膚。
2.5 如何給Splitter載入皮膚
2.5.1 皮膚文件中自定義Splitter
2.5.2 打開Splitter
例:m_hSkin = OpenSkinData( _T("SkinSplitter") );
2.5.3重載函數OnDrawSplitter
詳見系統管理源代碼中類AW_CMultiViewSplitter
2.6 如何從皮膚文件中獲取圖片 CreateBitmapFromSkinImage
例:m_hBitMap=CreateBitmapFromSkinImage(_T("listheader.bmp"));
2.7 當一個窗體上同樣的控制項類型同時既有自繪也有載入皮膚的處理方法
在皮膚文件新建一個窗體,名稱比如叫做FrmWnd-D,上面放置皮膚控制項,例如是個Static控制項,叫做Static-D。使用的例子如下: nSkin=SetControlSkin(GetDlgItem(IDC_STATIC_MAIN_TITLE)->m_hWnd,_T("Static-D"),_T("FrmWnd-D"));
nSkin=SetControlSkin(GetDlgItem(IDC_STATIC_SUB_TITLE)->m_hWnd,_T("Static-D"),_T("FrmWnd-D"));
2.8 當自繪控制項與載入皮膚的窗體沖突時的解決方法
解決方法是先對窗體載入皮膚,再建立控制項自繪的功能。
具體的做法是:
1. DoDataExchange取消自繪控制項實例與資源控制項ID的關聯
2. 在SetSingleDialogSkin之後自繪控制項實例採用SubclassDlgItem的方法與資源控制項ID關聯。
例:VERIFY( 1 == SetSingleDialogSkin(this->GetSafeHwnd(), _T("Dialog") ) );
m_list.SubclassDlgItem(IDC_LIST1,this);
⑸ 在Android開發中,如何根據配置文件載入Activity
你需要了解的東西。如果你有過游戲開發經驗,那麼轉移到移動平台上來將不是特別困難。你主要只需學習其架構以及API就行了。如果你是一名游戲開發新手,我總結了一張列表,上面有你必需知道的東西,供你起步用。這些知識適用於很多類型的游戲,包括動作類、策略類、模擬類和益智類。 Android是一個基於java的環境。這對初學者來說是個好消息,因為相對於C++,Java被廣泛認為是一門更容易上手的語言,它是移動開發的規范。Google也做了一件出色的工作,它將API文檔化並提供示例代碼供使用。其中有個叫做API Demos的示例幾乎展示了所有API的功能。如果你熟悉Java並且用過Eclipse,要讓你的第一個應用跑起來那是相當簡單。如果你以前從沒寫過代碼,在你前進路上還要學習很多,但別氣餒。
獲取SDK
新手上路的第一步便是獲取Android SDK(軟體開發工具包)。SDK里有一個核心類庫,一個模擬器,一些工具和示例代碼。我強烈建議使用Eclipse和Android Eclipse插件。如果你玩Android的話,Eclipse IDE對Java開發者來說很好用。如果這是你第一次開發Java項目,你可能會需要下載全套JDK,它裡麵包括簽名和部署你的應用程序的一些工具。
學習應用程序架構
別急著一頭扎進開發的海洋里,理解Android應用程序架構是很重要的。如果你不學一下,你設計出來的游戲在線下將很難調試。你將需要理解Applications、Activities、Intents以及它們怎樣相互聯系。Google提供了很多有用的架構信息。真正重要的是要理解為什麼你的游戲需要多於一個的Activity,以及什麼才是設計一個有良好用戶體驗的游戲。要理解這些,首先要了解什麼是Activity生命周期。
學習Activity生命周期
Activity生命周期由Android操作系統來管理。你的activity創建、恢復、暫停、銷毀都受操作系統的支配。正確處理這些事件是很重要的,這樣應用程序才能表現良好,做用戶認為正確的事。在你設計你的游戲之前了解所有這些是如何工作的是件好事,因為以後你可以為自己節省調試時間和昂貴的重新設計時間。對大多數應用來說,默認的設置將工作正常,但對於游戲,你可能需要考慮將SingleInstance標志打開。當設置為默認時,Android在它認為合適時會創建activity的新實例。對於游戲來說,你可能只需要一個游戲activity的實例。這對於你要怎樣管理事務的狀態有些影響,但對於我來說,這解決了一些資源管理的問題,應予以考慮。
主循環
根據你寫的游戲的類型,你可能需要也可能不需要一個主循環。如果你的游戲不依賴於時間或者它僅僅對用戶所做的加以回應,並且不做任何視覺上的改變,永遠等待著用戶的輸入,那麼你就不需要主循環。如果你寫的是動作類游戲或者帶有動畫、定時器或任何自動操作的游戲,你應該認真考慮下使用主循環。
游戲的主循環以一個特定的順序通常盡可能多的在每秒鍾內「滴答」提醒子系統運行。你的主循環需要在它自己的線程里運行,原因是Android有一個主用戶界面線程,如果你不運行自己的線程,用戶界面線程將會被你的游戲所阻塞,這會導致Android操作系統無法正常的更新任務。執行的順序通常如下:狀態,輸入,人工智慧,物理,動畫,聲音,錄像。
更新狀態意思是管理狀態轉換,例如游戲的結束、人物的選擇或下一個級別。很多時候你需要在某個狀態上等上幾秒鍾,而狀態管理應該處理這種延遲,並且在時間過了之後設置成下一個狀態。
輸入是指用戶按下的任何鍵、對於滾動條的移動或者用戶的觸摸。在處理物理之前處理這些是很重要的,因為很多時候輸入會影響到物理層,因而首先處理輸入將會使游戲的反應更加良好。在Android里,輸入事件從主用戶界面線程而來,因此你必須寫代碼將輸入放入緩沖區,這樣你的主循環可以在需要的時刻就從緩沖區里取到它。這並非難事。首先為下一個用戶輸入定義一個域,然後將onKeyPressed或onTouchEvent函數設為接到一個用戶動作就放到那個域里,有這兩步就夠了。如果對於給定游戲的狀態,這是一個合法的輸入操作,那麼所有輸入需要在那一刻做的更新操作都已經定下來了,剩下來就讓物理去關心怎樣響應輸入吧。
人工智慧所做的類似於用戶在決定下一個要「按」哪個按鈕。學習怎樣寫人工智慧程序超出了這篇文章的范圍,但大體的意思是人工智慧會按照用戶的意圖來按按鈕。這些也有待物理去處理和響應吧。
物理可能是也可能不是真正的物理。對於動作類游戲來說,關鍵點是要考慮到上一次更新的時間、正在更新的當前時間、用戶輸入以及人工智慧,並且決定它們朝著什麼方向發展和是否會發生沖突。對於一個你可視化地抓取一些部件並滑動它們的游戲來說,物理就是這個游戲中滑動部件或者使之放入合適的位置的部分。對於一個小游戲來說,物理即使這個游戲中決定答案是錯還是對的部分。你可能將其命名為其他東西,但每個游戲都有一個作為游戲引擎的紅肉部分(譯者註:可能是主體部分的意思),在這篇文章里,我把這部分稱為物理。
動畫並非像在游戲里放入會動的gif圖片那樣簡單。你需要使得游戲能在恰當的時間畫出每一幀。這並沒有聽起來那麼困難。保留一些像isDancing、danceFrame和lastDanceFrameTime那樣的狀態域,那樣動畫更新便能決定是否可以切換到下一幀去了。動畫更新真正做的事就那麼多。真正來顯示動畫的變化是由錄像更新來處理的。
聲音更新要處理觸發聲音、停止聲音、音量變化以及音調變化。正常情況下當寫游戲的時候,聲音更新會產生一些傳往聲音緩沖區的位元組流,但是Android能夠管理自己的聲音,因而你的選擇將是使用SoundPool或者MediaPlayer。它們都需要小心處理以免出錯,但你要知道,因為一些底層實現細節,小型、低比特率的聲音文件將帶來最佳的性能和穩定性。
錄像更新要考慮游戲的狀態、角色的位置、分數、狀態等等,並將一切畫到屏幕上。如果使用主循環,你可能需要使用SurfaceView,並做一個「推」繪制。對於其他視圖,視圖本身能夠調用繪制操作,主循環不必處理。SurfaceView每秒產生的幀數最多,最適合於一些有動畫或屏幕上有運動部件的游戲。錄像更新所要做的工作是獲取游戲的狀態,並及時地為這個狀態繪制圖像。其他的自動化操作最好由不同的更新任務來處理。
代碼看起來是什麼樣的?這兒有個例子。
1: public void run() {
2: while (isRunning) {
3: while (isPaused && isRunning) {
4: sleep(100);
5: }
6: update();
7: }
8: }
9:
10: private void update() {
11: updateState();
12: updateInput();
13: updateAI();
14: updatePhysics();
15: updateAnimations();
16: updateSound();
17: updateVideo();
18: }
3D還是2D?
在開始寫游戲之前,你要決定是做3D的還是2D的。2D游戲有一個低得多的學習曲線,一般更容易獲得良好的性能。3D游戲需要更深入的數學技能,並且如果你不在意的話會有性能問題產生。如果你打算畫比方框和圓圈更復雜的圖形,還需要會使用3D Studio和Maya那樣的建模工具。Android支持OpenGL用來3D編程,並且在OpenGL方面有很多很好的教程可供學習。
建立簡單、高質量的方法
上手時,要確保你整個游戲不要就用一個龐大而冗長的方法。如果你遵循我上面描述的主循環模式,這將相當簡單。每個你寫的方法應當完成一個非常特定的任務,並且它就應該無差錯地那樣做。舉例來說,如果你需要洗一副紙牌,你應該寫一個「shuffleCards」的方法,並且該方法就應該只做這一件事。
這是一個適用於任何軟體開發的編碼實踐,但對於游戲開發來說這尤為重要。在一個有狀態的、實時的系統里,調試將變得非常困難。使你的方法盡量的小,一般的經驗法則是每個方法有且僅有一個目的(譯者註:完成且僅完成一個功能)。如果你要為一個場景用編程方式畫一個背景,你可能需要一個叫做「drawBackground」的方法。諸如此類的任務能夠很快完成,因而你可以按照搭積木的方法來開發你的游戲,而你能夠繼續添加你要的功能,並且不會使得這一切難以理解。
最重要的是效率!
性能是任何游戲的主要問題。我們的目標是使得游戲的反應越快越好,看起來越流暢越好。某些方法如Canvas.drawLine比較慢。並且要將屏幕大小的點陣圖畫到主畫布上,每一幀都是代價昂貴的。如何權衡對於達到最佳性能很有必要。確保管理好你的資源,使用技巧來以最少量的CPU資源完成你的任務。如果性能不好的話,即使是最好的游戲玩起來也沒勁。人們一般對於游戲卡或者響應慢幾乎難以容忍。
提示和技巧
看一下SDK中的示例LunarLander。它使用SurfaceView,這對於一個每秒需要處理最多幀的游戲來說是合適的。如果你要做3D,示例中有GLView可以處理3D顯示的很多初始化工作。對LightRacer來說,我不得不優化把所有東西都畫出來這種方法,否則幀率將會大大地降低。我只在視圖初始化的時候把背景畫進一個點陣圖里一次。路徑放在它們自己的點陣圖里,隨著車手的前進而更新。這兩個點陣圖在每一幀里都被畫進主畫布中去,車手畫在頂端,到最後會有一個爆炸。這種技術使得游戲運行在一個可以玩的程度。
如果適用的話,使得你的點陣圖的大小精確等於你打算畫到屏幕上的大小,這也是個好的實踐。這么做了以後就需要縮放,可以節省CPU資源。
在游戲中始終一致的點陣圖配置(如RGBA8888)。這將會通過減少不同格式之間轉換的時間來節省圖形庫的CPU時間。
如果你決定開發3D游戲但沒有3D方面的知識,你需要挑選一兩本3D游戲編程方面的書並學習線性代數。你最少要理解點積、叉積、向量、單元向量、法線、矩陣和變換。這方面我遇到的最好的書是叫《3D游戲編程和計算機圖形學數學》。
聲音文件要小而且低比特率。需要載入的越少,載入速度越快,游戲所需內存越少。
聲音使用OGG文件,圖片使用PNG文件。
確保釋放所有媒體播放器,當Activity銷毀時空出所有的資源。這能保證垃圾收集器清除了所有東西,也能保證在兩次游戲開始之間沒有內存泄露。
加入Android谷歌小組,尋求社區支持。這里有人可以在開發過程中給你幫助。
最重要的是,花時間測試再測試,確保每一小部分都如你所願地工作。改善游戲是整個開發中最耗時最困難的部分。如果你匆匆將其推向市場,你很可能會使用戶們失望,你會感到你的努力都白費了。你不可能使所有人都喜歡你寫的東西,但你至少要盡量發布你最高質量的作品。
Google在這里有幫助你上手的絕佳的文檔。
電驢上也有很多不錯的書籍和視頻教程~希望對你有幫助
另外,團IDC網上有許多產品團購,便宜有口碑
⑹ 如何在Android開發中使用自定義的字體庫
1、Android系統默認支持三種字體,分別為:「sans」, 「serif」, 「monospace
2、在Android中可以引入其他字體 。
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:Android="http://schemas.android.com/apk/res/android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" >
<TableRow>
<TextView
Android:layout_marginRight="4px"
Android:text="sans:"
Android:textSize="20sp" >
</TextView>
<!-- 使用默認的sans字體 -->
<TextView
Android:id="@+id/sans"
Android:text="Hello,World"
Android:textSize="20sp"
Android:typeface="sans" >
</TextView>
</TableRow>
<TableRow>
<TextView
Android:layout_marginRight="4px"
Android:text="serif:"
Android:textSize="20sp" >
</TextView>
<!-- 使用默認的serifs字體 -->
<TextView
Android:id="@+id/serif"
Android:text="Hello,World"
Android:textSize="20sp"
Android:typeface="serif" >
</TextView>
</TableRow>
<TableRow>
<TextView
Android:layout_marginRight="4px"
Android:text="monospace:"
Android:textSize="20sp" >
</TextView>
<!-- 使用默認的monospace字體 -->
<TextView
Android:id="@+id/monospace"
Android:text="Hello,World"
Android:textSize="20sp"
Android:typeface="monospace" >
</TextView>
</TableRow>
<!-- 這里沒有設定字體,我們將在Java代碼中設定 -->
<TableRow>
<TextView
Android:layout_marginRight="4px"
Android:text="custom:"
Android:textSize="20sp" >
</TextView>
<TextView
Android:id="@+id/custom"
Android:text="Hello,World"
Android:textSize="20sp" >
</TextView>
</TableRow>
</TableLayout>
// 得到TextView控制項對象
TextView textView = (TextView) findViewById(R.id.custom);
// 將字體文件保存在assets/fonts/目錄下,www.linuxidc.com創建Typeface對象
Typeface typeFace = Typeface.createFromAsset(getAssets(),"fonts/DroidSansThai.ttf");
// 應用字體
textView.setTypeface(typeFace);
如果想對整個界面的所有控制項都應用自定義字體,可以:
package arui.blog.csdn.NET;
import android.app.Activity;
import android.graphics.Typeface;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class FontManager {
public static void changeFonts(ViewGroup root, Activity act) {
Typeface tf = Typeface.createFromAsset(act.getAssets(),
"fonts/xxx.ttf");
for (int i = 0; i < root.getChildCount(); i++) {
View v = root.getChildAt(i);
if (v instanceof TextView) {
((TextView) v).setTypeface(tf);
} else if (v instanceof Button) {
((Button) v).setTypeface(tf);
} else if (v instanceof EditText) {
((EditText) v).setTypeface(tf);
} else if (v instanceof ViewGroup) {
changeFonts((ViewGroup) v, act);
}
}
}
}
⑺ android studio怎麼配置gradle
build.gradle //設置腳本的運行環境 buildscript { //支持java 依賴庫管理(maven/ivy),用於項目的依賴。 repositories { mavenCentral() } //依賴包的定義。支持maven/ivy,遠程,本地庫,也支持單文件 dependencies { classpath 'com.android...
⑻ 求助android監聽事件 實現代碼監聽滑鼠的左鍵,中間鍵,右鍵
左鍵就是onclick,中間是滑動,右鍵是長按的listener,這個思路可以吧
⑼ apk文件蘋果怎麼打開
蘋果手機使用的是ios系統,安裝的軟體後綴為apk,兩者是不能互相打開安裝的,蘋果無法打開apk文件。iOS只能在App Store裡面下載應用。或者是pp助手之類的軟體,不像安卓可以隨便什麼軟體的應用都可以安裝的,因為iOS沒有文件管理器。
APK是Android操作系統使用的一種應用程序包文件格式,用於分發和安裝移動應用及中間件,只適用於Android操作系統,不支持ios系統。
在Android平台中,dalvikvm的執行文件被打包為apk格式,最終運行時載入器會解壓,然後獲取編譯後的androidmanifest.xml文件中的permission分支相關的安全訪問。
但仍然存在很多安全限制,如果你將apk文件傳到/system/app文件夾下,會發現執行是不受限制的。安裝的文件可能不是這個文件夾,而在androidrom中,系統的apk文件默認會放入這個文件夾,它們擁有著root許可權。