自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

光着脚丫子飙五环

Read The Fucking Source Code

  • 博客(101)
  • 收藏
  • 关注

原创 SpannableString添加ImageSpan居中处理

Android图文混排可以通过SpannableString来实现,但是imageSpan只提供了两种对齐方式:ALIGN_BOTTOM,ALIGN_BASELINE两种方式,并没有居中对齐方式。自定义ImageSpanpublic class CenterImageSpan extends ImageSpan { public CenterImageSpan(Drawable dr...

2019-06-24 11:49:44 2113 1

原创 监听recyclerview滑动到底部(横向,纵向)

监听横向Recyclerview滑动到底部 recyclerview.addOnScrollListener(object : RecyclerView.OnScrollListener() { override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { ...

2019-06-04 10:59:42 848 1

原创 解决Scrollview包含viewpager的内容不显示,点击tab等切换pager无切换动画,手动滑动pager有切换动画

import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.view.ViewConfiguration;import androidx.viewpager.widget.Vi...

2019-03-06 11:37:58 422 3

原创 Fresco加载gif图

/***加载本地gif图需要转换为URI,加载网络gif图直接放图片URI就ok**/ val controller = Fresco.newDraweeControllerBuilder() .setUri(getUriFromDrawableRes(context, R.drawable.sample)) ...

2019-01-18 11:36:18 599 1

原创 Android Profile+MAT解决内存泄漏

.hprof文件转换hprof-conv "C:\Users\Desktop\test.hprof" "C:\Users\Desktop\test-conv.hprof"

2018-12-26 15:39:56 716 1

原创 Android InputMethodManager泄漏Activity

通过Android Profile+MAT定位到InputMethodManager泄漏Activity。解决方案import android.content.Context;import android.view.View;import android.view.inputmethod.InputMethodManager;import java.lang.reflect.Fie...

2018-12-26 15:35:32 515 1

原创 Android Handler泄漏Activity解决方案

泄漏原因:长生命周期对象持有短生命周期对象引用,导致该gc的对象无法释放。(非静态内部类和匿名内部类默认会持有外部类的引用)解决方案通过程序逻辑来进行保护1.在关闭Activity的时候停掉你的后台线程。线程停掉了,就相当于切断了Handler和外部连接的线,Activity自然会在合适的时候被回收。2.如果你的Handler是被Delay的Message持有了引用,那么使用相应的...

2018-12-25 16:54:30 443

原创 Android禁止Scrollview自动滚动到底部

在ScrollView子标签LinearLayout里面加上: android:focusable="true" android:focusableInTouchMode="true"

2018-12-06 15:05:05 256 1

原创 ScrollView滚动到指定view顶部

ScrollView滚动到顶部binding.svTest.smoothScrollTo(0, 0);ScrollView滚动到指定View顶部binding.svTest.smoothScrollTo(0, binding.aimView.getTop());前提:由于getTop是相对于父控件而言,获取到的是相对于父控件的距离,示意图如下...

2018-12-03 17:18:39 2339 2

转载 支持WrapContent的Fresco SimpleDraweeView

package com.sunland.core.ui.customView;import android.content.Context;import android.graphics.drawable.Animatable;import android.net.Uri;import android.util.AttributeSet;import com.facebook.dra...

2018-12-03 16:50:52 566

原创 Android控件防连点方法

Android有时候控件连续点击会引发一些问题,可采用如下策略避免,在utils内写一个工具方法,例如500ms或1s等内不允许连续点击。 private static final int CLICK_DELAY_TIME = 500; private static long lastClickTime; /** * 防止button快速连点 * ...

2018-07-17 10:49:51 1052

原创 Fragment添加进入退出动画

fragmentManager.beginTransaction().setCustomAnimations(R.anim.translate_into, R.anim.translate_out).add(R.id.fl_content, testFragment).commitAllowingStateLoss();进入动画 R.anim.translate_into &l...

2018-07-16 16:07:44 3230

转载 Android监听Dialog点击外部区域

监听外部区域点击事件的抽象父类Dialogpublic abstract class OutsideClickDialog extends Dialog { public OutsideClickDialog(@NonNull Context context) { super(context); } public OutsideClickDialo...

2018-07-16 15:11:21 6082 1

原创 Android状态栏动态显示与隐藏

固定状态栏:状态栏在app布局上面,不覆盖app布局if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);//设置固定状态栏常驻,不...

2018-07-16 14:07:11 2826

原创 Android Studio Cannot find declaration to go to

记录一次Android Studio抽筋行为,引入的第三方包突然报红,但是可以正常编译,提示Cannot find declaration to go to,什么关闭重启studio,清除缓存Invalidate Caches/Restart都都不管用,强迫症+洁癖特么受不了啊,灵光一闪,打开项目时不从快捷列表里打开项目,而是open an existing project,居然解决了呀,我的天,...

2018-07-09 11:11:57 7073 1

原创 Android 键盘相关操作

禁止进入activity自动弹出键盘在Manifest.xml中设定activity的属性 android:windowSoftInputMode=”stateHidden|stateUnchanged” Android show softkeyboard with showSoftInput is not working?InputMethodManager imm = ...

2018-05-24 11:19:09 183

原创 Kotlin使用记录

1、Kotlin中NPE理解: 拿这行代码举例var bundle = intent.getBundleExtra("test")上面这行代码没有定义类型,系统会自动推断bundle的类型,即intent.getBundleExtra(“test”)返回Bundle则为Bundle类型,返回null则为null,如果返回null时使用bundle!!则肯定会报空指针。所以:不指定...

2018-04-24 19:21:48 745

原创 Android获取所在城市坐标及城市信息(逆地理位置编码)

通过locationManager获取所在城市经纬度 /** * 获取经纬度 */ public static Location getLocation(Context context) { String locationProvider; //获取地理位置管理器 LocationManager locatio...

2018-03-28 12:01:39 4033

转载 Android插件化开发打通任督二脉:点连线(持续更新)

如何加载独立文件或者网络中的插件里的类?解决方案:http://weishu.me/2016/04/05/understand-plugin-framework-classloader/宿主app的manifest里没有声明插件里的activity时如果启动插件内的activity?解决方案:http://weishu.me/2016/03/21/understand-plugin

2018-02-01 18:33:34 400

原创 Android插件化开发get记录:先画点(持续更新)

插件化的应用场景: 1)热部署:热修复 2)动态加载资源:动态换肤 3)四大组件动态加载:模块化开发1、写一个PluginActivity继承自Activity基类,把Activity基类里面涉及生命周期的方法全都重写一遍,插件中的Activity是没有生命周期的,所以要让插件中的Activity都继承自PluginActivity,这样就有生命周期了。 2、Dex合并就是Andr...

2018-01-29 19:21:16 300

原创 Android xmlns分类及使用

XML namespace XML 命名空间提供避免元素命名冲突的方法。 分为三种:1.默认xmlnsxmlns:android=”http://schemas.android.com/apk/res/android”2.工具类xmlns:布局文件内预览期间展示,运行后会给自动干掉xmlns:tools=”http://schemas.android.com/tools”3.开发人员自定

2017-12-18 21:41:49 297

原创 Databinding在各种场景下拿到binding对象

MyDataBindingActivityps:拿到binding的方式如下activityMyDataBindingBinding = DataBindingUtil.setContentView(this, R.layout.activity_my_data_binding);public class MyDataBindingActivity extends BaseActivity {

2017-12-18 15:18:02 1834

原创 Android Webview新认识(获取cookie,所加载网页内的链接的url)

一、关于浏览器加载还是自己的webview加载的问题 mWebview.setWebViewClient(new WebViewClient());只要调用上面的方法自然会调用自己的webview去加载url而不是通过浏览器去加载。 原因:如果不调用setWebViewClient方法,会调用app的浏览器去处理。默认的new WebViewClient()内shouldOverrideUrlLo

2017-12-14 17:52:32 2773

原创 每天第一次的校验

private boolean isTodayFirst() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Timestamp currentTimeStamp = new Timestamp(System.currentTimeMillis()); String nowTime = sdf.format(

2017-12-06 11:46:14 140

转载 git cherry-pick commitid捡樱桃

Git可以把任意分支的commit提交到任意别的分支,只需拿到commit的id,然后切换到要合并的分支,使用git cherry-pick commitid就ok了,注意这种方法最好针对目标合并分支没有变化的情况,否则就手动解决冲突把。http://sg552.iteye.com/blog/1300713

2017-12-05 11:58:44 2251

转载 HTML字符转义(转载)

http://blog.csdn.net/wusuopubupt/article/details/8817826

2017-12-01 17:42:10 237

原创 无聊之余来篇JSON解析(手动+GSON)

规则:花括号对应JSONObject, 类 方括号对应JSONArray, List一般情况javabean中解析的是resultMessage内的json数据,rs啥的都不用解析。 解析json常见解析JSONObject即json对象和JSONArray即json数组两种一、手动解析:包括解析JSONObject和JSONArraypublic class AdPic

2017-11-30 17:28:00 379

原创 下载保存的图片背景由透明变为黑色问题解决

bitmap压缩时如果采用CompressFormat.JPEG格式会将图片透明的背景转换为黑色,改为CompressFormat.PNG就ok了。 private void saveBitmap(Bitmap bitmap, int i) { File appDir = new File(Environment.getExternalStorageDirectory(),

2017-11-28 16:58:46 12073

原创 Android下载,保存图片(HttpURLConnection,Fresco)

1⃣️下载图片先上高端的Fresco下载的用法:private void saveImageFromUrl(String url, Context context, final int i) {ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse(url))

2017-11-28 16:47:51 2242

原创 多态新理解

无论是父类引用指向子类对象,还是子类直接继承父类:这两种情况当调用父类引用的方法时,实际是先调用子类所重写的方法,如果子类没有重写,再调用父类本身的该方法。

2017-11-02 19:20:02 194

转载 事件分发机制

这里写链接内容

2017-11-02 14:20:09 167

原创 Android App启动时白屏或黑屏问题修复

当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要时间,在这个动作完成之前系统要创建一个StartingWindow(也可以称之为Preview Window),当程序初始化完成后显示用户UI并移除这个窗口。 显示白屏或者黑屏,是由你的启动Activity或者Application的主题来决定

2017-10-20 18:21:59 277

原创 WebP格式图片应用

WebP 的优势体现在它具有更优的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha 透明以及动画的特性,在 JPEG 和 PNG 上的转化效果都非常优秀、稳定和统一。为什么用目前app为了减小apk的大小,所以会只保留xhdpi分辨率下的图片。 但是这种高分辨率的图片在低分辨率的手机上容易出现OOM的crash。 所以我们需要把

2017-10-12 16:54:24 396

原创 只安装XCode’s Com­mand line tools不安装XCode

XCode13个G,用Mac开发android只需要XCode’s Com­mand line tools来支撑Git的使用,所以我们不要装XCode来浪费那13个G,还不如存个小视频呢。 (从Yosemite(10.10+)开始,Command Line Tools可以单独安装。) Method:打开终端,输入xcode-select –install即可。 开不开心,兴不兴奋.

2017-09-20 19:05:24 2151

原创 DataBinding使用填坑

1、 <data class="TestBinding4"> <import type="com.xxxx.app.ui.ask.AskListViewModel" /> <variable name="vmodel" type="AskListViewModel" /> </data>class声名的类名即

2017-09-01 16:02:28 1707

原创 Activity获取setContentView()后得到的View

1、获取setContentView()后得到的View:View contentView = ((ViewGroup) (getWindow().getDecorView().findViewById(android.R.id.content))).getChildAt(0);2、获取DecView:View rootView = getWindow().getDecorView();

2017-08-31 17:04:05 1388

原创 关于activity,context那些坑

1、activity和context的引用坚决不要用static修饰:一方面由于static的生命周期伴随整个应用,导致该引用指向的activity不能被GC回收,所以会造成内存泄漏; 2、startActivity每次都是重新new一个activity(任务栈) 总之:如果activity和context被static修饰了会造成内存泄漏。

2017-08-30 18:37:04 399

转载 Android adb调试命令

Android adb调试命令

2017-08-05 18:22:57 227

原创 onNewIntent

launchMode为singleTask的时候,通过Intent启到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法,如下所示:protected void onNewIntent(Intent intent) { super.onNewIntent

2017-08-05 11:44:57 265

原创 URI与url的区别

所有URL都是URI android中把url用string进行处理,然后用URI进行操作。

2017-08-03 14:14:11 235

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除