走在自己的 Android 之路上
文章平均质量分 91
Android
禽兽先生不禽兽
喜欢做一些技术性的工作,愿意虚心向别人请教,走在自己的技术开发之路上,让自己每天都有进步,才会让自己具备更大的价值
展开
-
WebRTC 系列(一、简介)
WebRTC,H5 Demo,Android Demo,iOS Demo,原创 2023-04-11 22:53:35 · 1928 阅读 · 0 评论 -
Java 修改 mp3 的标签(ID3V1 和 ID3V2)
修改 mp3 的标签(ID3V1 和 ID3V2)原创 2023-03-14 18:38:22 · 1869 阅读 · 3 评论 -
好记性不如烂笔头之 App widgets(二)
好记性不如烂笔头之 App widgets(一)_禽兽先生不禽兽的博客-CSDN博客之前记录了 AppWidgets 的基本用法,当我的小组件中需要展示集合的时候,发现使用集合的方式也跟普通的 UI 不一样,在此特意也记录一下。一、显示列表二、Item 响应点击事件...原创 2022-04-14 14:00:07 · 2501 阅读 · 0 评论 -
好记性不如烂笔头之 App widgets(一)
在 iOS 14 更新的时候,新增了一个功能——桌面小组件。当时我一看,妈呀,都说 Android 一直在模仿 iOS,但是这个小组件不一直都是 Android 有的功能吗,终于轮到被 iOS 模仿一回了。不过 App widgets 在 Android 上一直都不温不火,相信都会有部分的 Android Developer 不知道还有这个功能。不过不知道是不是由于 iOS 竞争的原因,在 Android 12 发布的新特性上,官方宣布对小组件进行一次升级,这也算是重视了一下这块功能。个人之前一直很喜欢原创 2022-04-13 11:49:05 · 2858 阅读 · 1 评论 -
Android 中图片占用内存分析
Android 在加载图片的时候一定会考虑到的一个点就是如何防止 OOM,那么一张图片在加载的时候到底会占用多少内存呢?会有哪些因素影响占用的内存呢?知道了这些,我们才能知道可以从哪些点去优化,从而避免 OOM。一、加载资源文件夹中...原创 2022-01-16 17:53:11 · 4350 阅读 · 0 评论 -
自定义控件之 PasswordEditText(密码输入框)
前两天在掘金上看到了一个验证码输入框,然后自己实现了一下,以前都是继承的 View,这次继承了 ViewGroup,也算是尝试了一点不同的东西。先看看最终效果:事实上就是用将输入的密码用几个文本框来显示而已,要打造这样一个东西我刚开始也是一头雾水,不急,直接写不会,我们可以采取曲线救国的方法。下面我来说说我的思路。1 准备工作光看图上效果没有什么头绪的话,但是我相信下面这个布局大家...原创 2017-08-18 23:53:47 · 3616 阅读 · 0 评论 -
流式布局
package com.qinshou.flowdemo;import android.content.Context;import android.util.AttributeSet;import android.view.View;import android.view.ViewGroup;import java.util.ArrayList;import java.util.原创 2017-01-19 10:41:53 · 618 阅读 · 0 评论 -
Android 屏幕适配之 dimens 适配
1 参考链接http://blog.csdn.net/qq_34161388/article/details/73469319首先需要明白一些概念,比如什么是 px,什么是 dp,什么是 dpi,讲这些概念的文章很多,推荐一个:http://www.jianshu.com/p/ec5a1a30694b 2 为什么要适配Google 官方推荐在写布局文件的时候使用...原创 2017-09-02 23:55:25 · 9430 阅读 · 4 评论 -
自定义控件之下载控件1(DownloadView1)
前段时间在干货集中营看到了两个炫酷的下载按钮: 可惜是隔壁 iOS 的孩子,怎么办,我也好喜欢,emmm,某该,只能自己模仿着实现一下了。先从第一个入手(第二个波浪效果暂时还不会)。1 准备动作写过几次自定义控件后,我也掌握了基本姿势,首先我们将第一个控件肢解了,我大致将它分为五步,第一步,把冰箱门打开,第二步,把大象。。。去去去,要啥自行车自行车。第一原创 2017-09-10 13:02:02 · 1106 阅读 · 0 评论 -
从零开始学习RecyclerView(二)
在另一篇文章”从零开始学习RecycylerView(一)”中,已经记录了RecycylerView的基本使用,如何添加数据,如何使用布局管理器展现不同的形式,一般在展示数据后,用户不仅仅满足于看到这些数据就够了,所以通常都会和用户进行交互,点击事件就是交互最基本的其中一种。上一篇文章也说了 RecycylerView 并没有处理点击事件的监听器,所以如果要监听 RecycylerView原创 2017-04-21 10:45:51 · 690 阅读 · 0 评论 -
Android Studio 对资源分包
写代码的童鞋肯定都会在项目越写越大、越写越复杂后慢慢觉得,就算自己再怎么注意命名规范,再怎么把注释写详细,回来来找一个 item 的布局或者一个控件的 drawable 的时候还是会找上半天,因为不管是 layout 还是 drawable 目录下,资源文件总是越变越多,并且命名的相似性也可能很大。偶然间发现了一个 AS 下对资源进行分包的方法,亲测有效,下面是原文地址,我只是将自己的实践过程记录原创 2017-08-26 22:33:56 · 2755 阅读 · 0 评论 -
Android动画(三)之属性动画(Property Animation)
属性动画是 API 11 引进的,之前有说补间动画只是改变了View的视觉效果,但是它的自身属性并没有改变,而属性动画顾名思义,就是通过改变View(其实不单可以是View)的属性来达到动画的效果。简单来说,属性动画允许 Android 中任意对象“动”起来,设定一个持续时长,属性动画在这个时长内改变这个对象某些属性的值,比如一个View的位置,大小等。属性动画很强大,我刚看也不可能全弄明原创 2017-05-19 23:45:24 · 401 阅读 · 0 评论 -
弧形 View 和弧形 ViewPager
灵感来自于:Android 项目总结(一):弧形ViewPager 和弧形HeaderView图片也来自上面的链接。最近看到了好多这样的效果,身边同事也有提起过这种弧形的 View,其实实现这种效果的方法很多,我也尝试实现了一下,虽然方式不咋好,但好歹做出来效果。1 思路最开始看到这个效果第一反应就是用贝塞尔曲线去画一个下面是弧形的封闭曲线,然后再调用 Paint 的set原创 2018-01-24 20:46:49 · 883 阅读 · 1 评论 -
自定义控件之侧滑关闭 Activity 控件
隔壁 iOS 的小伙伴有一个功能就是左手向右手一个慢动作,轻轻一划就可以关闭界面,这种操作感觉还是很丝滑的,而且这还是 iOS 系统自带的功能,由于 Android 手机早期是有 back 键,home 键 和菜单键(现在大部分手机都只保留一个键了),所以 Android 是没有这个功能的。现在用户越来越注重体验,一般为了降低设计成本,在 App 的设计上 iOS 与 Android 也力求风格统...原创 2018-01-31 15:59:10 · 974 阅读 · 2 评论 -
另类实现 ScrollView 下拉头部放大
1 前言前两天接到一个在列表下拉时头部放大的需求,也就是这样的效果:2 思路查了查资料,这样的效果一般都是通过自定义 ScrollView 来实现,不过我总觉得这样挺麻烦的,需要去修改原来的 XML 文件,而且局限性也挺大,需要缩放的控件必须放在第一个,在看了别人实现的思路(自定义scrollView实现顶部图片下拉放大)后,决定自己用一个工具类来实现这种效果。在上面那位前辈的...原创 2018-10-28 20:26:09 · 490 阅读 · 0 评论 -
RecyclerView 通用适配器封装
有很久没有写博客了,主要还是因为小 baby 的诞生,忙前忙后,跑来跑去的很少有整片整片的时间静下心来写博客,现在小楠终于回北京了,自己利用 SpringBoot 搭建博客也基本完成了,终于有了自己的个人博客。这段时间虽然没有写博客,但是平时也不是没有积累,只是零零散散的记在本子里,现在准备慢慢整理成博客记录下来。第一篇还是来一个我觉得比较满意的,在做公司项目时,吸收了网上其他人的思想,封装了 ...原创 2018-10-09 22:55:50 · 1959 阅读 · 5 评论 -
RecyclerView 粘性(悬浮)头部
感谢【Android】RecyclerView:打造悬浮效果RecyclerView分组悬浮列表上图来自于网络,上图的列表中有一个悬浮的粘性头部的效果,现在这种效果的需求比较常见了,像通讯录,展示城市列表,还有一些咨询类 App 分类时都会见到这种效果。如果用 ListView 来实现,可谓是十分麻烦,而且查了查相关资料并不多,如果用 RecyclerView 的话,实现这种效果简...原创 2018-10-17 21:00:20 · 2001 阅读 · 0 评论 -
图片验证码控件
现在的应用各种验证方式五花八门,从最开始的数字验证,到后来的数字图片变成动态图,再到图片验证,还有 12306 那令人发指的:无论方式怎么变化,都是为了保证有人使用机器恶意注册、登陆等,加大服务器的负担和消费。最近是简单实现了一下图片验证码,在优化过一次后决定记录一下它的实现原理。最后的效果是这样:1 思路首先,我们需要对图片进行处理,从中挖取一个用于验证的拼图原创 2018-02-07 21:12:48 · 457 阅读 · 0 评论 -
Android 显示原生Emoji
灵感来源于:http://blog.csdn.net/Alpha58/article/details/53449013 1 前言现在人们在聊天中越来越喜欢发表情了,文字毕竟比较生硬,有时候一个合适的表情,能更准确地传递我们想要表达的意思。除了一些火热的表情包之外,emoji 也是备受喜爱,这些表情或搞怪、或呆萌,比起之前的 QQ 表情包可以说有过之而无不及。它们都能让别人一眼就看出你现...原创 2018-02-09 15:37:36 · 19079 阅读 · 3 评论 -
Android TouchEvent 事件传递机制简单理解
Android事件传递机制是一个常用的知识点,在看过很多资料后,我也记录下我对事件传递机制的理解。Android事件传递机制就是当一个触摸事件发生后,从一个窗口到另一个视图,再到另一个视图直到被消费的过程。原创 2017-05-15 14:46:59 · 1504 阅读 · 0 评论 -
自定义控件之 SubmitBotton (提交按钮)
在 Android 中我觉得除了实现很多功能性很强的需求之外,最吸引我的就是各种炫酷的自定义控件,但是自定义控件这个东西没有办法用一种固定的模式来讲解,因为自定义控件都是根据需求来定制的。同时这也说明只要程序猿牛逼,就没有实现不了的功能。从事实际开发一年多,其实感觉自己的技术成长得很慢,很多东西自己还是处于模仿的阶段,很希望自己能够创新出一种库,自己能够让技术流行起来。之前有看到一个效果:原创 2017-08-10 12:33:31 · 1118 阅读 · 0 评论 -
Android动画(二)之帧动画(DrawableAnimation)
动画其实就是一帧一帧的画面顺序播放,造成的视觉上的残留来起到连贯的效果,帧动画就像放电影一样,把一组画面帧放在一起,然后这些画面帧就像电影胶片一样被顺序播放。帧动画也很简单,也可以通过Java代码或者xml代码实现。我找到一个 .gif 图,然后用软件把它的全部帧分解,把这11帧全放到工程里,然后在drawable 文件夹下新建一个xml文件:<animation-list xmlns:原创 2017-05-19 23:23:48 · 356 阅读 · 0 评论 -
View的自由拖动(属性动画的实践之一)
View的自由移动原创 2017-05-25 22:22:50 · 677 阅读 · 0 评论 -
从零开始学习RecyclerView(一)
在初接触Android的时候,如果需要显示一列表的数据,我们刚开始想到的肯定是ListView、GridView,还有甚至ExpandableListView,,但是随着Android的不断发展,需求的不断深入,ListView这类基本控件已经越来越满足不了开发者的要求了,所以,Google在support v7包中,加入一个新的控件——RecyclerView。这个RecyclerView结原创 2017-04-21 09:25:20 · 1829 阅读 · 0 评论 -
从零开始学习RecyclerView(三)
在另一篇文章“从零开始学习RecyclerView(二)”中,已经介绍如何为RecyclerView的item添加点击和长按事件的监听器,但是监听这些事件肯定得做某些操作,不然监听了也没有什么意义,这篇文章就记录一下如何对RecyclerView的数据进行操作,大家可以结合点击事件来实现点击修改数据或者长按删除数据等,还有记录一下如何为RecyclerView添加分割线,同样,这篇文章也是建立在之原创 2017-04-23 13:33:59 · 954 阅读 · 0 评论 -
利用MediaCodec对音频编解码
利用MediaCodec对音频编解码原创 2016-09-13 14:34:51 · 8924 阅读 · 6 评论 -
android下实时传输h264并播放
利用android自带的MediaCodec,解码Socket实时传输过来的H264视频数据,通过SurfaceView播放原创 2016-11-21 11:02:01 · 16822 阅读 · 12 评论 -
最基本的Socket通信
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。Socket是网络通信的一种方式,它的原理和详解,作为一个职场小白,我也了解得不是很透彻,在这里就不妄加论述了,只是说说socket最基本的用法。首先是服务端:import java.io.ByteArrayOutputStream;import java原创 2016-11-21 10:45:42 · 1255 阅读 · 0 评论 -
int和byte[]互转
之前的项目中,在Socket通信的时候需要传int类型的值,不过java中outputsteam貌似不能直接传int类型,只能传byte[],所以在这里记录一下int和byte[]互转的方法。 /** * int转byte[] */ public static byte[] intToBytes(int i) { byte[] bytes = new byte[4]; byt原创 2016-11-21 10:39:11 · 1367 阅读 · 0 评论 -
转换音频采样率
对于音频采样率转换的一种较简单的方法原创 2016-09-18 10:46:56 · 10717 阅读 · 10 评论 -
Android动画(一)之补间动画(Tween Animation)
一直都很喜欢 github 哪些看起来很炫酷的控件,其实主要就是动画效果看起来很棒,以前老以为动画很难,总是找现成的来用,但是其实原理很简单,抽空学习了下,在这里做一下记录。Android 的动画分三种,补间动画(Tween Animation)、帧动画(Drawable Animation)、属性动画(Property Animation),有的面试题会问到 Android 动画分几种,有的原创 2017-05-19 23:22:18 · 378 阅读 · 0 评论 -
打造自己的RecyclerView(二)之下拉刷新和上拉加载更多
上一篇博客记录了如何为RecyclerView添加头布局和脚布局,添加这个有什么用呢,当然主要是为了下拉刷新和上拉加载更多了,不然单独的添加两个布局也没有多大意义。为RecyclerView添加HeaderView和FooterView传送门上代码:首先需要先将HeaderView和FooterView设置为不可见(以HeaderView为例,FooterView原理差不多,一会儿原创 2017-05-14 18:27:49 · 416 阅读 · 0 评论 -
自定义控件之 Gamepad (游戏手柄)
这段时间自己在复刻一个小时候玩过的小游戏——魔塔,在人物操控的时候刚开始用的感觉 low low 的上下左右方向键原创 2017-08-12 18:25:21 · 8528 阅读 · 4 评论 -
Android 悬浮窗基本使用
很多 iPhone 用户都喜欢打开一项设置,那就是 AssistiveTouch ,我们俗称小白点,它位于整个屏幕之上,就像是漂浮在所有的 App 之上。Android 手机上也有很多应用有这样的东西,比如 360 或者其他主要是手机管家之类的软件。在之前的公司项目中也有用到这样的悬浮窗,虽然权限有些敏感,但是还算是比较常用,所以在这里记录一下它的基本使用。原创 2017-07-13 12:04:38 · 10148 阅读 · 1 评论 -
ConstraintLayout 属性说明
以前在刚培训的时候提到的常用布局方式有 LinearLayout(线性布局)、RelativeLayout(相对布局)、 FrameLayout(帧布局)、TableLayou(表格布局)、AbsoluteLayout(绝对布局)、GridLayout(网格布局)。面试中一些过期题目常会问到常用的五种布局也就是刚才的前五个,而我们在开发中使用频率最高的也还是线性布局和相对布局,我以前的使用经验是布...原创 2017-07-17 13:12:53 · 2513 阅读 · 0 评论 -
Paint 和 Canvas 类常用方法说明
自定义控件是 Android 开发很吸引人的一部分,各种私人定制的效果和各种炫酷的效果都需要通过自定义控件来实现,而在自定义控件中,最常用的两个类也就是 Paint (画笔)类和 Canvas (画布)类了,所以在这里记录一下它们的常用方法,对实现自定义控件也会有一定帮助。1 Paint类的常用方法1.1 与 Text 相关的常用方法public void setTextSiz原创 2017-07-22 14:59:34 · 814 阅读 · 0 评论 -
PopupWindow 的基本使用
我们在开发中经常需要弹出提示信息或者弹出一个子框框用来让用户选择一些细节化的东西,我们可以选择用 Dialog 对话框来实现(官方貌似更推荐用 DialogFragment 来替代 Dialog,这个今后再说),也可以选择一个弹出框 PopupWindow 来实现,我在开发中也使用了很多次 PopupWindow 了,也记录一下它的基本使用。基本效果就像这样的:1.基本使用原创 2017-07-14 10:01:21 · 356 阅读 · 0 评论 -
ViewPager 无限循环的两种实现方式
以前第一次学 ViewPager 的时候其实老师就讲了如何实现 ViewPager 的无限循环,以及自动轮播、添加小圆点等,但是在后来的项目中却没有实际用到过这些功能,导致都有些忘了。前几天看到一个效果:这个效果 Android 有个控件叫 Gallery 挺好实现这种效果,但是在 API 16 的时候这个控件就被弃用了,现在基本都是用 ViewPager 来实现图片的轮播了原创 2017-06-12 10:31:14 · 1429 阅读 · 0 评论 -
android6.0获取蓝牙mac地址
android6.0获取蓝牙mac地址原创 2016-09-13 17:30:20 · 9061 阅读 · 10 评论 -
JNI学习笔记之Java端
最近公司新产品方案设计的时候在考虑用JNI,奈何从来没用过JNI,于是网上大肆找教程,对比几篇后发现这一篇教程不错,在这里贴上链接:http://www.cnblogs.com/youxilua/archive/2011/09/16/2178554.html首先了解一下Android平台框架,Android平台分为:Application ------>程序应用层Appli原创 2016-11-02 09:51:01 · 1155 阅读 · 0 评论