- 博客(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
2297
1
原创 监听recyclerview滑动到底部(横向,纵向)
监听横向Recyclerview滑动到底部 recyclerview.addOnScrollListener(object : RecyclerView.OnScrollListener() { override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { ...
2019-06-04 10:59:42
934
2
原创 解决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
485
3
原创 Fresco加载gif图
/***加载本地gif图需要转换为URI,加载网络gif图直接放图片URI就ok**/ val controller = Fresco.newDraweeControllerBuilder() .setUri(getUriFromDrawableRes(context, R.drawable.sample)) ...
2019-01-18 11:36:18
648
1
原创 Android Profile+MAT解决内存泄漏
.hprof文件转换hprof-conv "C:\Users\Desktop\test.hprof" "C:\Users\Desktop\test-conv.hprof"
2018-12-26 15:39:56
765
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
554
1
原创 Android Handler泄漏Activity解决方案
泄漏原因:长生命周期对象持有短生命周期对象引用,导致该gc的对象无法释放。(非静态内部类和匿名内部类默认会持有外部类的引用)解决方案通过程序逻辑来进行保护1.在关闭Activity的时候停掉你的后台线程。线程停掉了,就相当于切断了Handler和外部连接的线,Activity自然会在合适的时候被回收。2.如果你的Handler是被Delay的Message持有了引用,那么使用相应的...
2018-12-25 16:54:30
474
原创 Android禁止Scrollview自动滚动到底部
在ScrollView子标签LinearLayout里面加上: android:focusable="true" android:focusableInTouchMode="true"
2018-12-06 15:05:05
300
原创 ScrollView滚动到指定view顶部
ScrollView滚动到顶部binding.svTest.smoothScrollTo(0, 0);ScrollView滚动到指定View顶部binding.svTest.smoothScrollTo(0, binding.aimView.getTop());前提:由于getTop是相对于父控件而言,获取到的是相对于父控件的距离,示意图如下...
2018-12-03 17:18:39
2421
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
609
原创 Android控件防连点方法
Android有时候控件连续点击会引发一些问题,可采用如下策略避免,在utils内写一个工具方法,例如500ms或1s等内不允许连续点击。 private static final int CLICK_DELAY_TIME = 500; private static long lastClickTime; /** * 防止button快速连点 * ...
2018-07-17 10:49:51
1107
原创 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
3320
转载 Android监听Dialog点击外部区域
监听外部区域点击事件的抽象父类Dialogpublic abstract class OutsideClickDialog extends Dialog { public OutsideClickDialog(@NonNull Context context) { super(context); } public OutsideClickDialo...
2018-07-16 15:11:21
6272
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
2894
原创 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
7174
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
234
原创 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
806
原创 Android获取所在城市坐标及城市信息(逆地理位置编码)
通过locationManager获取所在城市经纬度 /** * 获取经纬度 */ public static Location getLocation(Context context) { String locationProvider; //获取地理位置管理器 LocationManager locatio...
2018-03-28 12:01:39
4177
转载 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
439
原创 Android插件化开发get记录:先画点(持续更新)
插件化的应用场景: 1)热部署:热修复 2)动态加载资源:动态换肤 3)四大组件动态加载:模块化开发1、写一个PluginActivity继承自Activity基类,把Activity基类里面涉及生命周期的方法全都重写一遍,插件中的Activity是没有生命周期的,所以要让插件中的Activity都继承自PluginActivity,这样就有生命周期了。 2、Dex合并就是Andr...
2018-01-29 19:21:16
341
原创 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
341
原创 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
1915
原创 Android Webview新认识(获取cookie,所加载网页内的链接的url)
一、关于浏览器加载还是自己的webview加载的问题 mWebview.setWebViewClient(new WebViewClient());只要调用上面的方法自然会调用自己的webview去加载url而不是通过浏览器去加载。 原因:如果不调用setWebViewClient方法,会调用app的浏览器去处理。默认的new WebViewClient()内shouldOverrideUrlLo
2017-12-14 17:52:32
2840
原创 每天第一次的校验
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
157
转载 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
2350
转载 HTML字符转义(转载)
http://blog.youkuaiyun.com/wusuopubupt/article/details/8817826
2017-12-01 17:42:10
271
原创 无聊之余来篇JSON解析(手动+GSON)
规则:花括号对应JSONObject, 类 方括号对应JSONArray, List一般情况javabean中解析的是resultMessage内的json数据,rs啥的都不用解析。 解析json常见解析JSONObject即json对象和JSONArray即json数组两种一、手动解析:包括解析JSONObject和JSONArraypublic class AdPic
2017-11-30 17:28:00
426
原创 下载保存的图片背景由透明变为黑色问题解决
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
12997
原创 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
2326
原创 多态新理解
无论是父类引用指向子类对象,还是子类直接继承父类:这两种情况当调用父类引用的方法时,实际是先调用子类所重写的方法,如果子类没有重写,再调用父类本身的该方法。
2017-11-02 19:20:02
208
原创 Android App启动时白屏或黑屏问题修复
当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要时间,在这个动作完成之前系统要创建一个StartingWindow(也可以称之为Preview Window),当程序初始化完成后显示用户UI并移除这个窗口。 显示白屏或者黑屏,是由你的启动Activity或者Application的主题来决定
2017-10-20 18:21:59
314
原创 WebP格式图片应用
WebP 的优势体现在它具有更优的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha 透明以及动画的特性,在 JPEG 和 PNG 上的转化效果都非常优秀、稳定和统一。为什么用目前app为了减小apk的大小,所以会只保留xhdpi分辨率下的图片。 但是这种高分辨率的图片在低分辨率的手机上容易出现OOM的crash。 所以我们需要把
2017-10-12 16:54:24
431
原创 只安装XCode’s Command line tools不安装XCode
XCode13个G,用Mac开发android只需要XCode’s Command line tools来支撑Git的使用,所以我们不要装XCode来浪费那13个G,还不如存个小视频呢。 (从Yosemite(10.10+)开始,Command Line Tools可以单独安装。) Method:打开终端,输入xcode-select –install即可。 开不开心,兴不兴奋.
2017-09-20 19:05:24
2295
原创 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
1752
原创 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
1562
原创 关于activity,context那些坑
1、activity和context的引用坚决不要用static修饰:一方面由于static的生命周期伴随整个应用,导致该引用指向的activity不能被GC回收,所以会造成内存泄漏; 2、startActivity每次都是重新new一个activity(任务栈) 总之:如果activity和context被static修饰了会造成内存泄漏。
2017-08-30 18:37:04
446
原创 onNewIntent
launchMode为singleTask的时候,通过Intent启到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法,如下所示:protected void onNewIntent(Intent intent) { super.onNewIntent
2017-08-05 11:44:57
317
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人