- 博客(63)
- 资源 (1)
- 收藏
- 关注
原创 无侵入式获取全局Context
本文参考自code小生博客当我们在使用第三方库,或者自己封装库,如果需要需要用到Context时,一般做法就是将初始化方法暴露给调用方,让调用方在初始化类库时,传入Context。publi class App extends Application { /** * 是否是Debug环境 */ public static final boolean ...
2019-11-29 14:47:32
740
1
原创 平时零散琐碎总结
1.Glide.with(context).load("图片url").into(imageView)但是大家谁知道这个里面有性能上面的坑啊?如果我们不能体系的去掌握activity,fragment,application的生命周期,而且也不了解glide源码,因而我们可能是直接在context的地方传this,或者,直接给application的context,那么此时Glide的生命周期...
2019-11-05 09:06:59
260
原创 应用启动速度优化
应用启动速度优化一般可以有以下几种方式:启动页优化 第三方库懒加载 MultiDex优化: 介绍了两种方式,一种是直接在闪屏页开个子线程去加载dex,难维护,不推荐;一种是今日头条的方案,在单独一个进程加载dex,加载完主进程再继续。 webview优化 线程优化 快速启动Activity的方式:预创建Activity,预加载数据。1.启动页优化 消除启动时的...
2019-10-10 14:43:22
584
原创 加载Bitmap相关
在实际开发中,考虑到应用是在有限的内存下工作的,理想情况是我们只需要在内存中加载一个低分辨率的照片即可。为了更便于显示,这个低分辨率的照片应该是与其对应的UI控件大小相匹配的。加载一个超过屏幕分辨率的高分辨率照片不仅没有任何显而易见的好处,还会占用宝贵的内存资源,另外在快速滑动图片时容易产生额外的效率问题。所以我们一般会通过加载经过等比例缩放的图片,从而避免超出程序的内存限制。 B...
2019-07-10 16:46:38
192
原创 react-native安装与环境配置(基于AndroidStudio)
本文参考自天锁卍斩月的博客,博客地址为:https://blog.csdn.net/u013937668/article/details/78235072一.安装java环境先去官网下载最近java 8版本,并进行安装,注意:java 8之前的版本是不支持react native的,必须使用java 8,下载链接接:java jdk,下载完成之后进行环境变量配置,可以参考此链接进行配...
2019-06-24 15:18:34
9993
1
原创 扩展点击区域的范围
有时按钮控件的范围太小,导致操作体验很差,需要扩大点击区域范围:/** * 扩展点击区域的范围 * * @param view 需要扩展的元素,此元素必需要有父级元素 * @param expendSize 需要扩展的尺寸(以sp为单位的) */public static void expendTouchArea(final View view, final int ...
2019-05-15 11:19:05
1103
原创 EditText过滤emoji表情
最近在项目中遇到一个输入法自带emoji表情无法上传的问题,想到采用禁止输入emoji的办法(其实后台数据库添加emoji表情符是更好的做法,当然有些输入框确实不需要emoji表情),代码实现:public class TextChangeListener implements TextWatcher { private Context mContext; ...
2019-04-11 15:33:52
994
2
原创 Android关于调节系统字体大小引起的适配问题
有时用户在使用APP时,会调节系统的字体大小,如果我们的应用APP没有做相关处理,会造成UI界面的错乱,处理办法有两种,我们先来看下Android中有关sp的描述:Scale-independent Pixels – This is like the dp unit, but it is also scaled by the user’s font size preference. It ...
2019-04-04 14:51:18
2359
原创 Android 1.5 到 10.0 新特性
Android 1.5(Cupcake纸杯蛋糕): 智能虚拟键盘;使用widgets实现桌面个性化;在线文件夹(Live Folder)快速浏览在线数据;视频录制和分享;图片上传; 更快的标准兼容浏览器;Voice search 语音搜索;立体声蓝牙和免提电话 Android 1.6(Donut甜甜圈): 完全重新设计的Android Market,可以显示更多的屏幕截...
2019-03-14 11:29:59
1105
原创 防止按钮重复点击
App中,有很大一部分场景是点击按钮,向服务端提交数据,由于网络请求需要时间,用户很可能会多次点击,造成数据重复提交,造成各种莫名其妙的问题。因此,防止按钮多次点击,是Android开发中一个很重要的技术手段。下面介绍两种解决方式: 1.每个按钮点击事件中,记录点击时间,判断是否超过点击时间间隔private long mLastClickTime = 0;public ...
2019-02-20 09:28:43
1451
原创 全局监测网络变化并提示
APP开发中,网络已成为一款应用的必须的,有时需求需要随时监测网络变化,实现起来其实很简单:1.创建广播接受者public class NetWorkChangeReceiver extends BroadcastReceiver { public NetWorkChangeReceiver() { super(); } @Override ...
2019-01-04 15:58:23
448
原创 WebView中Http和Https加载问题
比如https页面加载http图片或者http页面加载https图片时图片显示不出来,原因是因为在Android 5.0开始WebView默认不允许加载http与https混合页面,解决办法://https与http混合资源处理if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { webSettings....
2018-12-21 10:06:00
1443
原创 Android图片选择与上传(ImagePicker)
1.用法使用前,对于Android Studio的用户,可以选择添加:compile 'com.lzy.widget:imagepicker:0.6.1' //指定版本2.具体使用 1.首先你需要继承 com.lzy.imagepicker.loader.ImageLoader 这个接口,实现其中的方法,比如以下代码是使用Glide第三方加载库实现的public cla...
2018-11-26 14:28:48
4503
6
原创 webView中点击图片能够加载
在一次开发中,产品突然说了一句能不能实现点击咋们的网页中的图片,能够单独显示,当时也是一脸懵逼,之后想了想,其实也就是响应webview中的图片事件而已,实现起来也不是很难。实现思路: 使用WebView的js注入,为HTML加入js函数监听 在Android中添加当触发HTMl中js方法的接口 具体步骤如下:1. mWebView = (WebView) fi...
2018-10-18 13:53:59
267
原创 Android打release包时按Home键,再按桌面icon时出现app重新启动的问题
在项目开发中遇到了按Home键,再按桌面icon时出现app重新启动的问题,这个时候我们将启动的那个activity(一般为广告页面GuideActivity)的启动模式android:launchMode="singleTask"去掉即可,但是有些APP很奇怪,debug版本没问题,但是当我们打release包时就出现上述问题啦,开始发现这个问题,我以为是app被系统kill了,但是经过我多次调...
2018-09-28 16:19:53
1344
3
原创 Android 界面过度绘制优化
过度绘制(Overdraw)的概念过度绘制(Overdraw)描述的是屏幕上的某个像素在同一帧的时间内被绘制了多次。在多层次重叠的 UI 结构里面,如果不可见的 UI 也在做绘制的操作,会导致某些像素区域被绘制了多次,同时也会浪费大量的 CPU 以及 GPU 资源。 在 Android 手机的开发者选项中,有一个『调试 GPU 过度绘制』的选项,该选项开启之后,手机显示如下,显示出...
2018-09-07 10:34:33
2461
原创 adb无线连接(无需root,借助USB线)
详细adb命令可参考:https://github.com/mzlogin/awesome-adb无线连接(需要借助 USB 线)除了可以通过 USB 连接设备与电脑来使用 adb,也可以通过无线连接——虽然连接过程中也有需要使用 USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱 USB 连接线的限制啦!操作步骤: 将 Android 设备与要运行 adb 的电脑连...
2018-08-28 09:42:38
7502
原创 ShareSDK各社交平台申请APPkey 的网址及申请流程汇总
ShareSDK各社交平台申请APPkey 的网址及申请流程汇总友盟SDK下载地址:https://developer.umeng.com/sdk下图列表出自:http://bbs.mob.com/thread-275-1-1.html平台 开放平台地址 APPkey 申请流程 新浪微博 http://open.weibo.com http://bbs...
2018-08-14 09:41:25
1497
原创 使用SharedPreference存储对象集合
开发中有时需要存储对象集合,使用数据库又大材小用啦,所以这个时候可以使用SharedPreference,下面就是为了以后使用方便封装的工具类:public class ListDataSaveUtil { private static final String DEFAULT_SP_NAME = "default_sp"; private static final Str...
2018-08-09 19:24:49
809
原创 手机短信验证码---倒计时
一款APP在注册和忘记密码界面都有手机号发送验证码验证功能,下面封装一个工具类可直接使用:public class SmsHelp { public SmsHelp(Context context, Button button) { this.mContext = context; this.mButton = button; } pri...
2018-07-09 14:18:25
285
原创 解决依赖库版本不一致导致的问题
我们在写代码时候总会借鉴一些第三方库,有的是别人写的比较优秀的,有的则是google官方提供的,但是我们在依赖之后编译运行时候总会出各种各样的问题:1、Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.> java.lang.RuntimeException:...
2018-07-03 14:55:30
6324
原创 实现Android应用图标的上的数字角标
在做一些推送服务的时候,想在应用图标上添加未读消息,Android桌面角标的适配确实是非常坑爹的需求。原生系统根本就没有这个功能,国内很多厂家效仿ios都自己定义了该功能。现在就为大家介绍部分机型添加角标的代码。1、华为手机上显示角标:(已通过)//添加权限<uses-permission android:name="com.huawei.android.launcher.permissi...
2018-06-25 10:00:06
8101
1
原创 ScrollView嵌套RecyclerView,RecyclerView总是把它上面的控件顶出页面
项目中经常有在ScrollView嵌套RecyclerView的需求,但是再开发时,遇到了RecyclerView总是把它上面的控件顶出页面的问题,开始的时候没找到原因,还想进去的时候通过handler的形式把scrollview滚动到最上面就算了。后来在网上找到了这个一行代码就搞定的方法,ScrollView嵌套RecyclerView,当我离开当前页面,然后又回...
2018-06-05 09:19:32
330
原创 WebviewSetUtil工具类
public class WebviewSetUtil { private WebView webview; private ProgressBar progressBar; private JSObject jsobject; public WebviewSetUtil(WebView webView, ProgressBar progressBar){ ...
2018-05-23 17:29:27
424
转载 使用Androidstudio发布正式(release)版本(完整版)
本文转载自https://blog.csdn.net/to_perfect/article/details/69048419一、前提发布release 版本,首先,的需要保证当前的app没有bug、可以正式发布了,嘿嘿,就是这样~~二、准备jks.jks即密钥库,是一种包含一个或多个私钥的二进制文件,只要记住,他就相当于人的指纹一样重要就行了。切记!必须在应用的整个生命周期内使用相同的证书,以便用...
2018-04-26 14:56:30
5570
1
原创 Android 6.0+动态权限申请(优雅封装,直接使用)
Android 6.0+需要申请的权限Android 6.0 之前我们申请权限直接在配置文件中配置一下即可,但是6.0之后,谷歌官方将权限分为普通权限和危险权限。对于危险权限来说,我们就需要进行动态设置了。本文主要讲解为什么要进行Android 6.0 动态权限的设置、动态权限的使用、以及一个页面中需要同时申请多个危险权限的情况。非常感谢鸿神大牛(MPermissions)的对动态权限使用的封装,...
2018-04-08 17:14:39
2072
原创 Android设计模式-单例模式
单例模式可以分为懒汉式和饿汉式: 懒汉式单例模式:在类加载时不初始化。 饿汉式单例模式:在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快。介绍意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁。何时使用:当您想控制实例数目,节省系统资源的时候。如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。关键代码:构造...
2018-04-02 16:30:11
206
原创 Android设计模式-观察者模式
观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监听一个主题对象。这样一来,当被观察者状态发生改变时,需要通知相应的观察者,使这些观察者对象能够自动更新。主题主题是观察者观察的对象,一个主题必须具备下面三个特征。持有监听的观察者的引用支持增加和删除观察者主题状态改变,通知观察者观察者当主题发生变化,收到通知进行具体的处理是观察者必须具备的特征。为什么要用这种模式这里举一个例子来说明,牛...
2018-03-29 10:51:06
227
原创 Android工具类-app版本工具
import android.content.Context;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;/** * 基本功能:app版本工具 */public class VersionUtil { /** * 获取版本号 * *
2018-03-28 08:53:56
554
原创 Android工具类-类型转换工具
/** * 基本功能:类型转换工具 */public class TypeConvertUtil { public static String nullOfString(String str) { if (str == null) { str = ""; } return str; } pu
2018-03-28 08:52:48
725
原创 Android工具类-Toast相关工具
import android.content.Context;import android.view.Gravity;import android.widget.Toast;/** * 基本功能:Toast信息工具 */public class ToastUtil { /** * 将最长使用的显示方法单独提出来,方便使用。 * 屏幕中心位置短时间显示To
2018-03-28 08:51:01
245
原创 Android工具类-SD卡工具
import android.annotation.TargetApi;import android.os.Build;import android.os.Environment;import android.os.StatFs;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.i
2018-03-28 08:49:35
465
原创 Android工具类-Intent工具
import android.content.Context;import android.content.Intent;import android.net.Uri;import android.os.Build;import android.os.Bundle;import android.util.Log;import android.widget.Toast;/** *
2018-03-28 08:39:57
782
原创 Android工具类--日期工具
import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import com.richerpay.ryshop.log.KLog;/** * 时间日期格式化工具类 * */public class T...
2018-03-27 09:31:32
1081
1
原创 Android跑马灯设置
Android实现跑马灯步骤:首先在xml中布局: <TextView android:id="@+id/tv_tips" android:layout_width="60dp" android:layout_height="wrap_content" andro
2018-03-15 14:00:05
1129
原创 自定义带图片和文字说明的Dialog
开发中想要实现如下效果,这就得自定义Dialog了,1.首先定义Dialog显示的布局内容 : toast_motify_succeed.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and...
2018-03-06 15:00:54
2736
1
原创 面试中常见问题汇总
面试题目千变万化,但是总有那么一些是出现频率最高,考察的点最典型的题目。小A带来的这篇文章,总结了以下9个最经典的面试题目,你Get到没~~1 自我介绍1)自杀式回答:我是一个很普通的人,且今天有关这个问题没有准备太好。a、“我是一个很普通的人”,你说出这句话时,你已经失去了这次的机会。给你机会,就是让你证明自己的优秀的!这样的回答让人觉得你连想都不想。b、“我今天准备得不太好
2018-02-13 14:23:48
539
原创 微信小程序开发简单教程---配置
最近有空自学了下微信小程序,以下教程仅供自己日后查看用。1.配置app.json文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。* 注意:在App.json中不能添加任何注释。属性类型必填描述pagesString Array是设置页面路径window
2018-01-25 09:18:40
1019
原创 解决Toast点击多次调用多次的问题
当我们快速连续点击了五次Toast按钮,Toast就触发了五次。这样的体验其实是不好的,因为也许用户是手抖了一下多点了几次,导致Toast就长时间关闭不掉了。又或者我们其实已在进行其他操作了,应该弹出新的Toast提示,而上一个Toast却还没显示结束。因此,最佳的做法是将Toast的调用封装成一个接口,写在一个公共的类当中,如下所示:public class Util { pr
2018-01-04 15:44:55
2342
原创 Android Studio常用快捷键
Android Studio常用23个快捷键1.提取变量到局部:Ctrl+Alt+V2.提取变量到全局;Ctrl+Alt+F3.格式化代码:Ctrl+Alt+L4.包裹代码:Ctrl+Alt+T5.自动导入包路径:Ctrl+Alt+O6.重命名文件、类名、变量名:Shift+F67.撤销操作:Ctrl+Z8.反撤销操作:Ctrl+Shift+Z9.全局搜索文件:双击Shift10.查找:Ctrl+...
2017-12-05 23:10:54
309
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人