自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 问答 (1)
  • 收藏
  • 关注

原创 Android 超出x行收缩文字,尾部显示更多,点击展开

目前的需求是:文字如果超出x行则在尾部显示 “全部”,点击展开全部文字,再点击收缩文字,不够三行则正常展示,效果如图大概思路就是: 计算出x行文字总共需要占用多大空间(即 view.width * x), 这个空间减去尾部文字占用的空间,就是x行可显示字数的空间,再将这些字提取出来(直接使用TextUtils来处理),最后做拼接就ok了 fun setMoreString( textView: TextView, moreString: ...

2021-11-17 21:30:00 3081 1

原创 横滑RecyclerView根据item自适应高度

布局文件里RecyclerView和itemView的高度都设置为wrap_content时,按照设想,应该是可以自适应高度的。但实际上出现了如下图的效果:高度在调用notifyDataSetChanged之后按照当前页面可见的item进行自适应出现这种情况是因为RecyclerView只针对当前屏幕显示的itemView进行layout操作,完成高度自适应,在后续的滑动过程中不会再次调用onLayout(),但notifyDataSetChanged会引起onLayout()的调用。通过在onBi

2021-01-25 17:41:21 1919 1

原创 Android DanmakuFlameMaster的踩坑方式

这里根据我用到过的功能填一些坑,但目前也只用到了部分功能,弹幕数据动态衔接的问题还没有遇到,以后遇到添加进来1. 基本使用基本使用看官方demo就行, 官方demo 里注释非常详细,或者看这篇文章: 开源弹幕引擎·烈焰弹幕使(DanmakuFlameMaster)使用解析 private void initDamakuView(String s) { danmakuContext = DanmakuContext.create(); HashMap&lt.

2020-08-25 15:59:03 3070 7

原创 Android中webView.reload()方法失效

记录一下,刷新网页的方式改为:webview.loadUrl("javascript:window.location.reload(true)");需要允许使用Js

2020-08-20 17:43:07 5804 1

原创 Android中WebView加载失败导致的白屏问题

首先确认不是网页加载导致的白屏,而是WebView没有加载导致的白屏确认这一问题可以在webView.setWebViewClient()中重写onPageStarted()和onPageFinished方法,监听一下是否调用了这两个方法如果调用了onPageStarted()说明是网页加载失败,与webView的初始化无关,可以找找网页的问题。如果两个都没调用,说明webView初始化就失败了,建议使用动态加载webView webview = new WebView(this); //new一个

2020-08-18 17:03:59 1828

原创 Android 一个条形动画加载效果

江湖惯例先看效果可以对颜色、线条数、动画幅度、宽度等进行设置,上图只是一个基本的效果~思路先确定了想实现的效果是这样的:整体分为中、高、低三种线,计算出三种线条的位置进行同步绘制确定变化效果是依次降低,低到...

2020-07-09 19:06:21 839 7

原创 Android 报错Failed to load native library: XXXX_so

产生原因:cpu架构不支持so库没有打包到Android下解决方案:第一种可以通过命令adb shell cat /proc/cpuinfo 来查看cpu详细信息,排查架构不支持的问题我这里遇到了第二种问题,因为系统原因,我是通过adb push命令安装的apk,这样so库不会自动导入到lib文件夹下,因此手动将so库push到文件夹下就可以了...

2019-10-22 18:00:35 3280

原创 Program type already present Android依赖冲突

针对不同的情况有两种处理方案全局查找冲突的依赖包,去掉一个修改build.gradle文件,使用compileOnly替代implementation,如下:compileOnly fileTree(include: ['*.jar'], dir: 'libs')...

2019-09-30 14:05:22 2183

转载 Android WebRTC

引用 :WebRTC之Android客户端版权声明:本文为CSDN博主「-无-怨-无-悔-」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/chenhande1990chenhan/article/details/70862208六、回调函数1.WebSocket回调接口与主要消息处理Candid...

2019-09-29 09:54:11 708

原创 JAVA 根据时间戳判断日期是否为今天、昨天

本着不想自己写的想法度娘了一下解决方案,没想到逻辑千奇百怪,错误也千奇百怪……其实逻辑很简单,就是求两个时间戳之间的天数差,只需要注意两点:时间戳从1970/01/01 08:00:00开始计时,因此在两个时间除以一天的毫秒数时需要加上8小时不要合并同类项 private String handleDate(long time) { Date date = ne...

2019-09-18 09:51:01 16573 4

原创 Android 对SurfaceView画板内容进行编码

记录一下编码SurfaceView画板内容的骚操作一般来说,视频编码是直接获取视频流进行编码,摄像头和屏幕共享画面属于比较常规的视频流。除此之外,MediaCodec提供了setInputSurface()方法,可以直接对Surface进行编码,但这个Surface需要是一个persistent对象,由MediaCodec.createPersistentInputSurface()创建。...

2019-09-10 12:17:35 2287 7

原创 使用SurfaceView进行远端本地大小画面的切换

画面大小切换很简单,需求注意的地方在于两个画面层级的切换。主要涉及的方法有setZOrderOnTop(boolean onTop)setZOrderMediaOverlay (boolean isMediaOverlay)两个方法都可以设置SurfaceView的层级,但第一个方法是将该SurfaceView设置在当前窗口的最顶层,会遮挡其他所有控件。第二个方法则是将SurfaceV...

2019-07-18 11:08:16 706 1

原创 小程序实时音视频推拉流标签使用权限开启

我也不知道我为什么又在搞小程序开发了推拉流标签为<live-pusher>、<live-player>,腾讯推出的TRTC也是基于推拉流的,所以也需要权限step1需要一个企业账号,在微信公众平台|小程序进行注册,企业账号是需要认证审核的,并且需要交300rmb,也就是说个人开发者现在可以离开了,用不了!step2在审核通过后,就可以添加一个小程序...

2019-03-26 10:27:55 3412

原创 Android中使用webRTC发送Dtmf信令

发送一个dtmf,搞了两天,我有什么办法,我也很绝望啊,sip与webrtc不可兼得在建立PeerConnection 时,会创建一系列的RtpSender,可通过RtpSender.track().kind()方法来确认我们所需的RtpSender,dtmf的发送需要kind为audio的RtpSender,拿到后再通过RtpSender.dtmf()获取到我们需要的DtmfSender就可以...

2019-03-20 12:03:06 1221 7

原创 Index 3 requested, with a size of 3

 使用Cursor时出现了  Index 3 requested, with a size of 3 的报错,当时使用的写法如下: if (c.moveToFirst()) { for (int i = 0; i &lt; c.getCount(); i++) { c.move(i); ...

2019-02-18 11:52:32 1048

原创 侧边栏header中布局找不到控件

username = navigationView.getHeaderView(0).findViewById(R.id.username); userState = navigationView.getHeaderView(0).findViewById(R.id.user_state);每次都搞忘getHeaderView()记录

2019-02-15 14:40:23 246

原创 Default Activity Not Found 问题总结

最近遇到default activity not found的问题,各种查资料,找方案,了解了很多相关知识,然而没有任何作用,总结一下可能导致的原因吧。AndroidManifest.xml文件中没有声明相应Activity,新手很容易犯的错,所以最好直接用AS快速创建Activity,不需要手动声明。注意为默认启动Activity添加intent-filter。解决方案如下:&lt;...

2018-12-11 11:26:24 43223 15

原创 HTMLMediaElement.srcObject的使用

公司项目使用到jssip.js,已经有了一个版本,也就没想过jssip的更新,今天chrome自动更新到71了,项目中的warning终于变成了error。URL.createObjectURL(mediaStream): 参考 https://developer.mozilla.org/zh-CN/docs/Web/API/URL/createObjectURL使用了这个方法的,应该会发现它...

2018-12-10 13:45:55 11597

原创 Android RecyclerView点击item放大效果越界不显示

TV开发时候需要一个获取焦点后元素放大的效果想要的是这种:但是得到的是这种:子元素被父元素裁减了,可以使用设置属性来解决,重要的是这个属性的位置需要设置在爷爷布局中,也就是RecyclerView的父布局中 android:clipChildren="false" ...

2018-09-28 17:36:47 1659

原创 Android替换原系统应用——Launcher为例

PS:注意备份系统!!!千万注意备份系统!!随时可能重刷!!不同的设备可能对launcher入口要求不同,可能有些需要将文件名修改成原生一样的,有些不用,以及各种莫名其妙的bug,看情况排查,我4个设备,两个成功替换,两个疯狂崩溃…… 更改系统Launcher主要是对/system/app/Launcher-release/下的apk文件进行替换,替换步骤很简单,只是要注意/sys...

2018-08-23 11:54:42 9523

原创 Android 状态栏透明

 step1:&lt;style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"&gt;&lt;!--设置为NoActionBar--&gt; &lt;!-- Customize your theme here. --&gt; &lt;item name="colorPrimary"

2018-08-13 11:44:44 2156 1

原创 Andriod wifi自定义排序

自定义Comparator,按照已连接、已保存、信号由强到弱进行排序很简单的一个东西但是搞了很久,记录一下智障的自己public class WifiComparator implements Comparator { @Override public int compare(Object o1, Object o2) { Wifi w1 = (Wifi...

2018-08-09 12:35:34 357 3

原创 Android 项目打包时出现“TaskExecutionException :':app:mergeReleaseResources'”

项目打包时出现了一个非常痛苦的错误:Error:java.util.concurrent.ExecutionException:com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details可能造成Aapt报错的原因:1.gradle缓存地址包含中文,改掉就行   sett...

2018-08-08 11:52:23 9873 1

原创 Android 自定义wifi扫描以及遇到的坑

先上效果图实现其实很简单,就是WifiManager的各种调用,下面要说的是一些注意事项和踩到的坑&lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt;&lt;uses-permission android:name="android.permission.CHANGE_NET...

2018-08-06 17:42:53 2109 4

原创 OkHttp的简单封装

直接使用原生的OkHttp请求网络,尽管简单易懂,但每次需要写大量重复的代码,实在有些疲惫,于是进行一个简单的封装,只对最基本网络请求这一块进行了简单的处理,但有了这最基本的处理,之后再拓展应该会简单许多。————更新一个问题——————在我下面的写法中用到了handler,获取了主线程,请求成功或失败时候将数据分发到主线程进行处理,此处有可能出现NetworkOnMainThreadEx...

2018-07-17 10:49:35 301 1

原创 有关单例模式赋值失败的问题

今天在使用单例模式赋值时,出现了赋值失败的问题:User user=new Gson().fromJson(u, User.class);Test.getInstance().user=user;第二句得到为nullTest.classpublic class Test { private static Test test=new Test(); public User user...

2018-06-28 20:19:57 1562 4

原创 Win10,Ubuntu双系统,格式化Ubuntu系统分区后启动问题

本人是Win 10 + Ubuntu 双系统,但是Ubuntu使用的不多,最近系统又出了一些问题,于是想要把Ubuntu卸载了,由于本人的胆(wu)大(zhi),直接格式化了Ubuntu的所有系统分区,导致开机出现 GUN GRUB version XXX的界面, win10可以正常进入,但需要开机按F12,然后选择windows进入很明显出现了引导错误,Ubuntu的启动项还在,并且是第一启动项...

2018-06-28 18:19:25 4278

原创 JAVA算法之求数组中第N小的数据

这个算法就是利用快速排序,每个分界点的位置就是它最终的位置,以每一次排序的分界点作为锚点,快排一次递归后,锚点前的都是小于锚点的数据,后面都是大于锚点的数据,假如要找第1000小的数据,第一层我们找到了分界点在500处,这时候只需要对500之后的数据再进行递归,就可以了。实现代码及测试如下: public static void getNumTest(int a[],int n){ ...

2018-06-01 11:49:30 894

原创 Java 算法之求逆序对

逆序对问题:给定一个数组,如:[8, 8, 3, 0, 6, 8, 9, 3],前大后小的数据即为一个逆序对,例如[8,3]、[3,0],求出这一数组中的所有逆序对。思路:暴力法:设置双重循环,数量标志,比较两两之间的大小,符合逆序对标准则数量标志+1,复杂度O(n^2),本例中不考虑这个方法。            合并排序:合并排序是将一个数组均分,递归调用对子数组进行排序,然后将子数组合并,...

2018-05-27 12:46:52 3053

原创 Java 排序之快速排序及其优化

本来写了一个排序合集,不过快排的优化方案比较多,单独拿了出来,下面用到的插入排序 代码在合集中Java之排序算法 public void quickSort(int[] a, int l, int r) { if (l &lt; r) { int s = partition(a, l, r); quickSort(a, l, s - ...

2018-05-26 17:48:37 965

原创 Java 之排序算法

算法的知识感觉忘的差不多了,记录一下复习的过程,随时更新:package sort;import java.util.Arrays;public class MySort { public void selectionSort(int[] a) { /*扫描整个数组,找到最小的元素并与第一个数进行交换 * */ int n = a.length; for (int...

2018-05-22 14:13:53 219

原创 Android 之 Fragment的动态加载

 本篇中使用replace方法进行fragment的替换和显示——————————————————————————————————注意:replace方法会销毁当前fragment,也就是再一次显示的时候会走整个fragment的生命周期,所以推荐使用hide和 show方法来对fragment进行操作  MainActivity.class  package...

2018-05-05 18:18:29 3012

原创 Android之简易音乐播放器,MediaPlayer的使用

Android之简易音乐播放器,MediaPlayer的使用 当前实现的音乐播放器的功能有:获取本地音乐、音乐播放、暂停、歌曲切换、进度条显示、进度条控制播放位置等基本功能主要使用了:RecyclerView显示音乐列表MediaPlayer播放音乐SeekBar显示进度条并控制音乐进度ContentProvider获取本地音乐完成后效果如下:  MainActivity.class  publi...

2018-04-28 17:52:51 1839 2

原创 Android之视图动画的简单使用

1、透明度动画 AlphaAnimation aa = new AlphaAnimation(0, 1);//第一个参数为开始时透明度,第二个为结束时透明度 //0为全透明,1为不透明 aa.setDuration(1000); //设...

2018-04-25 20:33:50 161

原创 Android自定义View之Canvas绘图

Canvas为绘图提供了以下几个非常有用的方法:Canvas.save()Canvas.restore()Canvas.translate()Canvas.rotate() Canvas.save(),字面理解为保存画布,类似于photoshop的图层,保存之后的操作类似于在新图层上作画。Canvas.restore(),类似于图层合并的操作,作用是将save()之后绘制的图像与save()之前的...

2018-04-19 21:12:30 874

空空如也

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

TA关注的人

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