
Android
文章平均质量分 79
runstoppable
这个作者很懒,什么都没留下…
展开
-
[Android]网络请求中关闭页面造成内存泄漏的解决办法
网络请求导致内存泄漏在执行网络请求的时候,网络不稳定或者超时的时候,获取数据时间比较长,用户可能已经退出这个界面了,这时候肯定会出现一些问题,首先因为Presenter还在请求数据,还持有Activity,就会导致内存泄漏。 public NotPassPresenter(NotPassActivity activity) { mActivity = activity; mRepository = new ExpressRepository(); }原创 2020-07-30 16:14:09 · 1336 阅读 · 0 评论 -
[Android]自定义控件主动测量自己尺寸的方法
自定义控件有时需要主动测量自己的尺寸。如ListView、RecyclerView等列表控件在ScrollView或ExpandableListView中需要保持自己的尺寸,此时比较快捷的办法是写一个自定义的控件类继承与该被包裹的控件类,然后重写其onMeason方法,让其返回默认大小而不是适应的宽高,代码如下:@Overrideprotected void onMeasure(int原创 2018-01-15 20:16:02 · 1401 阅读 · 0 评论 -
[Android]一些细节注意点和代码
随时更新一些编写应用中遇到的细节注意点对返回键的处理,如实现长按返回键退出:@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCou原创 2018-03-21 21:22:43 · 207 阅读 · 0 评论 -
[Android]使用SharedPreferences存取对象
通常情况下SharedPreferences只用于存取基础数据类型或者String类型的键值对,但某些情况下需要存取一些复类型的对象,如集合对象,此时可以通过往SharedPreferences中存取对象的方式使用。存时,把对象写入ByteArrayOutputStream中(外套ObjectOutputStream),然后将byte数组通过Base64编码为String结构,作为值存入。取时...原创 2018-03-22 09:53:50 · 369 阅读 · 0 评论 -
[Android]关于TextView颜色选择器到正确使用——动态添加带有ICON的TextView到TabLayout中
做小项目到时候需要自建TabLayout并且自定义TabItem,折腾了一下午,实现了功能,遇到两个坑予以记录:1.添加自定义View到TabLayout中TabLayout自带到TabItem拓展性太差,图片和文字到位置不能自由定制,导致显示效果不佳,因此最好自己动态添加Tab。本次是添加了一个带有Icon的TextView到TabLayout中,具体实现代码如下:for (in...原创 2018-05-04 11:07:53 · 525 阅读 · 0 评论 -
[Android]Maven 仓库的使用与私有仓库搭建
本文为“拥抱Android Studio”系列第四篇。作者何畅彬,现任BugTags技术总监,关注移动SDK研发、后端服务设计与实现,个人博客: http://kvh.io/。 使用 Android Studio,必然要与 maven 仓库频繁打交道,在创造和分享自己打造的 Android library 的时候,maven 仓库的知识更是必不可少。本章将为开发者系统梳理这...转载 2018-05-18 11:58:28 · 1697 阅读 · 0 评论 -
[Android]RecyclerViewAdapter的封装
现在项目中基本都使用RecyclerView了,因此对RecyclerView对Adapter的封装就显得很有必要。 具体的实现逻辑:将数据集合中对Bean规定为泛型通过抽象方法在子类中传入布局动态初初始化ViewHolder通过抽象方法将Bean和ViewHolder绑定具体代码如下:public abstract class BaseRecyclerAdapter&l...原创 2018-05-08 10:41:53 · 1095 阅读 · 0 评论 -
[Android]自由添加Head和Foot对RecyclerView的Adapter
该Adapter能达到给RecyclerView自由添加Head和View的目的,且添加的Head和Foot不受LayouManager干扰,代码如下:public class BaseHeaderAndFooterAdapter<T> extends RecyclerView.Adapter<RecyclerView.ViewHolder> { priva...原创 2018-05-08 10:49:18 · 368 阅读 · 0 评论 -
[Andriod]监听键盘,控制布局向上的缩进
&amp;amp;amp;lt;div class=&amp;amp;quot;article-title-box&amp;amp;quot;&amp;amp;amp;gt; &amp;amp;amp;lt;span class=&amp;amp;quot;article-type type-1 float-left&amp;amp;quot;&amp;amp;am转载 2018-06-13 20:21:34 · 224 阅读 · 0 评论 -
[Android]屏幕适配相关
记录屏幕适配相关注意点设置字体,使app字体不受系统设置字体大小影响:Resources res = getResources();Configuration config = new Configuration();config.setToDefaults();res.updateConfiguration(config, res.getDisplayMetrics());...原创 2018-09-30 12:01:28 · 122 阅读 · 0 评论 -
[Android]ImageSpan与TextView同一行图片居中
在开发中常常会遇到标签(图片)+文字的需求,实现方式一般采用SpannableString的方式来实现。 这时候会遇到图片ImageSpan没有办法居中的问题。在解决这个问题之前,先学习字体属性Paint.FontMetrics。通过上面的示意图,再看下FontMetrics 类: public static class FontMetrics { /** * The m...转载 2019-01-30 11:23:14 · 704 阅读 · 0 评论 -
[Android]自定义ReplacementSpan实现带背景色的圆角SPAN
某些情况下会使用到SpannableStringBuilder构建特殊样式的字符串比如带有标签的标题:使用自定义的ReplacementSpan,实现:/** * 〈带背景色的圆角span〉 */public class RadiusBgSpan extends ReplacementSpan { private int mSize; private int mBg...原创 2019-01-30 14:48:40 · 3978 阅读 · 1 评论 -
[Android]inflate解析
常用inflate方法: inflate(int resource, ViewGroup root, boolean attachToRoot)第一个参数xml布局资源索引,第二个参数指的是加载布局的rootOptional view to be the parent of the generated hierarchy (if attachToRoot is true), or else...转载 2019-05-09 21:53:36 · 677 阅读 · 0 评论 -
[Android]透明状态栏
实现透明状态栏,使状态栏和标题栏融为一体,是现在应用的主流要求。下面就是实现这个功能的代码:super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (Build.VERSION.SDK_INT >= 21) { View decorView = getWindow().getDecorVie原创 2017-11-22 14:24:20 · 181 阅读 · 0 评论 -
[Android]配置Gradle的productFlavors构建项目用于多渠道打包或多环境运行
productFlavors对象可以用来分别定义产品不同的特性,使用它可以用一套代码创建不同的项目。productFlavors的使用有以下几种。为产品设置不同的applicationId而编译出不同包名的APK,在app(module)目录下的build.gradle文件中加入productFlavors结构,代码如下:productFlavors{ productA{原创 2017-11-29 17:28:31 · 2012 阅读 · 0 评论 -
[Android]从BroadcastReceiver到Activity的通信
此实例实现功能为在不打开新的Activity的前提下,从BroadcastReceiver传递数据给Activity实现很简单,但使用到了自定义广播,以免遗忘在此记录:代码以通过广播读取短信再传递给前台Activity进行显示为例AndroidManifest文件 <uses-permission android:name="android.permission.RECEIVE_SMS"转载 2016-12-02 16:40:20 · 2408 阅读 · 0 评论 -
[Android]Android Studio上的NDK开发
Android Studio上的NDK开发刚刚学了Android的NDK开发,但是教程是基于Eclipse的。为了赶上节奏,马不停蹄的在Android Studio上做实验,鼓捣了半天,也踩了不少坑,这里做个记录!:基本流程给app的gradle和本地local的配置文档配置使用NDK需要的配置在app的build.gradle中的defaultConfig里加入NDK生成.so文件需要的字段原创 2016-12-29 13:29:59 · 360 阅读 · 0 评论 -
[Android]Android Studio导入aar包
Android Studio导入aar包有两种方式,分别为本地加载以及网络加载,由于网络加载涉及到发布到mavenCentral托管的问题这里不做讨论;另外eclipse很久没有使用了也不做讨论;在这里给大家说一种本地加载的方式,简单快捷。这里演示的aar文件为: ”genius.aar“第一步:拷贝到:libs目录第二步:Module 的 build.gradle 配置文件中更改为reposito原创 2017-01-10 15:28:15 · 2367 阅读 · 0 评论 -
[Android]继承上下文类和利用meta-data实现默认对象
继承上下文类 前端时间重构代码需要设置一个类为上下文,在此记录:public class MyContext extends ContextWrapper { public XContextWrapper(Context base) { super(base); } public void attach(Context base) { attac原创 2017-02-27 16:29:42 · 424 阅读 · 0 评论 -
[Android]Collections.unmodifiableList方法的使用与场景
在公司接触到Collections.unmodifiableList(Listpackage com.readonlylist;import Java.util.ArrayList;public class Student{ private String name; private ArrayList<String> courses; public Student(String转载 2017-04-19 15:30:41 · 415 阅读 · 0 评论 -
[Android]依赖了包含aar包的库后出现Failed to resolve库aar包问题的解决办法
在Android Studio中创建一个module或者导入一个module的时候,如果这个module中依赖了aar库,当build工程的时候,会出现failed to resolve这个错误这时候,只要在app的build.gradle中加入下面代码就可以完美解决了:[java] view plain copyrepositori原创 2017-05-25 20:13:09 · 8213 阅读 · 1 评论 -
[Android]一个简单的对象池
由于需要经常性创建某类对象,所以制作了一个对象池:public final class Pools { /** * Interface for managing a pool of objects. * * @param <T> The pooled type. */ public static interface Pool<T> {原创 2017-06-08 14:16:29 · 414 阅读 · 0 评论 -
[Android]Splash界面解决启动白屏/黑屏问题
我相信很多Android开发的同学都遇到过这样的需求:实现一个Splash界面,界面上有应用相关的背景图片和一个开始按钮 点击按钮之后进入主页,以后用户再打开应用就不显示这个Splash界面了也相信很多同学都遇到了这样的困惑: 第二次进入应用,尽管你在Splash界面已经直接跳转到首页了,但是还是有个白屏或者黑屏或者带ActionBar的白屏闪现一下如果你也遇到这个问题,那就继续阅读这篇文章,我转载 2017-06-20 21:23:25 · 1013 阅读 · 0 评论 -
[Android]查看代码混淆后的日志
APP混淆已经是APP发布时的标配技术了,但是我们经常需要去看用户使用APP时的崩溃日志,这个时候,看到的日志确是被混淆了,比如a.b.c.c()!就要狂了。所以,Google当然会为我们考虑到这种情况。下面对具体的使用进行说明。代码混淆生成apk之后,项目下面会多出来一个build\outputs\mapping\release文件夹,下面分别解释release文件夹中四个文件的作用。dump.t转载 2017-07-21 10:26:30 · 2292 阅读 · 0 评论 -
[Android]通过ViewDragHelper实现滑动关闭Activity
首先来看ViewDragHelper的构造方法:create(ViewGroup forParent, float sensitivity, ViewDragHelper.Callback cb)需要三个参数:第一个 ViewGroup 是承载可以被拖动的控件的第二个是灵敏度第三个是拖动回调。我们需要实现拖动效果,主要就是依靠重写回调方法实现ViewDragHelper.Callback 中原创 2017-11-09 21:35:01 · 1761 阅读 · 2 评论 -
[Android]Fragment进行show和hide时候刷新数据
项目用到Fragment管理不同的列表信息,在切换Fragment的时候需要重新刷新数据,然而使用show()和hide()切换Fragment的时候,Fragment并不会执行onResume()和onPause()的生命周期方法,而是执行了onHiddenChanged()方法。onHideentChanged方法的源码:@Overridepublic void onHiddenChange原创 2017-11-04 10:16:04 · 3314 阅读 · 0 评论 -
[Android]通过广播读取短信
此实例实现功能为通过接收广播读取短信:代码AndriodMainfest文件 申明权限 <uses-permission android:name="android.permission.RECEIVE_SMS" > </uses-permission>配置广播 <receiver android:name="activity.SMSBroadcastReceive转载 2016-12-01 10:58:26 · 2252 阅读 · 3 评论