![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 60
javy_codercoder
迷惘于尘世间的一只野生的码农
展开
-
NDK编译RTMP库
ios编译脚本也可以参考源码里的build_ios.sh。保存为[filename].sh,然后执行该sh即可。原创 2024-03-13 14:03:49 · 195 阅读 · 0 评论 -
Ndk编译hevc静态库
替换掉上面的目标平台,输出目录,源码路径,ndk路径等信息即可自己编译出android平台下的x265库。命令与上一篇文章大同小异,可以参考上一篇。原创 2023-12-27 17:54:06 · 982 阅读 · 0 评论 -
android 内存优化(避免OOM)--面试经典问题
如何避免OOMOOM(内存溢出)已使用的内存+新分配的内存>可分配的内存就会抛出OOM,那么避免OOM的思路就是如何去减少内存的使用。通常Android里的oom是堆内存溢出,但是Native heap在物理内存不够时也会抛出oomBitmapBitmap无疑是内存大户,首先看看使用Bitmap的时候可以怎么样优化。1.根据实际情况使用合适分辨率的Bitmap2.注意原始分辨率和内存缩放结果(比如drawable-xdpi,drawable-xxdpi这些文件夹多放几套图和只放一套图的区别原创 2021-05-08 16:33:10 · 1162 阅读 · 0 评论 -
一个可以生成.9阴影图的网站
http://inloop.github.io/shadow4android/界面如图可以设置阴影颜色,offset,blur,round,还有填充颜色,padding等。另外这个地址打开是真的慢~建议大家下载下来打开index.html本地使用。如果因为某些莫名其妙的原因打不开或者下载不了可以下载我提供的本地版。下载地址:https://download.csdn.net/download/javy_codercoder/13084899...原创 2020-11-03 15:29:50 · 1421 阅读 · 1 评论 -
ScrollView最好不要嵌套FrameLayout
我的布局是这样的<ScrollView><FrameLayout><自定义View/></FrameLayout></ScrollView>刚开始是自定义view头部会被“吃掉”,没错就是自定义view的顶部内容会被挡住,于是我通过修改FrameLayout的Gravity修正了这个问题。然后后来有个需求需要动态更改ScrollView的高度,但是我发现怎么计算都不对,因为ScrollView里面的内容滑到尽头有几百像.原创 2020-10-13 19:08:26 · 450 阅读 · 0 评论 -
Android N以上使用Charles抓https包
最近开发一款app,调试接口的时候抓包~于是按照以往的经验给手机和pc装证书~一波操作猛如虎。最后发现不行~app全部接口都用不了。开始怀疑人生。后来看了https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/发现原来要进行如下操作才可以的~大概是说需要在res目录新建一个x...原创 2020-04-09 17:36:45 · 432 阅读 · 0 评论 -
设计模式:说说外观模式(Facade)
最近在学php框架Laravel,发现里面有很多Facade,所以特地去学习了一下,发现原来是某个设计模式。所以写下来做个笔记。例子那么对应到编程之中我们写的某一个功能可能需要调用到很多类,如果后续维护者去维护这个功能的时候也需要清除所调用的每一个类那时间成本太高,而且也不利于维护。各个类之间的联系太多,我们称之为耦合性过高。那么能不能有一个中间类就是为了这个功能服务的,我们只需要把所...原创 2020-04-08 15:02:31 · 181 阅读 · 0 评论 -
Android:RecyclerView实现横向滑动接近中间的Item居中效果
这个效果有点一言难尽,上个图吧。就是这个效果:当某个item移动到屏幕中间的时候停止滑动这个item会自动滑动向中间。有点像画廊那个效果,但是画廊的图片比较大。那么该如何实现的呢?刚开始我是自己计算的: override fun onScrollStateChanged(recyclerView: RecyclerView, newStat...原创 2019-12-10 20:43:23 · 3634 阅读 · 1 评论 -
Android:方向传感器
说起方向传感器,笔者最近刚好用到,在这里记录一下。上网找了一下,关于方向传感器的文章大多数都已经使用已经过时的方法。有一些则是解析过度,看完之后还是不知道怎样使用新的Api。1.旧的用法首先sensorManager获得方向传感器:Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);然后设置原创 2016-05-03 13:29:12 · 1535 阅读 · 1 评论 -
Android:6.0运行时权限解析
android6.0发布好一段时间了,但是由于android手机厂商都要对android“深度定制”。因此很多用户都没有第一时间收到android6.0升级推送。笔者用的是魅族手机,到笔者写本编文章为止还没能升级到6.0系统。在这里吐槽一下bugme!android6.0的权限机制发生了较大的变化,特别是对于开发者来说要第一时间掌握如何对6.0的运行时权限进行适配。1.运行时权限的变化在a原创 2016-04-12 14:48:49 · 534 阅读 · 0 评论 -
Android:让EditText不自动获取焦点
在使用EditText的时候如果界面中有EditText的话,刚打开这个界面的时候第一个EditText就会自动获取焦点。如果是想要用EditText监听焦点的话。那么就会捣乱了,监听的逻辑。或者在其它操作的时候也可能需要不让EditText自动获取焦点1.其它方法如何让EditText不自动获取焦点,笔者搜索了一下发现有几篇文章都说在第一个EditText前写一个LinearLayout原创 2016-04-13 17:01:12 · 4536 阅读 · 0 评论 -
Android:TextInputLayout的简单使用
今天看了一下同事新写的登录注册界面,发现点击输入框之后EditText中的hint有浮动动画。于是看了一下实现的代码,发现使用了TextInputLayout这个东东。1.效果一般我们在EditText中写的hint会对当前EditText输入内容进行提示,一旦输入内容之后该EditText中的hint就会消失。这样的效果不算很好。但是使用了TextInputLayout的EditTe原创 2016-04-09 14:46:46 · 669 阅读 · 0 评论 -
Android:EventBus的使用 从此消息传递变得简单
一首先要说的自然是我准备了好几秒钟的开场白:最近看别人的Demo看到一个有趣的框架EventBus,挺有趣,也挺好用。看名称个人理解成事件总线,这个总线负责接收发布者的信息转发给订阅者。不太会画图,暂且看看我用文字粗略表示的“图”: 订阅者也就是说发布者在某处发布了一些信息,已经订阅了该信息的订阅者即可收到该信息。原创 2016-03-25 15:13:50 · 1870 阅读 · 0 评论 -
Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题
最近项目中遇到一个问题,用户第一次安装应用在系统的安装器安装完成界面有“完成”和“打开”两个按钮。当用户点击“打开”按钮进入用户注册页面进行手机号验证码发送和验证码输入等操作界面,若此时用户点击Home键切出应用到桌面,再从桌面点击应用程序图标试图切回应用完成验证码输入等操作时,应用重新走了欢迎页等步骤,此时之前从系统的安装完成界面点击打开启动的应用其实还在后面运行。然而当用户“完转载 2017-05-23 13:25:12 · 754 阅读 · 0 评论 -
Android:官方下拉刷新——SwipeRefreshLayout基本使用
先说说废话实现下拉刷新可以有很多种方式,这里介绍一下官方的SwipeRefreshLayout,看名字就知道是一个Layout(果然废话),笔者觉得使用起来非常简单~~至于好不好看就看个人口味了~~~下面先上一张效果图:使用方法上图就是效果图了,虽然不是动图。但是请各位自行脑补一下刷新图标转动的画面哈。先看一下布局代码: <android.support.v4原创 2016-02-29 21:31:48 · 4102 阅读 · 0 评论 -
Android:Sqlite的使用
在刚接触android的时候就知道有SQlite数据库了,只不过向来对数据库不太感冒,因此做安卓一段时间了都不太会使用Sqlite。于是使用各种sqlite的框架,用以替代。比如郭霖大神的Litepal。不过使用第三方框架有时候也会出现各种问题,而且不懂sqlite的基本使用总感觉不太踏实啊。因此又一次重温了sqlite的知识。并写下来。Android为了让我们更加方便地管理数据库原创 2016-05-17 15:22:08 · 616 阅读 · 0 评论 -
Android:四大组件之-----广播(Broadcast)
相信很多读者都与笔者一样,在刚学安卓的时候就接触到广播。但是并不知道广播其实也分好几种,我们刚学习使用的只是广播的其中一种:普通广播android的广播分为:普通广播,有序广播,本地广播,Sticky广播,四种。下面就为大家介绍一下这四种广播的区别与用法。一.普通广播 普通广播是异步的,通过context,sendBroadcast()发送。传递效原创 2016-06-16 16:17:03 · 1159 阅读 · 0 评论 -
Android性能优化
一.过度绘制:使用手机自带的过度绘制检测,然后在布局文件分析。二.Android图形渲染:减少非必须的view以及减少view的层级。 1.使用Hierarchy viewer:对正在运行的程序界面显示布局层级 2.节点性能分析:对渲染控件的速度进行显示。三.内存泄漏检测:内存泄漏会导致随着app使用时间越来越长占用的内存越来越多。而且还会导致卡慢甚至崩原创 2016-12-01 10:25:33 · 361 阅读 · 0 评论 -
Android开发中一些被冷落但却很有用的类和方法
来自:http://luckyandyzhang.github.io/Resources.getIdentifier :这个我 用过,记得以前做过一个皮肤切换功能,可以通过这个方法从皮肤包 获取皮肤资源。(皮肤包的资源名称和 主包的资源名称id 名是一样的,因此都是通过名称获取id ,而不是R.id.xxx)Android:clipToP转载 2017-09-05 14:37:55 · 405 阅读 · 0 评论 -
Android 使用CardView轻松实现卡片式设计
Material design中有一种很个性的设计概念:卡片式设计(Cards),这种设计与传统的List Item有所区别,Cards包含更多的内容元素和拥有自己的UI特征,关于Cards的设计规范可以参考官网介绍:https://material.google.com/components/cards.html#为了更好地实现这种 Cards UI 的设计,Google在v7包中引进了...转载 2019-03-19 17:58:57 · 494 阅读 · 0 评论 -
Android滚动多TAB悬浮头效果
Android滚动多TAB悬浮头效果先看效果图思路开始贴代码如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入先看效果图最近公司项目要实现类似这个效果于是自己...原创 2019-03-20 15:54:49 · 962 阅读 · 0 评论 -
Android:记一个关于TabLayout的沙雕问题
在使用TabLayout+AppLayout做了个悬浮折叠多tab的效果之后(效果参见上一篇文章)发现点击TabLayout没反应折腾了好一段时间什么事件拦截反射重新设置onClick都试过没用,后来发现自己犯了一个很沙雕的错。先上代码:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:...原创 2019-03-22 15:36:40 · 197 阅读 · 0 评论 -
Android ViewPager+Fragment Tab导航栏
我们在使用手机软件的时候回经常看到软件界面的顶部或者底部有几个小图标,滑动的时候页面会切换,小图标的状态也会改变。在android上我们可以使用viewpager与fragment配合写出这样的效果。首先看布局文件,activity_main.xml:<LinearLayout xmlns:android="http://schemas.android.com/apk/原创 2015-07-21 11:01:07 · 811 阅读 · 0 评论 -
Android:获取状态栏高度
有时候我们计算控件的位置,特别是自己画控件的时候需要用到各种屏幕高度,宽度,状态栏高度之类的值。获取屏幕宽高的方法网上一大堆,而获取状态栏高度网上虽然也很多但是很多已经过时了,并不能获取到真正的状态栏高度,往往获取到得值是0.那么笔者在这里介绍一种获取状态栏高度的方法:该方法用到反射机制只要通过反射机制获取系统R文件中的dimen类的实例,然后获取该实例中的高度属性:status_bar_he原创 2015-12-29 10:13:10 · 559 阅读 · 0 评论 -
Android:MediaPlayer播放音频
在安卓中MediaPlayer的应用范围很广,主要用于播放音乐与视频。本文主要介绍如何使用MediaPlayer播放音频。本文分为两个部分第一部分主要介绍播放本地音频,第二部分介绍播放网络音频。使用MediaPlayer播放本地音频文件首先准备一首歌曲,笔者使用的是ywasn.mp3,放在res/raw最简单的用法,莫过于直接创建MediaPlayer对象然后调用start原创 2015-11-26 22:21:33 · 3495 阅读 · 0 评论 -
Android几行代码实现双击back键退出程序
在很多程序中,我们点击返回键都会提示”再点击一次退出“的提示,那么到底是怎么实现的呢?接下来看代码,主要是通过监听返回键,然后获取当前时间与上一次点击时间相减,如果少于预设秒数则退出程序。public class MainActivity extends Activity {private long firstClick; @Override protected void onCre原创 2015-07-21 14:07:35 · 2011 阅读 · 0 评论 -
关于TimePicker导致FC的问题解决方案
在写个小程序的时候发现使用了TimePicker这个控件之后程序会崩溃,经检查没有问题啊~~经过一番折腾发现在TimePicker控件上加入一句 标签就可以解决这个问题了。代码如下: <TimePicker android:id="@+id/setAlarmTimePickerID"原创 2015-06-16 19:18:04 · 485 阅读 · 0 评论 -
Android:太多东西显示不完?用ScrollView吧
在开发过程中,在手机那么小的一个屏幕显示的东西有时候会大大多于你的想象。那么那么多东西我们怎么都放在手机的小屏幕上呢?我们都知道网页上的内容我们可以滚动查看,纵向的内容我们可以往下拉查看更多的内容。横向的内容可以左右拉。那么在android程序上是否有类似的功能呢?当然有啦——————ScrollView不过ScrollView只能纵向滑动,不过已经足够了。可能有些人会想,原创 2015-07-24 09:22:18 · 765 阅读 · 1 评论 -
Android~Toast使用
本文章主要介绍了toast的用法与技巧原创 2015-06-06 09:20:37 · 571 阅读 · 0 评论 -
Android的context浅析
android的context大家会经常用到,无论在显示ui还是某些数据操作都会需要传入context。按照经验我们知道Activity,service,Application。都可以作为context使用~那么在使用的时候有什么地方要注意,有什么区别呢?1.乱用context可能会照成内存泄漏,比如某些单例里面可能会使用到context,而单例又是静态的,生命很长的。原创 2015-06-12 11:09:48 · 493 阅读 · 0 评论 -
Android异步消息处理Handler的使用
众所周知,android的Ui线程是不安全的,其它线程不可以直接操作ui。那么就产生了一个问题~android异步消息处理---如何在其它线程进行ui更新操作。由于Ui都是由主线程绘制的,在进行耗时操作的时候会导致主线程繁忙,最后导致ui界面卡顿或无反应,所以在进行耗时操作的时候我们应该新建一条线程去计算耗时操作,计算完毕再利用android提供的Handler进行更新ui。(访问网络也是属于原创 2015-06-23 11:25:53 · 473 阅读 · 0 评论 -
Android ListView解决控件抢焦点导致的Listview不可点击
有时候我们的Listview上面有Button,CheckBox之类的控件,添加了这些空间可能会出现一些情况。就是整个listview不可点击。这种情况一般都是CheckBox,button之类的控件占有了焦点导致的。、怎么解决呢?既然是焦点问题~那么我们“不给”焦点不就ok了吗?我们看以下布局文件:<CheckBox android:focusable="false"原创 2015-06-16 19:10:26 · 726 阅读 · 0 评论 -
你还在苦逼地findViewById吗?使用ButterKnife从此轻松定义控件
前段时间笔者在苦逼地撸代码~最后发现有些复杂的界面在写了一屏幕的findviewbyid~~~还有一堆setOnXXXListener~有没有方便一点的方法让我们简单点不用每次都定义一次,find一次,强转一次,set一次~~后来笔者在收藏夹里找到同事好久以前发给我的网址(呵呵,果然是一旦加入了收藏夹就再也不会看了)~~打开发现有个叫做butterknife的东东~那么接下来我们来原创 2015-08-24 17:01:07 · 1668 阅读 · 0 评论 -
Android进度条ProgressDialog
我们都知道android 的进度条可以用Progressbar显示,但是有时候我们只是想在某个地方弹出个进度条让用户耐心等待一下~~标示这个程序还是有反应的。只是在读取数据而已。比如在登录的时候我们点击了登录按钮,如果没有登录提示框用户以为你这个程序没反应就去多点几下,如果此时网络慢点还是没能登录成功,那么用户就会误会这个程序没反应啦。这个时候我们应该加入个进度条窗口上去。那么接下来稍微说说进原创 2015-06-24 18:34:34 · 905 阅读 · 0 评论 -
Android:使用SparseArray代替HashMap优化性能
之前看到一篇关于adapter的文章用到了SparseArray,所以在这里写写关于SparseArray的用法。SparseArray是官方针对安卓所写的容器,与HashMap类似,不过性能比HashMap好。首先看看SparseArray的用法:SparseArray的构造与我们用惯的HashMap,ArrayList一样也是new出一个实例然后使用。SparseArr原创 2015-08-17 17:20:19 · 928 阅读 · 0 评论 -
Android:简单实现美女扒衣服小游戏
实现思路说说实现的大概思路,首先要有两副图片。这两幅图片的区别就在于一副有穿衣服,另外一副没有穿衣服,其他的细节都要一模一样。这对于懂ps的童鞋就好办啦自己动手制作就好了。但是本文为了照顾不懂ps的童鞋,提供两幅图片供大家使用~~图中美女不美各位不要吐槽哈~。A图:没穿衣服B图:有衣服的首先一开始是把A图放在屏幕上,然后再把B图覆盖在A图上。那样用户一开始看到的是B图。我们通过,监原创 2015-11-20 21:59:56 · 85111 阅读 · 1 评论 -
Android:一键find控件,从此告别繁琐的findViewById
记得之前写过一篇博客叫做:你还在苦逼地findViewById吗?使用ButterKnife从此轻松定义控件此文是介绍在eclipse环境下使用ButterKnife的,相比传统的findViewById确实简单了点~但是笔者认为还不够简单~~在谷歌停止对ADT+Eclipse停止更新之后~笔者还苦苦在Eclipse坚持了几个月终于开始转移到Android Studio原创 2015-10-30 14:44:01 · 9715 阅读 · 2 评论 -
Android三句代码使用沉浸式状态栏
ios有沉浸式状态栏已经很久了,二android在最近几个版本才实现。用过android手机的人都知道android使用app的时候屏幕上方的状态栏都是黑色的,就算不是黑色的都与正在打开的app颜色不同。有一种灰常不搭调的感觉。~今天无意中看了一下关于沉浸式状态栏的资料~~作为强迫症重度患者怎能错过?下面就开始使用沉浸式状态栏之旅:代码未上图先行:沉浸式:非沉浸式:原创 2015-08-26 17:16:37 · 1996 阅读 · 0 评论 -
三个步骤使用DrawerLayout实现侧滑Menu
1.DrawerLayout简介DrawerLayout是v4包中的,直接继承于ViewGroup。因此DrawerLayout是一个容器类。2.DrawerLayout使用的简略步骤DrawerLayout使用可以分成以下四步1.在布局文件中使用Drawerlayout作为根布局。2.DrawerLayout下写两个布局,第一个布局为Activity正常显示的原创 2015-10-12 16:56:02 · 1049 阅读 · 0 评论 -
Android:Service(三)——Aidl绑定远程服务
远程服务什么是远程服务呢?远程服务笔者觉得是相对于本地服务来说的。本地服务就是运行在同一个进程上的服务,而远程服务就是运行在其它进程上的服务。不同进程间的数据一般都是独立的,若要在不同进程间通讯就要通过特定的方法去沟通。android就提供了aild(原创 2015-11-06 10:08:07 · 3958 阅读 · 0 评论