搜尋
首頁Javajava教程Android 開發中一些很有用但你不知道的方法

setBackgroundResource(0) 可以移除View 的背景色

Resources.getSystem().getDisplayMetrics().density 可以不用Context 也能取得螢幕密度哦

透過重載的新蒙版效果可以實現一個簡單的遮罩效果。 例如下拉刷新時,可以在 contentView 上加一層遮罩。 canvas.drawRect(0, mContentView.getTranslationY(), getWidth(), getHeight(), mMaskPaint);

new 出來的View 可以用View.generateViewId() (API 17 以上可用) 產生id,系統保證唯一可用

使用GridView時android:padding 和android:clipToPadding="false" 搭配使用效果更好哦。

在版面配置檔中,如果只是為了佔位,可以用 Space 來取代 View。 最棒的一點是Space可以跳過 Draw 這個過程。

TypedValue.applyDimension(int unit, float value, DisplayMetrics metrics) 方便dp, px, sp 之間的轉換。

Activity.startActivities() 這個方法最直接的理解就是使用intent開啟多個Activity

TextUtils.isEmpty() 如果傳入的String 為NULL或Length為0的話就回傳 true。

Html.fromHtml() 如果你對Html熟悉的話,可以很迅速地透過這個方法處理一些富文本操作。例如超連結和圖文排版等處理。

TextView.setError() 設定文字方塊錯誤提醒

Build.VERSION_CODES 有些時候我們的app需要根據不同的SDK版本進行執行不同的操作

PhoneNumberUtils.convertKeypadLettersToDigits 這個字母會用鍵盤輸入的字,ToDigits上的映射轉換為數字。

ArgbEvaluator ArgbEvaluator.evaluate(float fraction, Object startValue, Object endValue);根據一個起始顏色值和一個結束顏色值以及一個偏移量產生一個新的顏色,分分鐘實現類似於微信底部欄滑動顏色漸變。

ValueAnimator.reverse() 順暢的取消動畫效果

DateUtils.formatDateTime()) 這個方法可以輸出對應格式化的時間或日期

Pair 這個類別 可以用來儲存一」組」資料。但不是key和value的關係。

SparseArray 目前有很多地方從效能最佳化方說使用SparseArray來替換hashMap,來節省內存,提高效能。

Linkify.addLinks() 這個類別可以更方便的為文字添加超連結。

android.media.ThumbnailUtils這個類別主要是用來處理縮圖相關的工作,例如:用來獲取媒體(圖片、視頻)的縮圖;

Bitmap.extractAlpha ();返回一個新的Bitmap,capture原始圖片的alpha值。有的時候我們需要動態的修改一個元素的背景圖片又不希望使用多張圖片的時候,透過這個方法,結合Canvas和Paint可以動態的修改一個純色Bitmap的顏色。

模組間有訊息需要傳遞時,使用LocalBroadcastManager取代Listener進行模組解耦。除了解耦,這樣發送訊息和執行訊息差一個線程循環,可以減少方法的呼叫鏈,我這就碰到一次方法呼叫鏈太長導致StackOverflow的問題。

靜態變數不要直接或間接引用Activity、Service等。這會使用Activity以及它所引用的所有物件無法釋放,然後,使用者操作時間一長,記憶體就會狂升。

Handler機制有一個特點是不會隨著Activity、Service的生命週期結束而結束。也就是說,如果你Post了一個Delay的Runnable,然後在Runnable執行之前退出了Activity,Runnable到時間之後還是要執行的。如果Runnable裡麵包含更新View的操作,程式崩潰了。

不少人在子執行緒中更新View時喜歡使用Context.runOnUiThread,這個方法有個缺點,就是一但Context生命週期結束,例如Activity已經銷毀時,一呼叫就會崩潰。

SharedPreferences.Editor.commit這個方法是同步的,一直到把資料同步到Flash上​​面之後才會返回,由IO操作的不可控,盡量使用apply方法代替。 apply只在API Level>=9才會支持,需要做相容。不過,最新的 support v4 包已經為我們做好了處理,使用 SharedPreferencesCompat.EditorCompat.getInstance().apply(editor) 即可。

PackageManager.getInstalledPackages這個方法經常使用,你可能不知道,當獲取的結果數量比較多​​的時候,在某些機型上面調用它花費的時間可能秒級的,所以盡量在子線程中使用。另外,如果結果太多,超過系統設定的Binder資料最大傳輸量的上限,則會發生TransactionException,如果你使用這個方法取得機器上的己安裝應用程式列表,最好做一下預防。 🎜🎜如果使用Context.startActivity啟動外部應用,最好做一下異常預防,因為尋找不到對應的應用時,會拋出異常。如果你要打開的是應用程式內的Activity,不防使用顯式Intent,這樣能提高系統搜尋目標Activity的效率。 🎜

Application的生命週期就是進程的生命週期。只有進程被幹掉時,Application才會銷毀。即使沒有Activity、Service在運行,Application也會存在。所以,為了減少記憶體壓力,盡量不要在Application裡面引用大物件、Context等。

getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);設定全螢幕方法一定要在setContentView之後

viewpager 的setCaprentItem.是不是飛行模式boolean isEnabled = Settings.System.getInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0) == 1;

遍歷HashMap的最佳方法

public static void printMap(Map mp) {   
 for (Map.Entry m : mp.entrySet()) {  

       System.out.println(m.getKey() + ":" + m.getValue());   }
}

public static int randInt(int min, int max) { 
   Random rand = new Random();   
   int randomNum = rand.nextInt((max - min) + 1) + min;    
   return randomNum;
}

在一個

遍歷HashMap的最佳方法

rrreee

整數數

rrreee

如果子類別實作Serializable介面而父類別未實作時,父類別不會被序列化,但此時父類別必須有個無參構造方法,否則會拋InvalidClassException異常。

transient關鍵字修飾變數可以限制序列化。

當使用JakeWharton的TabPageIndicator時,如果需要先做一些耗時的操作,然後再展示TabPageIndicator的話,需要先設定mIndirector.setVisibility(View.GONE);然後耗時任務結束以後再mIndirector.setVisibility(View. VISIBLE);否則會報錯

類繼承之間的呼叫順序父類static成員-> 子類static成員-> 父類普通成員初始化和初始化塊-> 父類構造方法-> 子類普通成員初始化和初始化區塊-> 子類別建構方法

華為手機無法顯示log解決方案,.撥號介面輸入(*#*#2846579#*#*) Service menu will appear.Go to "ProjectMenu" -> "Background Setting" -> "Log Setting"Open "Log switch" and set it to ON.Open "Log level setting" and set the log level you wish.

後台service經常因為重啟之類的出現onStartCommand()中的Intent傳遞的參數為null, 透過在onStartCommand()中的回傳值改為return super.onStartCommand(intent, Service.START_REDELIVER_INTENT, startId); 可以解決問題。以下介紹幾個flag的意思Android 开发中一些很有用但你不知道的方法

不能在Activity沒有完全顯示時顯示PopupWindow和Dialog

在多進程之間不要用SharedPreferences共享數據,雖然可以(MODE_MULTI_PROCESS),但極不穩定更多

🎜🎜 Android 開發中一些很有用但你不知道的方法相關文章請關注PHP中文網! 🎜
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
說明JVM如何充當Java代碼和基礎操作系統之間的中介。說明JVM如何充當Java代碼和基礎操作系統之間的中介。Apr 29, 2025 am 12:23 AM

JVM的工作原理是將Java代碼轉換為機器碼並管理資源。 1)類加載:加載.class文件到內存。 2)運行時數據區:管理內存區域。 3)執行引擎:解釋或編譯執行字節碼。 4)本地方法接口:通過JNI與操作系統交互。

解釋Java虛擬機(JVM)在Java平台獨立性中的作用。解釋Java虛擬機(JVM)在Java平台獨立性中的作用。Apr 29, 2025 am 12:21 AM

JVM使Java實現跨平台運行。 1)JVM加載、驗證和執行字節碼。 2)JVM的工作包括類加載、字節碼驗證、解釋執行和內存管理。 3)JVM支持高級功能如動態類加載和反射。

您將採取哪些步驟來確保Java應用程序在不同的操作系統上正確運行?您將採取哪些步驟來確保Java應用程序在不同的操作系統上正確運行?Apr 29, 2025 am 12:11 AM

Java應用可通過以下步驟在不同操作系統上運行:1)使用File或Paths類處理文件路徑;2)通過System.getenv()設置和獲取環境變量;3)利用Maven或Gradle管理依賴並測試。 Java的跨平台能力依賴於JVM的抽象層,但仍需手動處理某些操作系統特定的功能。

Java是否需要特定於平台的配置或調整區域?Java是否需要特定於平台的配置或調整區域?Apr 29, 2025 am 12:11 AM

Java在不同平台上需要進行特定配置和調優。 1)調整JVM參數,如-Xms和-Xmx設置堆大小。 2)選擇合適的垃圾回收策略,如ParallelGC或G1GC。 3)配置Native庫以適應不同平台,這些措施能讓Java應用在各種環境中發揮最佳性能。

哪些工具或庫可以幫助您解決Java開發中特定於平台的挑戰?哪些工具或庫可以幫助您解決Java開發中特定於平台的挑戰?Apr 29, 2025 am 12:01 AM

Osgi,Apachecommonslang,JNA和JvMoptionsareeForhandlingForhandlingPlatform-specificchallengesinjava.1)osgimanagesdeppedendendencenciesandisolatescomponents.2)apachecommonslangprovidesitorityfunctions.3)

JVM如何在不同平台上管理垃圾收集?JVM如何在不同平台上管理垃圾收集?Apr 28, 2025 am 12:23 AM

JVMmanagesgarbagecollectionacrossplatformseffectivelybyusingagenerationalapproachandadaptingtoOSandhardwaredifferences.ItemploysvariouscollectorslikeSerial,Parallel,CMS,andG1,eachsuitedfordifferentscenarios.Performancecanbetunedwithflagslike-XX:NewRa

為什麼Java代碼可以在不同的操作系統上運行,而無需修改?為什麼Java代碼可以在不同的操作系統上運行,而無需修改?Apr 28, 2025 am 12:14 AM

Java代碼可以在不同操作系統上無需修改即可運行,這是因為Java的“一次編寫,到處運行”哲學,由Java虛擬機(JVM)實現。 JVM作為編譯後的Java字節碼與操作系統之間的中介,將字節碼翻譯成特定機器指令,確保程序在任何安裝了JVM的平台上都能獨立運行。

描述編譯和執行Java程序的過程,突出平台獨立性。描述編譯和執行Java程序的過程,突出平台獨立性。Apr 28, 2025 am 12:08 AM

Java程序的編譯和執行通過字節碼和JVM實現平台獨立性。 1)編寫Java源碼並編譯成字節碼。 2)使用JVM在任何平台上執行字節碼,確保代碼的跨平台運行。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具