android进阶
威威dett
这个作者很懒,什么都没留下…
展开
-
AdapterViewFlipper 添加item点击事件
AdapterViewFlipper 添加item点击事件使用AdapterViewFlipper实现广告滚动功能,在使用setOnItemClickListener时无法接收回调。原因由于在其父类AdapterViewAnimator中重写了onTouchEvent函数,但是在MotionEvent.ACTION_DOWN时返回值一直是false,导致onTouchEvent函数中的MotionEvent.ACTION_UP,无法回调,从而无法回调OnItemClickListener。因此要想原创 2021-01-18 14:43:37 · 490 阅读 · 0 评论 -
android CardView,LinearCardView,RelativeCardView自定义和使用
在开发过程中我们的view或布局要使用圆角和阴影的时候我们可以使用shape自定义圆角和阴影系统自带的CardView来封装一层,之后设置圆角和阴影但是以上2中方式都有个缺点:自定义shape的时候,在对ViewGroup设置背景时,如果里面的子view有背景颜色同时比较靠近边角的时候,子view会伸出圆角范围且会把底层的ViewGroup设置圆角覆盖掉,或者漏出一个角。这样就达不到我们想要的效果了。使用系统的CardView来设置的话,由于CardView是继承FrameLayout原创 2020-10-23 11:40:46 · 920 阅读 · 0 评论 -
RecyclerView ItemDecoration 自定义高度和颜色
自定义高度和颜色RecyclerView ItemDecoration自定义RecyclerView ItemDecoration,针对RecyclerView的横向和竖向的分割线,具体特点如下支持像ListView一样可以使用颜色作为分隔线(也支持drawable)支持自定义分割线的高度支持控制是否显示最后一条分割线下面贴上完整代码供参考/** * recycler view 横竖方向使用的divider * * @author wangjian */public class L原创 2020-10-17 11:29:43 · 1843 阅读 · 3 评论 -
Android启动APP时黑屏白屏
介绍黑白屏前先介绍2个概念冷启动:指 app 第一次启动或者启动被后台杀死后在这个状态打开 app,这种启动方式叫做冷启动。热启动:指 app 没有被后台杀死,按home仍然在后台运行,通常我们再次去打开这个 app,这种启动方式叫热启动。每当我们冷启动打开app的时候,会出现一会儿的黑屏或者白屏才进入Activity的界面显示,但是有些app却不会如手机QQ,微信。为什么会出现这样的现象呢?:主要是由于在应用启动的时候需要加载相关资源,在还没有执行到setContentView之前,界面显示的黑屏原创 2020-07-08 16:30:28 · 651 阅读 · 0 评论 -
okhttp添加日志拦截器,上传文件RequestBody.writeTo调用两次
okhttp添加日志拦截器,上传文件RequestBody.writeTo调用两次在使用okhttp上传文件监听进度时,由于OkHttpClient添加了日志拦截器,会导致RequestBody.writeTo调用2次下面先介绍2中解决方法,后面分析调用2次的原因方法一:在添加日志拦截器的时候,控制是否打印日志,如:在上传文件时设置HttpLoggingInterceptor.Level.NONE再或者,粗暴点,就直接在上传文件的时候,重新创建一个OkHttpClient实体删掉HttpLog原创 2020-06-29 10:50:36 · 2099 阅读 · 0 评论 -
maven私服的使用,结合android studio
上片文章介绍了如何搭建maven私服,如果没有搭建好的可参考 https://blog.csdn.net/u013626215/article/details/86007013接下来将介绍一下maven服务的具体使用在启动服务后可访问http://localhost:8081/或远程地址http://ip地址:8081/此时需要登录,点击右上角sign in用户名: admin密码:...原创 2019-01-07 18:09:39 · 513 阅读 · 0 评论 -
简单理解Binder机制的原理和从AIDL层解析使用方法
推荐参考资料:如果不想看我下面的一堆文字,建议顺序依次看一下下面的3篇文章,很有收获https://www.jianshu.com/p/4920c7781afe?from=jiantop.comhttp://www.cnblogs.com/zc9527/p/5638688.htmlhttps://www.cnblogs.com/itgungnir/p/6640120.html以下内容做记...原创 2018-12-27 16:46:06 · 697 阅读 · 0 评论 -
adb命令安装app到所有已经连接的设备上
电脑连接设备时有时是多个,测试就不能直接使用adb install xxx.apk了,需要指定某个设备的名称才可以安装,通过 adb devices获取连接的设备名称,如我的设备名称如下(提醒一下以下所有命令要配置adb的环境变量):然后通过以下命令安装到指定手机上:adb -s MKJNW17C13002900 install -r xxx.apk命令解析:-s: 指定设备名称-...原创 2018-12-17 10:03:55 · 3621 阅读 · 0 评论 -
二行代码去掉Android BottomNavigationView图标和文字缩放动画效
最近在学习BottomNavigationView的使用,但是有些时候我们有特殊需求如:[Android官方BottomNavigationView添加Badge(角标),全部tab显示文字自动铺满]如:不需要label的缩放效果咋办呢?下面给大家分享一下,2句代码去掉这个效果:直接上代码:BottomNavigationView bottomNavigationView = fin...原创 2018-12-21 14:45:55 · 5420 阅读 · 5 评论 -
RecyclerView切换布局管理器时界面错乱,存在空白,分割线错位
今天在修改RecyclerView的时候由于有个需求是需要切换布局管理器。比如淘宝的商品列表界面,可以ListView的形式展示也可以GridView展示,但是我在切换的时候总是界面错乱,有空白的地方很多,分割线也存在错位。艰苦,最终重试了不知道多少次,只需要修改一行代码好了,在此记录下来给可能碰到的小伙伴参考一下啊!就是需要对RecyclerView重新设置一下adapterrecycle...原创 2019-01-14 16:39:10 · 1415 阅读 · 0 评论 -
Gradle flavorDimensions使用方法
以下代码摘录自官网,仅供参考:官网地址使用demo如下:android { ... buildTypes { debug {...} release {...} } // Specifies the flavor dimensions you want to use. The order in which you // list each dimensio...转载 2019-01-26 14:19:58 · 3936 阅读 · 0 评论 -
AAPT2 error: check logs for details
AAPT 是全称是 Android Asset Packaging Tool,它是构建 App,甚至是构建 Android 系统都必不可少的一个工具。它的作用是将所有资源文件压缩打包到Android APK 当中。我们在 Android SDK 目录下可以找到它。AAPT2 是 AAPT 的全新版本,从 Android Studio 3.0 开始,它被作为默认的资源打包工具。在开发 App 的...原创 2019-01-23 11:23:42 · 945 阅读 · 1 评论 -
android 签名v1和v2的认识
由于在 Android 7.0 以上版本的设备上,APK 可以根据Full Apk Signature(v2 方案) 或者 JAR-signed( v1方案)进行验证;而对于7.0以下版本的设备其会忽略 v2 版本的签名,只验证 v1 签名所以签名方式:1. 一定可行的方案: 只使用 v1 方案2. 不一定可行的方案:同时使用 v1 和 v2 方案3. 对 7.0 以下一定不行的方案:只...原创 2019-03-06 14:52:23 · 1019 阅读 · 0 评论 -
android基于手机tcp抓包
首先手机需要root哦1、下载tcpdump链接:https://pan.baidu.com/s/1Ze31eleBZ2cc7iQrKZ5Eeg 提取码:6ytx 2、通过adb命令上传到手机里adb push tcpdump /system/bin3、导出日志文件adb shell tcpdump -p -vv -s 0 -w /sdcard/capture.pcaptcp...原创 2019-03-07 10:12:50 · 3790 阅读 · 3 评论 -
秒懂Android Handler和Looper消息原理
在理解Android Handler消息机制原理前请务必理解Threadlocal使用特点推荐文章https://www.jianshu.com/p/f2ff9c38c5be下面是我对Threadlocal的理解可供参考:每个线程都可以通过ThreadLocal来存储并获取保存的数据,多个线程之间是相互独立的。ThreadLocal在当前线程操作数据只对当前线程有效ThreadLoca...原创 2019-03-21 17:32:43 · 811 阅读 · 0 评论 -
主线程中的Looper.loop()死循环为什么不会导致ANR?
源码的 ActivityThread 类中执行Looper.loop();的main函数,也就是主线程的入口public final class ActivityThread { public static void main(String[] args) { // 为主线程创建looper Looper.prepareMainLooper(); ...转载 2019-03-25 15:26:43 · 4764 阅读 · 1 评论 -
Android官方BottomNavigationView添加Badge(角标),全部tab显示文字自动铺满
我使用的BottomNavigationView版本如下,以下功能也是在下面的版本上测试的implementation "com.android.support:design:28.0.0"在我们使用BottomNavigationView时在tab个数大于三个是无法在全部的tab上显示文字,以下提供2中解决方式1.网上搜索提供的方法如下:import android.util.Log;.原创 2018-12-20 11:16:02 · 5434 阅读 · 6 评论 -
android隐藏应用图标
项目开发中有时需要安装没有应用图标的应用,以下提供2中方法供参考使用:第一种方式,在启动页的activity中添加schema,因为我们把app的入口Activity申明为由接收隐士的Intent来启动,这样自然也就不会显示图标了 <activity android:name="net.dd.daemon.MainActivity" and...原创 2018-12-12 15:25:59 · 5472 阅读 · 2 评论 -
android 跨进程通讯-------socket
android跨进程通讯方式很多,如aidl,messenger,socket,provider,file等,下面是我整的一个同一个项目中2个不同进程间通过socket实现通讯的例子:主要实现即填写好端口和地址即可,其他的也就是一些读写操作,下面主要代码中有详细注释:public class SocketHelper { private static final String TA...原创 2018-09-06 10:47:34 · 567 阅读 · 0 评论 -
Android 屏幕适配
基本概念Android屏幕适配必须要理解的一些概念,这部分可能比较枯燥,但是俗话说的好“工欲善其事,必先利器”,翻译过来就是“有什么样的枪,决定你打什么样的鸟”,一旦这些概念你理解掌握了,屏幕适配你自然而然就觉得简单多了。px是英文单词pixel的缩写,意为像素,屏幕上的点。我们通常所说的分辨率如480X800就是指的像素。在设计领域中,像素是用来计算数码影像的最小转载 2015-09-24 13:34:55 · 438 阅读 · 0 评论 -
expandview可实现区域选择,可实现类似58筛选功能
expandview 支持自定义popview,每一个弹出的view都是一个独立的popwindow同时也可实现是否在顶部tab上显示选择的item文字具体代码如下:public class ExpandableView extends LinearLayout implements ExpandItemView.OnExpandItemClick, View.OnClickListe原创 2016-04-07 15:27:55 · 1532 阅读 · 0 评论 -
okHttp demo封装
封装okhttp 1.实现get,post请求 2.支持上传,下载功能 3.支持Gson泛型解析json数据4.使用mvc设计模式 5.封装glide图片库使用基本满足使用,有不足多谢各位指教源码下载地址原创 2016-03-28 19:27:35 · 1475 阅读 · 0 评论 -
接收Activity返回的结果startActivityForResult
启动另外一个activity并不一定是单向的。我们也可以启动另外一个activity然后接受一个返回的result。为接受result,我们需要使用startActivityForResult() ,而不是startActivity()。 例如,下面是一个启动activity来选择联系人的例子:**启动activitystatic final int PICK_CONTACT_REQUEST原创 2016-05-11 10:54:24 · 4297 阅读 · 0 评论 -
android View 的关键生命周期
View 的关键生命周期如下图:转载 2016-06-24 14:52:28 · 433 阅读 · 0 评论 -
listview中使用getCheckItemIds和getCheckedItemIds获取选中项
1、使用 listview .getCheckItemIds();(已弃用)使用此方法获取选中项需要重写adapter中的以下方法才会有效:@Overridepublic long getItemId(int position) { // TODO Auto-generated method stub // position 值可自定义 return position;}原创 2016-11-30 09:20:24 · 1711 阅读 · 0 评论 -
android Html.fromHtml font 标签支持设置字体大小和颜色
由于在android 中的Html源码中对html标签的支持不是很完全,在使用textview加载html自定义字体样式的时候遇到坑了,就是font标签不支持size属性,查看源码中发现没有去解析size属性// Html源码部分 private static void startFont(SpannableStringBuilder text,原创 2017-08-30 17:52:38 · 20813 阅读 · 2 评论 -
AlarmManager定时发送广播,定时保活,兼容个版本
由于android个手机版本的迭代和厂商对内核的修改导致AlarmManager的使用不想以前那么准确了。在api19以前可以使用setRepeating设置重复发送广播,只用就需要自己在发送闹钟后,在接收处再次发送相同的闹钟,实现重复执行的效果;下面对AlarmManager的使用做了一些兼容性的处理,可以定时发送广播: /** * 每5分钟唤醒一次service *原创 2017-08-31 14:21:53 · 4171 阅读 · 0 评论 -
android手动 v2 签名
用v2签名前要进行v1签名或zipalign1. zipalign使用命令如下(v1签名可行百度很多工具的,android studio也可以eclipse也可)zipalign.exe -v -p 4 input.apk output.apkzip对齐,因为APK包的本质是一个zip压缩文档,经过边界对齐方式优化能使包内未压缩的数据有序的排列,从而减少应用程序运行时的内存消耗 ,通过空间换时间的方原创 2017-09-28 10:48:25 · 2928 阅读 · 0 评论 -
AutoCompleteTextView中的弹出框实现模糊查询
AutoCompleteTextView中的弹出框实现模糊查询只需重写AutoCompleteTextView中的arrayadapter 重写 Arrayadapter 源码中的words[k].startsWith(prefixString) 修改成 words[k].indexOf(prefixString)!= -1这里直接复制源码修改(这个可能是老版的源码,具体哪个版本的忘了),之后直原创 2017-12-06 17:06:22 · 1002 阅读 · 1 评论 -
android 打包和签名记录
=========android打包========= 以下是原理图:由android的项目经过编译和打包,形成了:.dex 文件 resources.arsc uncompiled resources AndroidManifest.xml解压了一个普通的apk文件,解压出来的文件如下:classes.dex 是.dex文件。resources.arsc是resources resour转载 2017-12-06 15:54:04 · 483 阅读 · 0 评论 -
declare-styleable:自定义控件的属性
做Android布局是件很享受的事,这得益于他良好的xml方式。使用xml可以快速有效的为软件定义界面。可是有时候我们总感觉官方定义的一些基本组件不够用,自定义组件就不可避免了。那么如何才能做到像官方提供的那些组件一样用xml来定义他的属性呢?现在我们就来讨论一下他的用法。一、在res/values文件下定义一个attrs.xml文件,代码如下:转载 2015-06-08 14:04:15 · 459 阅读 · 0 评论 -
Radiobutton样式
RadioButton布局脚本:RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:button="@null"android:drawablePadding="-20dp"android:dr转载 2015-06-12 10:04:06 · 2556 阅读 · 0 评论 -
android ViewPager 自适应高度
很多Android开发者会遇到的问题,ViewPager无法自适应内容的高度,包括子Fragment或view 下面根据需求给出2中方式来动态根据内容设置ViewPager的高度:1.是网上大家都说的取所有view最大高度作为ViewPager的高度代码如下:public class AutoHeightViewPager extends ViewPager { pub...原创 2018-04-09 14:28:39 · 7711 阅读 · 16 评论 -
android模仿打电话期间手机靠近息屏,远离亮屏
由于项目有个在打电话时靠近时要息屏远离手机是要亮屏的需求,经过一顿google和百度都是说1.要释放电源锁(mWakeLock.release())和获取电源锁(mWakeLock.acquire())来达到这样的效果,但是这样并不能像系统打电话的那要亮屏息屏。2.又有人说是如下方法,但是这样需要获取系统权限,也放弃了mPowerManager.goToSleep(SystemCloc...原创 2018-04-18 15:14:42 · 3568 阅读 · 0 评论 -
Android官方提供的支持不同屏幕大小的全部方法
Android自适应屏幕QualifiersLayout AliasesNine-patch目录(?)[-]使用 wrap_content 和 match_parent使用RelativeLayout使用Size限定符使用Smallest-width限定符使用布局别名使用Orientation限定符使用Nine-Patch图片本文将告诉你如何转载 2015-05-08 16:18:25 · 984 阅读 · 0 评论