自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 经典排序(冒泡、选择、插入)

详细介绍冒泡、选择、插入三大经典排序步骤,一看就懂

2022-06-09 22:53:28 93 1

原创 Android 内存泄漏

什么是内存泄漏内存泄漏是指在程序中已经动态分配的堆内存由于某种原因程序未释放或者无法释放,造成系统内存的浪费,导致程序运行速度减慢,甚至奔溃等严重后果。简单来说就一句话**:生命周期较长的对象持有生命周期较短的引用**常见的内存泄漏单例造成的内存泄漏;静态变量导致的内存泄漏非静态内部类导致的内存泄漏资源完成后,没有及时关闭,造成内存泄漏避免内存泄漏1.对上下文的引用改为全局2.适当的时候将静态变量重置为null3.静态内部类+弱引用4.使用Android profiler 工具检

2022-05-30 23:36:17 125

原创 Android ANR基础知识

什么是ANR**ANR app not responding 应用无响应*ANR的类型ANR分为4种Input Dispatching Timeout :5s内 应用没有响应输入事件BrodcastReceiver 的 onReceive()函数10s无法处理完成,后台的时间限制为60sService time out 前台服务20s内没有处理完事件,后台服务200s内Contentprovider的publish在10s内没有完成ANR的主要原因应用程序的响应性是由Act

2022-05-30 22:06:51 279

原创 线程安全 voliate

voliate的三个特点1.可见性:一个线程修改了voliate修饰的值后,对于其他线程可见;2.有序性:保证临界区代码执行有序性;3.受限原子性:不保证原子性。voliate 如何实现线程安全实现变量可见性进制指令重排序voliate读写过程读:当一个线程读取被voliate修饰的值时,JVM将本地设置无效,从主内存读取共享变量写:当一个线程修改voliate修饰的值时,JVM将本地内存刷新到主内存voliate可见性底层原理借用了CPU的lock指令1.写voliate时,处

2022-05-03 23:35:10 804 5

原创 Android 不能在非主线程更新UI的原因

mThread是主线程,在应用程序启动的时候,被初始化。在访问UI的时候,ViewRoot会去检查那个线程访问UI,如果不是主线程,则会抛出异常。@Overridepublic void requestLayout() { if (!mHandlingLayoutInLayoutRequest) { checkThread(); mLayoutRequested = true; scheduleTraversals(); }}上面是

2022-01-20 15:14:53 1782

原创 Android 背景透明

<!--继承Theme.AppCompat.NoActionBar,不显示标题栏--> <style name="TransparentTheme" parent="Theme.AppCompat.NoActionBar"> <!--不设置activity进入和退出动画样式--> <item name="android:windowAnimationStyle">@null</item> &.

2022-01-20 15:07:15 1827

原创 Android 歌词界面实现(RecyclerView)

之前写过一篇歌词界面的实现方式,这次使用RecyclerView实现首先保证每次滚动都保持在页面居中位置这里使用的是layoutManager.smoothScrollToPosition的方法,所以重写的下面这个类;public class CenterLayoutManager extends LinearLayoutManager { public CenterLayoutManager(Context context) { super(context); }

2022-01-20 14:54:47 2303

原创 Android 多线程应用

传统线程的弊端1.重复创建线程对象,性能差;2.线程缺乏统一管理,可能会无限制创建新的线程,线程之间存在CPU资源竞争,导致CPU占用过高, 或者发生OOM;3.缺乏功能,例如定时。线程池的好处1.重用已存在的线程,减少对象的创建、销毁,性能佳2.有效控制最大并发线程,提高资源使用率,避免过多资源竞争,避免堵塞;3.提供定时执行、定期执行、单线程、并发控制等功能;线程池的使用1. newCacheThreadPoll (缓存线程池)可以灵活回收无任务的线程,如果没有线程回收,则创

2021-11-07 15:54:24 1767

原创 Android 多线程创建

Android多线程创建,两种方式1.继承Thread类2.实现Runable接口这两种属于Java多线程的创建,这里不做总结。下面总结一下两种的区别:继承Thread类,属于继承,存在缺陷,一个类只可以有一个父类,但是可以实现多个接口实现Runable接口,传参Thread创建线程,可以同时实现多个Thread传参同一个Runable实例,实现多个线程数据共享;继承Thread类也可以实现线程数据共享,但是只能访问静态变量,所以不建议这样使用。Thread也是实现Runable接口..

2021-11-07 10:16:13 1895

原创 Android 多线程意义

1.为什么要用多线程提高用户体验,避免ANR;异步处理事件(例如网络查看图片时,先显示占位图,等图片加载完成后,再显示图片);多任务(例如一款音乐APP可以支持播放,歌词查看,列表查看等功能);2.为什么多线程可以避免ANRANR: APP在5s内未响应用户的操作,或者是BroadcastReciever 超过10s未处理完;事件处理原则: 所有可能耗时的任务放在非主线程去处理;Android主线程包括:UI绘制;控件事件处理;通俗来讲,在代码中on开头的,就是属于主线程的任务,例如on

2021-11-07 09:20:35 566

原创 TextView部分字体颜色高亮

开发中会遇到一种情况,TextView设置文本时,其中一些字体颜色要区分其他文本颜色。例如“我爱中国,我是中华儿女我骄傲!”,要求中国两字颜色为红色。这个时候可以使用下方这个方法。 /** *Text box keyword highlight. * * @param color 高亮的颜色 * @param text 文本 * @param keyword 高亮的关键字 * @return SpannableString text是直接可以s

2021-10-12 17:21:24 433

原创 ImageView 使用小技巧

有时候会遇到一些需求,需要两张图片叠加起来实现UI,很多人第一思路是两个View叠加一起,这样可以实现,但是增加了View的层级,我们也可以使用ImageView满足这个需求,代码如下:1.设置background,ImageView是集成View的<ImageView android:layout_width="100dp" android:layout_height="100dp" android:background="@color/color

2021-08-06 11:19:20 367

原创 Fragment基类

Fragment基类适用范围:1.MVVM结构2.Fragment与Activity共用一个ViewModelpublic abstract class BaseFragment<M extends ViewModel, V extends ViewDataBinding> extends Fragment { protected V mBinding; protected M mViewModel; protected FragmentActivity mCo

2021-08-05 15:23:02 157

原创 TextView 跑马灯效果实现

属性1.android:singleLine:内容单行显示2.android :focusable:是否可以获取焦点;3.android: focusableInTouchMode:在触摸模式下是否可以聚焦4.android:ellipsize:在哪里省略文本5.android:marqueeRepeatLimit:字母动画重复的次数;焦点上面的属性全部设置后,发现并不能实现跑马灯效果,原因是TextView没有获取焦点。1.自定义View继承TextView重写 isFocused,让其

2021-05-23 14:37:25 162 2

原创 Android 歌词界面实现(继承Scrollview)

自定义的歌词界面,实现了播放歌词高亮,滑动歌词高亮,歌词常态高亮。希望对大家有所帮助。同时也希望各路大神提出不足之处。1.歌词界面View代码注释很详细,详情看代码。这里面很多属性可以封装,这里暂时不做处理,后面有时间会重新封装。喜欢的同学可以自己进行封装public class LrcView extends ScrollView { private static final String TAG = "LrcView"; private LinearLayout mRootVie

2021-05-18 15:53:44 1166

原创 ProgressBar:替换原生的样式

替换原生ProgressBar的样式,有两种方法,一种是替换图片,一种是自定义颜色。1.替换图片1.在progressBar设定此属性indeterminateDrawable,名字定义自取。这里取名progressbarandroid:indeterminateDrawable="@drawable/progressbar"2.在drawable中设置progress资源:<?xml version="1.0" encoding="utf-8"?><layer-list x

2021-04-12 11:11:59 411

原创 Android 文本编辑框一些坑

1.不希望页面被其他事物压缩,在清单文件中设置(例如键盘):主Activity: android: windowSoftInputMode=“adjustNothing”2.文本编辑框的监听器:TextWatcher textWatcher = new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) { }

2021-04-12 10:56:51 124

原创 RecyclerView自带的滚动条

Android RecyclerView是自带滚动条的,用法如下(RecyclerView的布局省略):1.创建RecyclerView的style:<style name="recy_vertical_style"> <!--滚动条宽度--> <item name="android:scrollbarSize">15dp</item> <!--滚动条方向--> <item

2021-04-12 10:45:43 3059 1

原创 Android 序列帧动画

这是我发表的第一篇文章,如有不对之处,请大家多多指教。最近项目有个需求,做一个序列帧动画的播放(3600张图片的播放,这么多图片,对内存,对cpu是一个考验)。我在项目的开发过程中,探索了很多方法,思路,下面我会一一介绍。1.Android 原生方法Android 原生方法适用于:图片小(分辨率小) 、内存小。这种方法会一次加载所有图片,对于序列帧图片大,并且在数量多的情况下,手机cpu与内存占用比较高,容易引起OOM。使用方法如下:1.创建animation-list资源在drawable资源

2021-04-06 22:55:53 2394

空空如也

空空如也

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

TA关注的人

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