- 博客(53)
- 资源 (6)
- 收藏
- 关注
原创 Android 列表视频滑动自动播放—滑动过程自动播放(滑动播放页面卡顿优化)
实际我们会发现滑动页面自动播放视频页面会卡顿,针对这个问题,我们可以优化一下代码,通过Handler.runnable()去实现计算播放视频来解决卡顿问题recyclerViewScrollVideo()动态计算视频是否可以播放,这里不做详解有需要可以查看。上述方法弊端,只会在滑动停止时候重新计算,并停止播放、重新播放等,已经在播放中,并不会在滑动过程中改变视频状态。上一篇文章我们RecyclerView列表滑动自动播放——
2024-07-24 11:18:39
409
原创 Android 列表视频滑动自动播放—滑动过程自动播放(实现思路)
RecyclerView1+RecyclerView2结构,所以视频播放时在里层RecyclerView2,如果不是二维,那么就RecyclerView2其实就是视频播放容器,dataItem.getVideoPosition()其实就是告诉我们RecyclerView2中第几条数据播放视频,默认是-1,表示没有视频,需要我们在网络请求后,遍历数据生成对应可以展示视频position。列表自动播放,我们需要监听recyclerView.addOnScrollListener(this),并实现对应方法。
2024-07-08 14:52:13
479
1
原创 Android 列表视频滑动自动播放—滑动停止自动播放(实现思路)
我们优化思路,通过监听RecyclerView滑动状态,来实现当停止滑动时候,来播放视频。当SCROLL_STATE_DRAGGING我们需要暂停已经在播放的视频,我已经知道播放的事position。RecyclerView.SCROLL_STATE_DRAGGING: //手指拖动。RecyclerView.SCROLL_STATE_SETTLING: //惯性滚动。RecyclerView.SCROLL_STATE_IDLE: //滑动停止。
2024-06-12 11:09:17
553
1
原创 Android 分享页面下载app后 自动填充邀请码-读取剪切板
我们在分享时候将用户邀请码以参数方式添加到分享链接url上。当用户点击下载时候,h5把邀请码添加到剪切板上,这样用户在下载app启动app时候,先读取一下剪切板,获取邀请码,这样app就能获取推荐人的邀请码了。前文我们说过,可以在打包时候把邀请码写入app中,这个方式麻烦点,需要处理app安装包,需要对app包写入对应邀请码比较麻烦。此外我们可以借鉴这个思路,用户在分享页面,获取相关设备参数,上传服务器,app在安装启动后,也上传相关参数,进行匹配。我们可以通过剪切板来传递邀请码。
2024-04-29 13:16:02
332
1
原创 Android 分享页面下载app后 自动填充邀请码-读取app文件
android 分享出去h5页面,通过页面下载对应包,安装启动登录注册时候,需要自动填写邀请码,一般情况下,我们需要将分享人信息写入app包中,这样下载时候根据这个信息可以获取到对应安装包。android我们可以把信息写入assets文件夹下,打包时候assets不会被编译。所以在app安装后,只需要读取对应assets文件,获取对应邀请码。当用户点击邀请时候,我们告诉后台生成对应app包。被邀请用户点击下载时候,下载指定app包实现,邀请码自动填充。
2024-04-26 10:38:07
430
1
原创 Android 网络状态判断
2.1我们通过ConnectivityManager可以获取状态,但是我们需要考虑到Android版本不同获取方式不同。NetworkCapabilities.NET_CAPABILITY_INTERNET:判断是否连上网。NetworkCapabilities.TRANSPORT_WIFI:表示接入的是WIFI网络。判断当前是否能上网,但是发现小米11Android12添加证书后,一直是false。华为手机,在使用过程,网络状态不准确)1、获取网络信息,首先需要获取权限。
2023-12-22 14:05:22
2466
原创 Android app保活(前台服务)
国内厂商定制,除非厂商给app白名单,否则只能用户手动添加白名单(应用自启和后台运行),才能通过前台服务实现app保活。这里介绍前台服务相关实现方式。
2023-09-05 11:57:50
1498
2
原创 Android 设置app深色、浅色、跟随系统
我们需要再用户设置时候,记录下来,用户的设置,等app再次启动时候,获取之前设置,重新设置。2、获取当前Activity是否开启深色。4、深色浅色切换时候,重启app。1、设置单个Activity。3、webView设置。
2023-08-24 11:07:48
2396
原创 Android 保存图片
如果需要BItmap与InputStream相互转换可以参考。保存图片我们需要考虑系统版本,Q前后还是不一样的。这个主要讲的InputStream去保存。
2023-08-24 10:40:43
622
原创 Android Bitmap压缩
我们在实际使用中,往往图片转化成Bitmap,对Bitmap操作的时候(如:截屏分享等),可能Bitmap会过大,导致无视实现对应功能。那么我们就需要对Bitmap进行压缩处理。
2023-08-23 15:04:46
586
原创 Android View截屏长图拼接(RecyclerView)
RecyclerView截屏,其实就是遍历每个itemView,得到每个itemView的Bitmap,然后拼接成一个Bitmap。
2023-08-23 14:51:53
887
原创 Android Bitmap、InputStream、Drawable、byte[]、Base64之间的转换关系
【代码】Android Bitmap、InputStream、Drawable、byte[]、Base64之间的转换关系。
2023-08-21 14:59:06
888
原创 ViewPager2嵌套ViewPager2(RecyclerView)滑动事件冲突
然而我们通过源码发现:getParent().requestDisallowInterceptTouchEvent(boolean)是决定是否拦截事件。官方通过get获取NestedScrollableHost第一层包裹的冲突View,如果冲突View层级深就会有问题。ViewPager+ViewPager就不会产生冲突,那是应为,官方ViewPager帮我们已经处理过,但是。java:我们通过getChildView()遍历拿到底层冲突View,可以完美解决滑动冲突问题。
2023-08-04 11:51:25
2855
4
原创 基于TabLayoutMediator实现TabLayout+ViewPager2(Fragment)封装
①、动态设置TabView(setTabViewResId),TextView动态设置IdseTabViewTextResId(),并获取TextView对象。④、UserTabSelectedListener,获取TabLayout切换时候监听回调,包含切换前后上个item position。⑤、设置和更新 未读数和小红,包含是否开启初始化后立马显示未读数和小红点,也可以网络请求后设置。⑥、TabView支持选中字体加粗、字体大小、颜色,未选中字体加粗、字体大小、颜色。
2023-08-03 19:01:28
1358
原创 Android View截屏长图拼接(NestedScrollView)
NestedScrollView只有一个childView,虽然没有全部显示在界面上,但是已经全部渲染绘制,因此可以直接 调用NestedScrollView.draw(canvas)来完成截图,具体看代码逻辑。
2023-07-18 18:58:46
473
原创 Android获取本地相册中图片视频
这里,我们需要注意,因为android10以后版本不能通过File来获取图片文件,所以我们需要通过Uri来讲图片文件转到沙箱文件中,来压缩等操作。如果是AndroidQ一下,其实我们再获取图片封装对象里面,就已经得到Path,可以直接使用。其实,视频跟图片获取逻辑也是一样,主要查询字段不一样来区分,获取视频还是图片。其实视频,我们会涉及到一个问题,就是封面展示的问题。第二种:获取视频文件第一帧,作为封面。第一种:直接通过Gilde做展示。第三种:获取数据库中视频的封面。都是通过相册数据库获取对应数据。...
2022-08-26 19:18:17
3121
1
原创 Android页面View截图(分享、保存相册)
方法一:通过系统方法获取图片Bitmap实现分享(Deprecated) @Deprecated public static Bitmap loadBitmapFromView(View view) { Bitmap drawingCache; if (true){ //方法一: view.setDrawingCacheEnabled(true); drawingCache = vie
2022-03-24 13:04:18
4095
原创 Android h5(分享页面)唤醒app,并跳转指定界面
现在基本所有h5流量都会往自家app导入流量。所以我们常见会发现浏览器打开网页、微信分享文章扥等都有打开app的按钮1、app代码<activity android:name=".AwakenActivity" <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.categ..
2022-01-20 12:38:55
5877
原创 Android 越界回弹(支持水平和垂直方向)
1、直接上图:2、直接上代码public class DampingReboundLayout extends ViewGroup implements NestedScrollingParent3, NestedScrollingParent2, NestedScrollingChild3, NestedScrollingChild2, NestedScrollingParent, NestedScrollingChild { private st.
2021-11-01 11:50:21
1530
原创 Andorid RecyclerView 局部刷新--倒计时
前面我们介绍RecyclerView局部刷新功能实现,我们可以利用局部刷新功能实现倒计时功能。倒计时其实就是每个1秒去刷新TextView,实现时间变化,然而在RecyclerView itemView 复杂时候,我们全局刷新,往往会造成性能损耗,所以我们采用局部,只刷新TextView 一个控件来实现倒计时功能1、handler + recyclerView 来实现列表倒计时handler用来延迟一秒实现倒计时效果,通知RecyclerView刷新单个条目TextView时间...
2021-10-18 16:03:12
302
原创 Android 弹幕(bilibili-DanmakuFlameMaster)—1
1、地址:DanmakuFlameMaster2、依赖:implementation 'com.github.ctiao:DanmakuFlameMaster:0.9.25'implementation 'com.github.ctiao:ndkbitmap-armv7a:0.9.21'// Other ABIs: optionalimplementation 'com.github.ctiao:ndkbitmap-armv5:0.9.21'implementation 'com.gith
2021-10-14 11:05:16
1412
1
原创 Android 透明度对应色值
100% — FF99% — FC98% — FA97% — F796% — F595% — F294% — F093% — ED92% — EB91% — E890% — E689% — E388% — E087% — DE86% — DB85% — D984% — D683% — D482% — D181% — CF80% — CC79% — C978% — C777% — C476% — C275% — BF74% — BD73% — BA72%
2021-09-27 15:20:39
414
原创 Android RecyclerView 局部刷新
我们在列表数据更新某一个状态:1、往往由于Item view 中包含有图片,自然而然图片(Glide)刷新,这样会有闪一下效果,用户体验不是很好。2、界面会重绘,由白白损耗性能。那么RecyclerView 有没有一种只刷新某一个View呢?其他在源码中是有的。两个都是 onBindViewHolder只是参数不一样,实际上payloads这个参数就是用来区分局部刷新的。我们只需要在adapter 重新这两个方法。我们只需要在调用做区分就可以了。总结:1.
2021-08-25 19:27:19
865
原创 Android View 关于OnLongClickListener
View的OnLongClickListener事件实现原理是什么,又是如何触发(postDelayed),长按时间多久呢(0.4s)?1、通过源码我们发现View.setOnLLongClickListener()方法中: setLongClickable(true); getListenerInfo().mOnLongClickListener = l;public void setOnLongClickListener(@Nullable OnLongClickListe...
2021-08-05 14:56:31
959
原创 Android 开发多行TextView背景色
我们在开发文字背景色时候,往往ui设计稿是背景色只是文字区域,但是系统自带的BackgroundColorSpan 无法达到这样效果,所以我们需要自定义背景色。|贴上自定义BackgroundColorSpan代码:public class BetterHighlightSpan extends ReplacementSpan { private int backgroundColor; //行间距 private int lineSpacingExtr.
2021-08-03 18:03:55
695
5
原创 Android EditText java 设置 maxLength
我们在开发过程,经常会遇到EditText 设置可输入内容长度,但是发现java代码没有set方法,通过源码,我们发现InputFilter的妙用所在。在TextView中我们发现maxLength默认值为-1,并且当mxLength大于等于0才会设置LengthFilterif (maxlength >= 0) { setFilters(new InputFilter[] { new InputFilter.LengthFilter(maxlength) });} else {
2021-08-02 15:35:37
2908
原创 Android span 图文混合效果--图片居中显示
TextView 添加图片往往UI要的效果是居中,下面将图片居中,同时添加图片与文字的间距。public class CenterSpaceImageSpan extends ImageSpan { //左边距 private int mMarginLeft = 5; //右边距 private int mMarginRight = 5; public CenterSpaceImageSpan(Drawable drawableRes) {...
2021-08-02 14:38:21
615
原创 Android EditText 不得不说的InputFilter、TextWatcher、ActionMode.Callback、OnEditorActionListener
开发过程中,输入内容往往会遇到各种奇葩的限制输入1、editText.setFilters() editText.setFilters(new InputFilter[]{new InputFilter() { /** * editText 内容不变处理 * @param source 变化的字符串 * @param start 变化字符的首字符下标
2021-06-07 11:58:14
610
1
原创 Android 10 TextView 内容显示不在同一水平线上
<LinearLayout android:layout_width="match_parent" android:layout_height="100dp" android:orientation="vertical"><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:...
2021-05-13 18:32:30
347
原创 Android 实现表情功能(Dialog)
Dialog实现表情评论功能核心问题:1、如何得到键盘弹起和隐藏状态2、在于表情和键盘切换时候,防止Dialog抖动问题1:由于无法获取键盘弹起状态,但是键盘弹起,View尺寸变化,同时被onSizeChanged()调用。View 源码: /** * This is called during layout when the size of this view has changed. If * you were just added to the view ..
2021-05-12 18:17:17
534
1
原创 Android 实现震动功能(Vibrator)
1、权限:<uses-permission android:name="android.permission.VIBRATE" />2、实现震动//BaseConstantValue.VIBRATE_TIM 震动时间 if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP) { vibrator = (Vibrator) context.getSystemService(Service.VIBRATOR_S.
2021-05-12 14:38:57
691
原创 Android 播放音频 (MediaPlayer、SoundPool )
Android 播放音频一般有两种方式:ps:这里只介绍基本使用,后续会详细介绍1、MediaPlayer播放器(同时只能播放一个音乐. 可以播放大文件. 播放背景音乐)MediaPlayer mediaPlayer = new MediaPlayer();mediaPlayer.setDataSource(context,R.raw.test);mediaPlayer.prepare(); // 准备.mediaPlayer.start(); //播放或者/** *无需me
2021-05-12 14:20:19
725
原创 Android span 文字背景色、前景色、圆角
1、可参考:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0305/2535.html2、自定义 设置文字背景色、前景色、圆角度public class BackgroundSpan extends ReplacementSpan { private int textColor; private int bgColor; private int radius = 0; private int.
2021-04-26 17:27:38
1101
原创 Android webSocket(okhttp-4.9.0)
开发过程,部分需要webSocket,这里使用 okhttp 自带socket。一、依赖:com.squareup.okhttp3:okhttp:4.9.0二、创建webSocket1、创建okhttpClient和Requestpublic void init(){ //初始化okhttpClient mBuilder = new OkHttpClient.Builder(); //设置读取超时时间 mBuilder.readTimeo
2021-04-26 17:24:41
789
1
阿里巴巴java开发手册1.4.0(详尽版)
2019-03-06
阿里巴巴Android开发手册1.0
2019-03-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人