Android開發技術點匯總

2022-01-06 威哥愛編程

關注(mjw-java)——不一樣的技術分享,不一樣的學習體驗,跟威哥一起學Java,你一定可以!每天早上六點半,我們不見不散。

威哥推薦:騰訊課堂免費直播課來襲:Android項目實戰課開課,詳情請猛戳【閱讀原文】免費報名。



1.px像素如何轉為dip設備獨立像素

    由於Android的設備解析度眾多,目前主流的為xhdpi,而很多老的設備為hdpi甚至低端的wvga,對於兼容性來說使用dip無非是比較方便的,由於他和解析度無關和屏幕的密度大小有關,所以推薦使用。

2.  Android中動態改變ImageView大小

    在layout.xml文件中定義了ImageView的絕對大小後,無法動態修改以後的大小顯示,其實Android平臺在設計UI控制項時考慮到這個問題,為了適應不同的Drawable可以通過在xml的相關ImageView中加入android:scaleType="fitXY" 這行即可,但因為使用了縮放可能會造成當前UI有所變形。使用的前提是限制ImageView所在的層,可以使用一個內嵌的方法限制顯示。

3.如何判斷Android手機當前是否聯網?

    如果開發一個網絡應用的程序,首先考慮是否接入網絡,在Android手機中判斷是否聯網可以通過 ConnectivityManager 類的isAvailable()方法判斷,首先獲取網絡通訊類的實例 ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);,使用cwjManager.getActiveNetworkInfo().isAvailable();來返回是否有效,如果為True則表示當前Android手機已經聯網,可能是WiFi或GPRS、HSDPA等等,具體的可以通過ConnectivityManager 類的getActiveNetworkInfo() 方法判斷詳細的接入方式,需要注意的是有關調用需要加入<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>這個權限,提醒大家在真機上Market和Browser程序都使用了這個方法,來判斷是否繼續,同時在一些網絡超時的時候也可以檢查下網絡連接是否存在,以免浪費手機上的電力資源。

4. Drawable、Bitmap、Canvas和Paint的關係

        很多開發者剛剛開始學習Android平臺,對於Drawable、Bitmap、Canvas和Paint它們之間的概念不是很清楚,其實它們除了Drawable外早在Sun的J2ME中就已經出現了,但是在Android平臺中,Bitmap、Canvas相關的都有所變化。   首先讓我們理解下Android平臺中的顯示類是View,但是還提供了底層圖形類android.graphics,今天所說的這些均為graphics底層圖形接口。   Bitmap - 稱作位圖,一般位圖的文件格式後綴為bmp,當然編碼器也有很多如RGB565、RGB888。作為一種逐像素的顯示對象執行效率高,但是缺點也很明顯存儲效率低。我們理解為一種存儲對象比較好。   Drawable - 作為Android平下通用的圖形對象,它可以裝載常用格式的圖像,比如GIF、PNG、JPG,當然也支持BMP,當然還提供一些高級的可視化對象,比如漸變、圖形等。   Canvas - 名為畫布,我們可以看作是一種處理過程,使用各種方法來管理Bitmap、GL或者Path路徑,同時它可以配合Matrix矩陣類給圖像做旋轉、縮放等操作,同時Canvas類還提供了裁剪、選取等操作。    Paint - 我們可以把它看做一個畫圖工具,比如畫筆、畫刷。他管理了每個畫圖工具的字體、顏色、樣式。   如果涉及一些Android遊戲開發、顯示特效可以通過這些底層圖形類來高效實現自己的應用。 

5.  Android的ImageButton問題

對Android提供的ImageButton有個疑問,當顯示Drawable圖片時就不會再顯示文字了,其實解決的方法有兩種,第一種就是圖片中就寫入文字,但是這樣解決會增加程序體積,同時硬編碼方式會影響多國語言的發布。第二種解決方法很簡單,通過分析可以看到ImageButton的layout,我們可以直接直接繼承,添加一個TextView,對齊方式為右側即可實現ImageButton支持文字右側顯示。

溫馨提醒:

最後,如果你是一位不能自己自學的初學者,想改變生活的人,我想我可以幫助到你。請在公眾號裡回覆:

QQ:XXXXXX  我要報名

===========END===========

聯繫威哥:

文章投稿:【投稿】+文章標題

建議反饋:【建議】+具體事宜

郵件發送至:finally_m@qq.com

我的微博:http://weibo.com/jianweima

QQ:1791705739

想要在電腦上收藏文章的朋友,可以使用右上角的菜單選擇用瀏覽器打開,然後複製網址發送到電腦QQ就可以啦!

祝您學習愉快

相關焦點

  • Android開發必備的「80」個開源庫
    wiki 周刊https://github.com/bboyfeiyu/android-tech-frontier/wiki值得閱讀的 Android 技術文章https://github.com/bboyfeiyu/Worth-Reading-the-Android-technical-articles整理一些比較好的 Android 開發教程
  • 如何無師自通學習Android開發?
    .app.Fragment還是android.app.Fragmentk.樣式開發這幾個內容可以參考下面幾篇博文:Android樣式的開發:shape篇Android樣式的開發:selector篇Android樣式的開發:layer-list篇
  • Android開發在路上:少去踩坑,多走捷徑
    1.目前, Android APP開發完成後,通常需要在哪些機型上進行測試?2.目前, 開發Android APP時,需要考慮的解析度有哪些?這兩個問題可以合起來回答的。Android 1.5、1.6、2.0、2.1和小屏幕的屬於古董級別的機器,市場存量也很少,新出的機器都是4.0以上的了,所以必要時需要捨棄對古董的支持,因為適配成本很高,對於新開發的應用,這個適配不值得投入。3.目前, 開發Android APP時,適應多個解析度的技術方案有哪些?
  • [乾貨] 【譯】Android 開發規範與應用
    github上萬顆star的21個JAVA(19個Android相關)開發框架,知道多少,用過多少(截止2016年12月17日)2016年未,騰訊,百度,華為,搜狗和滴滴Android面試題匯總翻譯:小池laucherishhttp://futurice.com
  • 一看就懂的Android APP開發入門教程
    工作中有做過手機App項目,前端和android或ios程式設計師配合完成整個項目的開發,開發過程中與ios程序配合基本沒什麼問題,而 android
  • Android Studio 4.1 發布,全方位提升開發體驗
    產品質量仍然是團隊的主要關注點,我們一直在努力解決錯誤和性能問題。從大家的反饋來看,許多開發者十分認同我們專注於提高性能和可靠性的舉措。很高興地告訴大家,在本次發布周期中,我們修復了 2,370 個錯誤,解決了 275 個公共問題。高品質是我們一貫堅持的目標,因為我們知道這是提高開發者工作效率的關鍵。許多用戶在預覽版中提供了早期反饋,在此對大家表示感謝。
  • 開發你的第一個 Android 應用
    這項功能的設計初衷是提高開發效率。代碼修改後,無鬚生成新APK,開發人員就能立即看到變化。不過,很可惜,它的實際表現不及預期,因此建議一開始就徹底禁用這一功能。在歡迎界面的底部,點擊Configure,再選擇Settings,會彈出如圖1-4所示的新項目首選項界面。
  • 一些優秀的 Android 開發專欄推薦
    訂閱本專欄還將可以進入《Android面試指南》作者微信群,和騰訊、微信、阿里巴巴等等技術大牛一起交流,同時在職業成長、求職過程中遇到的問題也可以直接發布到群裡獲取作者們的答疑,另外我們還會邀請小米、360、百度等其他技術大牛進群給大家答疑以及內推。
  • Android應用開發實戰:GPS與加速度傳感器
    【IT168 技術文檔】本文將為讀者詳細介紹Android中增強現實應用程式的兩個關鍵元素:GPS與加速度傳感器。  在前一篇文章《編程實現谷歌Android攝像頭拍照》中,我們介紹了在增強現實技術(AR)引擎中Android SDK的兩種基本構件即攝像頭的用法。
  • 開發總結:Android反編譯方法的總結
    【IT168技術】對於軟體開發人員來說,保護代碼安全也是比較重要的因素之一,不過目前來說Google Android平臺選擇了Java Dalvik VM的方式使其程序很容易破解和被修改,首先APK文件其實就是一個MIME為ZIP的壓縮包,我們修改ZIP後綴名方式可以看到內部的文件結構,類似Sun JavaMe的Jar
  • android 傳統藍牙開發 (附示例源碼)
    傳統藍牙,自己整理了一下思路,然後寫了一個BluetoothStudy小測試程序,來運用所理解的android傳統藍牙開發技術,寫下一些心得和思路,供其他android熱愛者參考,也方便日後回顧。二、開發詳解1、聲明權限,注意可能需要的運行時權限  <uses-permission android:name="android.permission.BLUETOOTH" />
  • 22 個 Android Studio 優秀插件匯總
    AndroidStudio是一個功能齊全的開發工具,還提供了第三方插件的支持。讓開發人員更快速更好的開發程序。Settings → Plugins → Browse repositories and search for 插件名orin Android Studio: go to download it jar and install File → Settings → Plugins → Install plugin from disk第三部分 插件的匯總
  • 經驗丨Android開發最佳實踐
    +'compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.如果那樣的話,你需要使用Gardle和adb命令行。如果使用Eclipse集成Gradle 不適合你,你只是使用命令行構建工程,或遷移到Android Studio中來吧。無論你使用何種開發工具,只要確保Gradle和新的項目結構保持官方的方式構建應用程式,避免你的編輯器配置文件加入到版本控制。例如,避免加入Ant build.xml文件。
  • 【學習經驗】android開發的學習路線
    第三階段:android UI編程1、Android開發環境搭建:Android介紹,Android開發環境搭建,第一個Android應用程式,Android應用程式目錄結構。2、點、線、面等基本圖形元素繪製方法;3、Android動畫框架簡介;4、位移動畫的實現方法;5、淡入淡出動畫的實現方法;6、旋轉動畫的實現方法;7、Matrix的使用方法。
  • 很少有人會告訴你的 Android 開發基本常識 移動開發
    軟體開發流程一個完整的軟體開發流程離不開策劃、交互、視覺、軟體、測試、維護和運營這七個環節,這七個環節並不是孤立的,它們是開發一款成功產品的前提,但每一項也都可以形成一個學科,是一個獨立的崗位,隨著敏捷開發的流行,以及來到了體驗為王的時代,現代軟體開發更多的是注重效率和敏捷,而不是循規蹈矩的遵循這些開發流程,比如軟體開發的崗位不再僅僅是個技術崗位,它需要去參與前期的設計和評審
  • 新課程上線 | 學習使用 Kotlin 進行 Android 開發的最佳時機!
    作者 / Android 開發技術推廣工程師 Kat Kuan如今,越來越多的人希望考慮能夠支持遠程辦公的職業,而從事應用開發或許可以實現
  • 【福利大放送】不止是Android,Github超高影響力開源大放送,學習開發必備教科書
    2、oh-my-zshhttps://github.com/robbyrussell/oh-my-zsh        俗話說,不會用 shell 的程式設計師不是真正的程式設計師,所以建議每個程式設計師都懂點 shell,有用不說,裝逼利器啊!
  • 入門 | 從Android到React Native開發
    當然,React Native的坑也不在少數:總的來說,React Native適合作為項目中的補充,而不是作為核心去開發APP。因為儘管是跨平臺和快捷開發,但是以React Native為核心,去開發稍微偏中型以上的項目,後期維護的人員絕對不比原生的少多少,而且項目大了,體驗依舊是個大問題。
  • android apk 防反編譯技術第一篇-加殼技術
    做android framework方面的工作將近三年的時間了,現在公司讓做一下android apk安全方面的研究,於是最近就在網上找大量的資料來學習。現在將最近學習成果做一下整理總結。學習的這些成果我會做成一個系列慢慢寫出來與大家分享,共同進步。這篇主要講apk的加殼技術,廢話不多說了直接進入正題。一、加殼技術原理 所謂apk的加殼技術和pc exe的加殼原理一樣,就是在程序的外面再包裹上另外一段代碼,保護裡面的代碼不被非法修改或反編譯,在程序運行的時候優先取得程序的控制權做一些我們自己想做的工作。
  • Android開發技巧之xml tools屬性詳解
    是不是很麻煩,那我們有沒有更簡單點的方案呢?針對上述的問題,Google 官方其實早就考慮到了,因此在開發工具中提供了 tools 命名空間的支持。在布局 XML 文件中使用 tools: 命名空間添加的屬性,在項目構建成 過程中,tools 屬性會被構建工具自動移除,最終不會對構建程序產生任何的影響。