原创 Android以最省內存的方式讀取本地資源的方法

方法一: /** * 獲取本地圖片並指定高度和寬度 */ public static Bitmap getNativeImage(String im

原创 Android Activity四種啓動模式比較:standard,singleTop,singleTask,singleInstance

在Android中,Activity有4種啓動模式,可以通過在註冊文件中對Activity增加LanchMode設置該屬性.下面說說這4個啓動模式的區別. 首先,standard模式最簡單,系統默認的就是該模式.這種模式情況下,我們調用一

原创 android 創建型設計模式之單例模式

單例模式應該是Android開發中常見的一種設計模式。它的特點就是進程中只有一個實例。當我們的進程只需要類的一個對象的時候,我們就可以使用這種模式。它的好處就是避免頻繁的創建和銷燬這個類。比如數據庫操作。 單例模式的特點: 全局只有一個實

原创 android 創建型設計模式之建造者模式(Builder模式)

建造者模式是通過多個簡單的對象一步步構建出一個複雜對象。將類的構建與其表示分離。同樣的創建過程,可以創建不同的表示的對象。比如Android的AlertDialog的構建,Retrofit的構建等,就是構建者模式。 它的使用場景: 類的內

原创 android 創建型設計模式之原型模式

android原型模式是通過實現Cloneable接口,並重寫clone方法。實現快速根據原型創建出另一個對象。 我們知道,在java中如果將對象作爲參數傳遞給一個方法的時候,傳遞的是一種淺拷貝(String類除外)。就是所謂的引用傳遞。

原创 android設計模式

1、開閉原則(Open Close Principle) 開閉原則的意思是:對擴展開放,對修改關閉。在程序需要進行拓展的時候,不能去修改原有的代碼,實現一個熱插拔的效果。簡言之,是爲了使程序的擴展性好,易於維護和升級。想要達到這樣的效果,

原创 Android動態換膚-支持DataBinding版本

一般動態換膚的框架,網上都有很多。其核心的方法都是實現LayoutInflater.Factory2類,在onCreateView方法中實現創建view並使用皮膚包的資源。大體代碼如下: import android.content.C

原创 Android 將View轉化爲Bitmap,getDrawingCache爲空解決辦法

view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0,MeasureSpec.UNSPEC

原创 最簡便的在Activity中獲取View的寬度或高度方法

mView.post(new Runnable() { @Override public void run() { mView.getMeasuredH

原创 libx265的Android編譯

x265目前在Android手機上如果用來編碼的話,編譯速度很慢,而且極度消耗cpu,目前在移動端的實用性不大。首先需要使用ndk做一個交叉編譯工具鏈出來:進入ndk的/build/tools/目錄,然後使用命令:./make-stand

原创 Android getX()與getRawX()備忘錄

Android中的MotionEvent事件中,得到座標有兩個方法,分別是getX和getRawX。其中getX得到的座標是以本View的左上角爲原點得到的座標。而getRawX則是以設備屏幕的左上角爲原

原创 解決Android EditText多行輸入,內容或邊框顯示的問題

在Android中,如下面局:<LinearLayout android:layout_width="match_parent"

原创 在Ubuntu編譯Android版本的FFMPEG

編譯成多個so文件的腳本:cd ffmpeg-3.4.1 make clean export NDK=/home/zxb/ext/lost+found/android-ndk-r11c export PREBUILT=$NDK/t

原创 Gson利用泛型將Http請求返回的Json字符串快速解析模板

第一種:返回類型爲單個JsonObject形式:<pre name="code" class="java">import java.io.Serializable; import java.lang.reflect.Parameteriz

原创 自定ViewGroup的onDraw()沒有執行原因

需要在構造方法中加上 setWillNotDraw(false);