原创 Crosswalk集成到Android Studio,替代原生WebView遇到的問題

Crosswalk集成到Android Studio,替代原生WebView遇到的問題 前言: 最近項目中很多地方用到h5頁面,使用Android原生WebView進行展示時,版本低的機型無法顯示頁面。遂想到是不是有可以替換的框架

原创 Android10適配-作用域存儲

背景介紹 android 10已經推出來一段時間了,因爲用戶反饋,公司的demo在android10手機上有問題,適配的問題便被提上了日程。首先先給出官方文檔的地址:外部存儲訪問權限範圍限定爲應用文件和媒體 。 本文章主要參考OP

原创 TextView首行縮進

方法一: setText("\u3000\u3000"+xxxxx); 半角:\u0020 全角:\u3000 方法二: 這種方式不同分辨率會有問題 setText(""+xxxxx); 方法三: 是從網上大神看到的,就

原创 Android10適配-針對從後臺啓動 Activity 的限制

Android 10 中的隱私權變更 從 Android 10 開始,系統會增加針對從後臺啓動 Activity 的限制。此項行爲變更有助於最大限度地減少對用戶造成的中斷,並且可以讓用戶更好地控制其屏幕上顯示的內容。只要您的應用

原创 Android10適配-限制對屏幕內容的訪問

AndroidQ版本官方限制了對屏幕內容的訪問。 爲了保護用戶的屏幕內容,Android 10 更改了 READ_FRAME_BUFFER、CAPTURE_VIDEO_OUTPUT 和 CAPTURE_SECURE_VIDEO_

原创 手把手帶你快速實現直播聊天室

廢話不多說,直接開幹! 工具要求: (1) Android Studio 3.2或更高版本。 (2) SDK targetVersion至少爲26。 本文聊天室是集成環信IM SDK實現聊天功能,及實現發送禮物、點贊和彈幕等功能。

原创 Android10適配-存儲適配

Android11預覽版出來了,android10適配再不進行就晚了。 Android 11 開發者預覽版使用入門 備註:本文章主要摘自OPPO對AndroidQ的適配指導,並結合華爲對AndroidQ的適配指導,並參考官方文檔和

原创 TextView中動態顯示某些值

TextView中動態顯示某些值 前言:在某些場景下我們希望TextView通過引用string中的資源,但是某些值,如金額,性別等是隨着場景的變化而變化的。在這種情況下,你就需要用到佔位符%1$s,%1$d了。下文是轉載“弘文館

原创 TextView用法總結

TextView是Android中使用頻率最高的控件,本文旨在總結平時用到的TextView的一些用法,及從網上看到的平時不常用的用法。本文主要會是一些博文鏈接。 一、屬性用法 1、drawable屬性 TextView的draw

原创 TextView的drawable屬性

TextView的drawable屬性 給TextView及其子類添加圖片,常用的有如下兩種方法 1、通過xml設置 <TextView android:layout_width="wrap_content

原创 Glide一些用法總結

Glide一些用法總結 Glide做爲常用的圖片加載第三方框架,在項目中經常用到,關於Glide的一些用法做一下記錄。 一、獲取加載後的圖片緩存地址 new Thread(new Runnable() {

原创 Android中OnActivityResult()不被Fragment調用的解決辦法及源碼分析

前言 在項目用到Fragment嵌套Fragment的結構,出現子Fragment的OnActivityResult()不被回調的問題,參考鴻軍大神的解決方案得以解決。後來由於項目需要對SDK版本進行升級,發現23版本以後,這個問

原创 OkHttp全局刷新token

OkHttp全局刷新token 前言:公司項目採用token驗證,要求token失效後,能夠自動刷新,並且如果有其他網絡請求,能夠用這個刷新後的token繼續請求數據。 知識介紹:token分爲access_token和refr

原创 約束佈局ConstraintLayout是一個好佈局

最近在項目中使用了一下ConstrantLayout,發覺這個佈局還是十分好用的! 簡單的說,可以實現以下定位:相對定位,角度定位,居中定位,鏈。在應對相對複雜的佈局時就可以直接摒棄RelativeLayout和LinearLay

原创 Kotlin使用高階函數實現多方法回調

最近項目中開始使用kotlin,遇到的一個問題就是從多方法回調的問題 常規的java回調如下: public interface OnCallBack<T> { void onSuccess(T models);