![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
文章平均质量分 68
wapchief
这个作者很懒,什么都没留下…
展开
-
Flutter构建正式包出错解决方案Execution failed for task ‘:app:lintVitalRelease‘. > Could not resolve all art
FAILURE: Build failed with an exception.What went wrong:Execution failed for task ‘:app:lintVitalRelease’.Could not resolve all artifacts for configuration ‘:app:debugRuntimeClasspath’.Failed to transform libs.jar to match attributes {artifactType.原创 2021-09-03 15:47:43 · 2537 阅读 · 0 评论 -
Jetpack都这么火了,你还不知道?
前言其实标题是给自己写的,有大概一年没做安卓了,Android技术的更新实在出乎意料,kotlin已经逐渐开始取代Java。最近被很多人问到Jetpack,表示没用过,瞬间觉得out了。包括现在流行的MVVM框架,都是这两年比较火的Android框架,是目前Android程序员必须要掌握的技术内容,于是赶紧抽空恶补一下相关知识。Jetpack介绍你可以把它叫做 — 程序开发组件。是 G...原创 2020-04-14 16:16:31 · 1374 阅读 · 0 评论 -
SmartRefresh结合Lottie实现一行代码切换下拉刷新动画
一、介绍SmartRefreshLayout是目前使用比较广泛的一款下拉刷新和上拉加载库。实现起来非常方便,可以一键修改全局的刷新样式。而且该库已经提供了大量的刷新效果,其中包括默认的 SwipeRefresh 经典风格,以及一些高级的 比如游戏刷新、适用于聊天项目的上拉加载更多等等。 Lottie是 Airbnb 开源的一款动画库,该库的优势是不需要程序员自己写 Ani原创 2018-01-31 11:44:04 · 1237 阅读 · 2 评论 -
Android关于libs,jniLibs库的基本使用说明及冲突解决
最近在开发中遇到了一个问题,因为项目需要集成不同的sdk。相对应的也是不同的.so文件。针对libs中.so库的引入会遇到一些问题。比如要集成第三方NDK库:如果是在eclipse中,需要放到libs下对应库的目录。 如果是在Android Studio中,则会默认匹配main下的jniLibs目录,如果没有目录需要自己手动创建。并且库的名称也不能随便更改。但是这里会有一个问题,就是如果使用的是A原创 2017-10-13 18:08:55 · 37403 阅读 · 0 评论 -
Android-live如何利用第三方SDK做一款直播软件
SDK服务选择目前有很多做直播云的服务乐视云网易云信保利威视阿里云百度云可以根据自己的需要做选择。直播基本原理Push推流 也就是直播端,用于采集视频信息上传,处理等。Pull拉流 用户实时播放直播的视频源服务端 提供视频的存储,码流的处理,压缩等。一般使用用第三方的服务。下面将以乐视云为例账号创建乐视云地址 注册后会自动生成用户id和密钥其中的参数是后面直播推流要用到的参数。想原创 2017-09-27 16:59:32 · 1811 阅读 · 0 评论 -
Android-IM即时通讯关于消息撤回的处理
项目源码请参考 Android-IM 项目服务端使用极光JMessage对话撤回的效果图:这里只是在对话的界面展示了撤回消息的处理。 其实还有一个地方,是会话列表,也需要动态展示撤回消息的通知。先说对话列表要进行的操作发送方:点击撤回事件,本地视图移除,通知服务端更新接收方:动态获取消息,当获取到撤回消息事件,移除视图。然后是会话列表也要同步展示会话列表只有一个接收方,需要在接收到原创 2017-09-01 16:24:36 · 4328 阅读 · 1 评论 -
Android-IM从零开始开发一个即时通讯项目
关于聊天室项目聊天室项目,也被称为即时通讯(IM)。其原理是服务器是一直在启动状态的线程,不断的从客户端(App)获取消息,收到消息后,进行类型和发送目标判断,以发送到群组或者单聊的方式,客户端收到消息后进行界面的展示。如果要自己开发即时通讯类的 App,那么必须得要后台,但是现在很多第三方工具已经给我们集成好了所有需要调用的接口工具。比如极光IM因为之前用的比较多的是极光的推送服务,也对极光的一些原创 2017-08-30 13:42:59 · 32900 阅读 · 25 评论 -
Android调用系统相机、图库、裁剪图片并压缩上传(适配7.0)
一、前言最近在开发中遇到了一个比较棘手的问题 由于在之前使用的版本-targetSdkVersion小于24也就是小于7.0所以在使用相机拍照的时候不会出现问题,但是当targetSdkVersion版本大于或者等于7.0的时候用原来的方法调用相机就会抛出一个SecurityException安全异常通过搜索发现是出于对系统安全的考虑,在sdk24及以上,对相机的操作需要使用FileProvide原创 2017-08-24 09:26:16 · 738 阅读 · 0 评论 -
Android-IM消息接收事件之EventBus的应用
在即时通讯中需要不断接收服务端的消息。JMessage提供了Event来匹配本地和服务端的消息接收。在即时通讯项目中需要大量用到消息接收事件。所以结合项目简单分析下其实现的原理和过程。事件接收类的注册 JMessageClient.registerEventReceiver(Object receiver); JMessageClient.registerEventReceiver(Obj原创 2017-09-11 15:37:37 · 592 阅读 · 0 评论 -
Android-IM使用imui组件结合JMessage实现即时消息对话
项目源码请参考 Android-IM 项目服务端使用极光JMessage 对话列表使用aurora-imui开源组件简介imui是极光在GitHub上开源的一个即时通讯库,方便开发者快速使用,完成即时通讯类的对话展示。目前支持Android、iOS、React Native三大平台。该库在Android端包括两大控件 MessageList ChatInputView原创 2017-09-05 09:48:27 · 1873 阅读 · 0 评论 -
Android中使用异步线程更新UI视图的几种方法
在Android中子线程是不能更新ui的。所以我们要通过其他方式来动态改变ui视图,1、runOnUiThreadactivity提供的一个轻量级更新ui的方法,在Fragment需要使用的时候要用getActivity.runOnUiThread开启线程 这种方法最简单,方便更新一些不需要判断的通知,比如在聊天项目中动态获取未读消息数量。 runOnUiThread(new Runn原创 2017-08-21 16:45:04 · 3743 阅读 · 0 评论 -
Android完全退出APP,并且清除活动栈
一般一个应用程序要执行退出的命令是单击回退双击退出比如就像这样,在要退出的页面加入退出的代码。 private static Boolean isExit = false; /*单击回退*/ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == K原创 2017-08-21 11:05:05 · 4719 阅读 · 1 评论 -
给即时通讯IM添加一个自动聊天机器人
正常的思路是 服务端设置一个机器人,当有接收到消息的时候,自动回复一条消息。 比如大名鼎鼎的微软小冰:小冰会根据消息类型和语境回答最接近的消息,现在还能分析图片,比如一个合照能识别大致年龄等。 当然这是高级智能化的结果。自己在写一个聊天项目的时候,也想到写一个自动回复的机器人。 但是跟小冰比真是太low了,玩玩全全就是个机器。其实在包含通讯类的项目中应用的还是比较多的。比如在很多app需要通原创 2017-08-17 15:37:25 · 5645 阅读 · 0 评论 -
Android设计模式之单例模式
作为所有设计模式中最简单的一种。可以说是只有一个对象,而这个对象是独立无二的。 确保一个类只有一个实例,并提供一个全局访问点在开发中经常要new 对象,但是面对重复的对象,大量创建的话,会给项目添加大量的重复代码。所以就需要用到单例模式。单例模式的应用场景有很多比如线程池(threadpoon)、缓存(cache)、对话框等。拿缓存来举例: 在app登录的时候需要用户名和密码,但是一般我们不原创 2017-10-17 09:14:05 · 321 阅读 · 0 评论 -
解决Glide4.0和圆角裁剪CenterCrop冲突
两种方案:1、重写BitmapTransformation重写方法解决冲突,来自CSDN的一个解决方案public class GlideRoundTransform extends BitmapTransformation { private static float radius = 0f; public GlideRoundTransform(Context context)原创 2017-11-15 10:35:22 · 5678 阅读 · 0 评论 -
Android Gradle依赖管理、去除重复依赖、忽略
常用依赖 //1.直接依赖第三方开源库,一般是托管在 jitpack 或者 jcenter implementation 'com.google.code.gson:gson:2.2.4' implementation 'com.android.support:cardview-v7:25.0.0' implementation 'com.android.support:design:...原创 2018-12-12 15:49:54 · 30847 阅读 · 3 评论 -
Activity之间传递数据的方式及常见问题总结
Activity之间传递数据一般通过以下几种方式实现:通过intent传递数据通过Application使用单例静态成员变量。(可以考虑 WeakReferences)持久化(sqlite、share preference、file等)一、通过intent传递数据(1)直接传递,intent.putExtra(key, value)(2)通过bundle,intent.putE...转载 2018-12-07 16:51:24 · 2174 阅读 · 0 评论 -
Android TextView自定义选中弹出菜单记笔记功能
效果图两种方案实现一、 通过onActionItemClicked完整代码: mManusTv.setCustomSelectionActionModeCallback(new ActionMode.Callback() { @Override public boolean onCreateActionMode(ActionM...原创 2018-10-23 17:11:58 · 4391 阅读 · 13 评论 -
Android 针对华为手机调用裁剪出现圆形裁剪框的处理
在网上找的教程大都是:if(android.os.Build.MODEL.contains("HUAWEI")) {//华为特殊处理 不然会显示圆 intent.putExtra("aspectX", 9998); intent.putExtra("aspectY", 9999); } else ...原创 2018-06-12 18:57:25 · 4147 阅读 · 2 评论 -
Android-CardView适配5.0、像素适配
用过CardView的可能遇到过适配问题。在Android 5.0,API 21以上的版本才正常,在21以下边距会自动增加阴影的宽度。 如果不做适配,那么间距就会扩大,比如设置阴影高度为4dp,marginTop为3,最后效果就是控件的高度-4,marginTop为4+3=7dp。参考百度的一些解决方案是给CardView设置cardPreventCornerOverlap属性。但是尝试...原创 2018-05-14 11:11:41 · 681 阅读 · 0 评论 -
使用Timer替换类-ScheduledExecutorService实现双击退出APP
1. 使用Timer退出Timer在使用的时候存在缺陷,已经不建议继续使用。 private static Boolean isExit = false; private void exitSystem() { Timer tExit = null; if (isExit == false) { isExit = tru...原创 2018-03-28 17:02:30 · 554 阅读 · 0 评论 -
ReactNative运行Could not install the app on the device, read the error above for details错误
Could not install the app on the device, read the error above for details. Make sure you have an Android emulator running or a device connected and have set up your Android development environment:原创 2018-04-02 17:53:52 · 5428 阅读 · 2 评论 -
Android跨进程唤醒APP,启动指定页面
1 自定义启动协议。AndroidManifest.xml中配置通过唤起启动的页面。 <!--唤醒app--> <activity android:name=".SecondActivity" android:screenOrientation="portrait" android:theme=...原创 2018-03-22 17:21:14 · 5313 阅读 · 0 评论 -
简单实现Android视频播放器倍速、清晰度切换、m3u8下载
简单的前提是使用开源库 在库的基础上添加相对应的功能,以 JiaoZiVideoPlayer 为例 ,本身自带的播放引擎是MediaPlayer,也就是Android自带的播放器,有很多不完善的地方,倍速切换只支持5.0以上,否则报 NoClassDefFoundError 错误。 而且还不支持rtmp类型的播放流。所以在播放引擎上建议不要使用默认的,目前比较流行的是 ijkplayer但是只原创 2018-02-22 16:56:50 · 14455 阅读 · 9 评论 -
Android Studio3.0 修改默认作者信息
File > Other Settings > Default Settings原创 2018-03-01 15:08:55 · 4858 阅读 · 0 评论 -
Android 给Retrofit2和OkHttp3添加统一的请求头Header
本文原创作者:一叶飘舟 作者博客地址:http://blog.csdn.net/jdsjlzx在使用Retrofit时,有时候需要设置Set-Cookie等请求头,如果每一个url都需要,那么直接来个拦截器就好了。官方说明: OkHttp3下OkHttpClient的 List< Interceptor> interceptors()方法,返回的是一个不可编辑的列表,如果对其进行编辑会报出UnS转载 2017-08-17 10:36:09 · 1223 阅读 · 0 评论 -
Android三种超简单办法,实现按钮倒计时
1、使用CountDownTimerCountDownTimer是android中自带的倒计时类 需要两个参数,一个是总计时的时间,一般验证码是60秒,就是60*1000。第二个参数是设置计时的速度,1000就是每秒一次。 如果总长度是10秒,速度是1,那么就是10-9-8-7-6-5-4-3-2-1-0; 如果总长度是10秒,速度是2,那么就是10-8-6-4-2-0; 总时间是不变的,如原创 2017-07-20 09:09:07 · 8427 阅读 · 0 评论 -
简单封装一个AlertDialog,调用只需要两行代码
直接上代码在创建自定义AlertDialog的时候需要三个参数: Context :上下文 String [] : item的名称 OnClickListener : 监听initDialog是创建之后进行实例化的部分dialogSize是用来设置大小和坐标。在设置大小的地方MyAlertDialogpublic class MyAlertDialog { private原创 2017-07-31 17:03:46 · 409 阅读 · 0 评论 -
GreenDao+SearchView+FlowLoyout实现搜索历史和热门搜索
之前写过一个静态的搜索页 FlowLayout流式布局实现标签、类似热门搜索这种效果 只是能实现界面效果,但是往往开发中是要把搜索历史缓存到本地数据库中,所以在原基础上添加了数据库功能。并且把搜索框换成了SearchView,热门搜索标签还用洪洋大神的FlowLayout,请看布局 页面总共分为五部分,分别是搜索框,搜索按钮,热门搜索,搜索历史,和清空。对于整个页面来说,热门搜索是比较简单的一原创 2017-05-02 16:39:05 · 1785 阅读 · 0 评论 -
关于JPsh极光推送的基本用法和通知介绍
第一次用极光推送避免不了各种坑。总结一下。关于架包引入 请先参考官方文档, Android SDK 集成指南这里文档说的是最新版架包在AndroidStudio中引入的方法, 直接可以在build中使用compile引入,并进行相关配置。如果全部配置完成检查app中是否生成有.so文件, 注意: 包名必须是jniLibs,如果没有的话,或者目录下文件是空,可以在libs下 找到极光的原创 2017-03-23 11:33:42 · 1626 阅读 · 0 评论 -
通过返回栈的活动来理解Activity生命周期
Android中最常用的无非就是Activity, 而精通其中的原理和生命周期也是一个Android程序员必备的技能,包括在面试的时候很多问题都会涉及到activity生命周期。当我们启动一个app的时候,其实就已经开始了activity的生命, 而这一开始的activity就是MainActivity,基本在我们创建应用的时候就存在了。下面一张图来帮助我们了解生命周期。Activity中一共有原创 2017-03-28 09:16:28 · 469 阅读 · 0 评论 -
OkHttpUtils请求网络查询手机号码归属地
这里okhttp使用了OkHttpUtils,来源于洪洋大神的封装。 导入方法 AndroidStudio: 在build.gradle中引入compile 'com.zhy:okhttputils:2.6.2'因为同时要使用okhttp,必须还要引入 compile 'com.squareup.okhttp3:okhttp:3.5.0'Eclipse: 下载jar包OkHttpUtils给原创 2017-03-07 11:06:41 · 680 阅读 · 0 评论 -
一行代码搞定使用LinearLayoutManager一键返回顶部
之前在学习RecyclerView的时候,建立了一个可以滑动的View列表,但是当滑动距离过长的时候,需要手动返回到顶部,于是加了一个一键返回顶部的按钮。要实现这种效果,有两点需要实现: 1、控制LanyoutManager滑动距离,根据滑动状态(距离)改变去设置隐藏或者显示。 2、设置top的点击事件,点击回到顶部。很遗憾LayoutManager只提供给了我们获取第一个可见item的原创 2017-02-14 17:21:04 · 2392 阅读 · 0 评论 -
使用RecyclerView滑动时设置标题栏渐变或隐藏效果
上次自己做了个简单的RecyclerView+SwipeRefrashLayou滑动demo,做完后又给加了个隐藏的效果。 需要学习RecyclerView的请查看我上篇博客http://www.jianshu.com/p/68777233c6db demo源码在:https://github.com/wapchief/android-CollectionDemo看一下效果图。 这样设计有原创 2017-01-19 14:43:50 · 6012 阅读 · 0 评论 -
SwipeRefreshLayout+RcyclerView完成下拉刷新,上拉数据加载
关于RcycyclerView的介绍,推荐大家去看洪洋的博客,里面已经介绍的很详细了。 http://blog.csdn.net/lmj623565791/article/details/45059587参考一下自己动手做了个demo,并加上了下拉刷新,和上拉加载的效果。 包括刷新状态的时候,改变标题栏的颜色,等等。项目放在了github上,需要的可以去查看源码 https://github.原创 2017-01-18 10:41:51 · 749 阅读 · 0 评论 -
android开发-单击返回上一级,双击退出
//单击返回 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { webview.goBack(); }else if (k转载 2017-02-17 10:47:36 · 2213 阅读 · 0 评论 -
Java基础知识点学习笔记
Java基本语法:1、标识符 Java出现的名称 如源文件名 类名 变量名 方法名 命名规范(见名知意): 1、类名 :所有单词首字母大写的 其他字母要小写 一般使用名词命名 如 Person如 TestPerson 2、变量名:第一个单词首字母小写 其他单词首字母大写 其他字母小写 一般使用形容词 如 stuAge原创 2016-11-08 11:35:26 · 729 阅读 · 0 评论 -
ListView点击item底部弹出popupWindow删除、修改、取消选择框
先看一下效果: 点击单个item弹出选择框,可以选择删除或者修改。删除单条item,或者跳转到修改页面。 listview的布局:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id原创 2016-10-01 10:34:09 · 1975 阅读 · 0 评论 -
FlowLayout流式布局实现热门搜索,发帖加标签效果
本文所使用的FlowLayout来自于鸿洋大神的框架。 正好现在在做项目需要用到。自己试着用了下,具体可以看效果图 鸿洋的github:https://github.com/hongyangAndroid/FlowLayoutandroid Studio中注入依赖:compile 'com.zhy:flowlayout-lib:1.0.3'布局文件: zhy:max_select=设置可选中的原创 2016-09-25 14:42:41 · 1219 阅读 · 0 评论 -
Android利用极光推送获取到消息并缓存至本地
缓存的方式有多种,最常用的类似搜索记录,这些用的数据库比较多。 本文用的是一个数据库框架GreenDao,正好也练习一下。关于技术部分需要的操作也不是太多,无非包括两部分: 一部分是在接到推送的消息的时候缓存,另一部分是在页面的时候将消息展示出来。但是有个缺点,数据清除了之后,除非自己去后台查看记录,不然就被清理掉了。 源码在GitHub如果有介绍不清楚的地方以去查看 https://gith原创 2017-05-11 16:43:45 · 3932 阅读 · 0 评论