原创 sublime text3配置node.js環境

參考博客:https://www.cnblogs.com/lwx521/p/6835575.html 安裝nodejs,參考:https://www.runoob.com/nodejs/nodejs-http-server.h

原创 getPath(),getAbsolutePath(),getCanonicalPath() 區別

getPath:返回我們構造File的時候填充的路徑參數:eg:..\test.txt public String getPath() {return path;} getAbsolutePath:返回絕對路徑,路徑中如果包含.

原创 ContentProvider 原理和應用

參考博客:Android:關於ContentProvider的知識都在這裏了!,很好很詳細的一篇文章,一看就懂

原创 Android內存泄露之非靜態內部類|匿名內部類

原文:https://blog.csdn.net/u012982629/article/details/82770282 知識點: 非靜態內部類|匿名內部類 默認持有外部類的引用 什麼是內存泄露? Java使用有向圖機制,通過

原创 FileProvider的原理和使用

爲什麼需要使用FileProvider ? 爲了提高私有目錄的安全性,防止應用信息的泄漏,從 Android 7.0 開始,應用私有目錄的訪問權限被做限制。具體表現爲,開發人員不能夠再簡單地通過 file:// URI 訪問其他

原创 android訪問相冊、拍照

在訪問相冊的時候由於是跨進程訪問相冊資源,所以必須具備ContentProvider的基本知識,使用相機的時候需要指定照片存儲位置,需要具備FileProvider的原理和使用 由於訪問相冊和使用相機,所以我們需要動態申請權限。使

原创 android 窗口圓角

網上關於此類的話題很多,特別是Dialog顯示圓角問題。下面首先給出兩個結論: 1.所有的View都是矩形的,即使設置了圓角依舊顯示矩形(window非透明背景便於用戶觀察) 2.圓角是針對Window的,並非View 3.圓角實

原创 獲取當前網卡的ip,mac等基本信息

在多網卡環境下,我們怎麼來獲取自己當前使用的網卡信息了? 通過判斷網關,因爲多網卡一次也只能一個網卡上網,能上網的網卡肯定存在網關 bool GetIPAndGateWay(std::string& strIp, std::str

原创 LayoutInflater原理分析

LayoutInflater主要是用於加載佈局的,包括Activity中調用setContentView()內部也是通過LayoutInflater方法實現的。獲取LayoutInflater常用的基本方法: LayoutInfl

原创 SharedPreferences 存儲數據

Sharedpreference是一個輕量級的以kv形式存儲的數據結構。存儲文件以xml的形式存在,位置位於安裝目錄/shared_prefs/。 1.獲取默認的Sharedpreference 在android 29 之前我們可

原创 DialogPreference 踩坑詳解

在學習這個之前,首先我們應該搞懂什麼是Preferences以及AlertDialog的詳細使用。懂的了這些之後我們在看看什麼是DialogPreference ,以及和他相關的ListPreference,MultiSelect

原创 Glide 4.x 使ImageView自適應顯示

對與ImageView的scaleType 非Matrix的居中顯示就不講解了,因爲很簡單。這裏主要實現android:scaleType="matrix"樣式的自適應。 原理:先獲取原畫的大小,然後獲取當前Image的佈局尺寸(

原创 ImageView 實現縮放,平移,Fling

Imageview自適應顯示圖片(不管任何圖片任何尺寸都自適應View大小顯示) 主要使用了一下知識點: Matrix:矩陣變換(縮放,平移) ScaleGestureDetector:縮放手勢檢測 GestureDetector

原创 android8.0以上自動更新apk未彈出安裝界面的解決辦法

1.爲什麼沒有彈出安裝界面? android8.0添加了新的安全措施,不允許應用內安裝未經過Google play驗證的應用 所以在自動更新之前我們應該判斷一下是否擁有安裝未知應用的權限 清單文件中添加權限 <uses-p

原创 獲取應用程序版本 version

需要包含:Version.lib std::string GetFileVersionTS() { static std::string asVer = ""; if (asVer != "") return asVer;