Android开发
文章平均质量分 70
简简单单_zz
这个作者很懒,什么都没留下…
展开
-
Android 补间动画、帧动画和属性动画开发大全
Android 动画一、前言二、动画2.1 动画分类2.2 补间动画2.2.1 平移(TranslateAnimation)2.2.2 缩放(ScaleAnimation)2.2.3 旋转(RotateAnimation)2.2.4 透明度(AlphaAnimation)2.2.5 组合(AnimationSet)2.2.6 TimeInterpolator 时间插值器2.3 帧动画2.3.1 实现2.3.2 优化2.4 属性动画2.4.1 ValueAnimator2.4.2 ObjectAnimator原创 2021-09-01 22:40:34 · 1641 阅读 · 0 评论 -
Android 解决TextView设置文本和富文本SpannableString自动换行留空白问题
TextView设置文本和富文本换行留白问题效果图对比解决方案效果图对比下面是设置普通文本的效果对比图: 下面是设置富文本的效果对比图: 解决方案重新测量文字宽度,设置换行: private void initAutoSplitTextView() { mTv.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {原创 2021-01-18 00:05:36 · 2699 阅读 · 1 评论 -
Android自定义View仿QQ计步器
自定义View仿QQ计步器欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用原创 2020-11-01 02:15:01 · 380 阅读 · 0 评论 -
Android约束布局ConstraintLayout 项目实战攻略
前言ConstraintLayout即约束布局, 在2016年由Google I/O推出. 从支持力度而言, 将成为主流布局样式, 完全代替其他布局, 减少布局的层级, 优化渲染性能. 且自AS2.3起创建新的Activity,默认的layout根布局就是ConstraintLayout。说实话这篇文章写的算是比较晚了,距离ConstraintLayout出现至今已经有一年了,所以再不学习就真的晚了原创 2017-11-21 15:05:40 · 3640 阅读 · 0 评论 -
Android Studio3.0中dependencies依赖由compile变为implementation的区别
前言Android Studio版本更新至3.0了,更新后,连带着com.android.tools.build:gradle 工具也升级到了3.0.0,在3.0.0中使用了最新的Gralde 4.0 里程碑版本作为gradle的编译版本,该版本gradle编译速度有所加速,更加欣喜的是,完全支持Java8。当然,对于Kotlin的支持,在这个版本也有所体现,Kotlin插件默认是安装的。一、依赖变原创 2017-12-06 21:53:52 · 11614 阅读 · 3 评论 -
Android中使用SVG实现炫酷动画效果
前言SVG,即Scalable Vector Graphics 可伸缩矢量图形。这种图像格式在前端中已经使用的非常广泛,而在移动端的开发中,遇到一些复杂的自定义控件或者动画效果,我们就可以考虑使用SVG。一.Vector Drawable1.1 矢量图与位图1.矢量图像:SVG是W3C 推出的一种开放标准的文本式矢量图形描述语言,他是基于XML的专门为网络而设计的图像格式 SVG是一种采用XML来原创 2017-11-27 23:42:06 · 4221 阅读 · 0 评论 -
Android仿新浪微博首页加号弹出菜单效果
前言最近公司项目需求要做一个类似微博的弹出动画,参照网上的资料和自己的修改实现了效果。先上图: 一、实现思路:1、截取当前窗口,对图片做高斯模糊处理,将处理后的图片做popupwindow的背景图片; 2、创建popupwindow,完成布局,View的移动范围是由父布局的大小决定的,就是只能在父布局的范围内移动; 3、给每个View添加进入动画,和退出动画,做延时;原创 2018-01-06 12:50:54 · 5860 阅读 · 1 评论 -
Android开发中Html.fromHtml(String source)方法过时的替代方法
前言我们在开发中难免会遇到一个字符串中有不同颜色的字体或者有不同大小的字体这样的需求,所以可能会用到Html.fromHtml(String source) ,代码如下:String str2 = "今天<font color='#FF0000'><small>天气不错</small></font>";tv2.setText(Html.fr...原创 2018-04-23 23:23:19 · 10164 阅读 · 1 评论 -
解决Android 8.0 WebView回退失效(判断canGoBack()和调用goBack())
前言最新开发项目使用WebView的时候发现华为手机判断是否能回退(canGoBack)的时候失效了,无论打开多少层网页,点击返回按钮都会关闭Activity,一开始以为是华为手机的问题,然后用其他版本高一点的手机测试也是一样(8.0版本),查阅了官方文档才知道是sdk的问题。问题Android 8.0开始WebView的shouldOverrideUrlLoading(WebView...原创 2018-04-23 23:38:23 · 7122 阅读 · 3 评论 -
最新的在原生Android应用中集成ReactNative
集成到现有原生应用把 React Native 组件集成到 Android 应用中有如下几个主要步骤:开发环境准备第一步:引入react-native第二步:添加react和react native模块第三步:添加ReactNative依赖第四步:在package.json文件中的scripts里面配置启动脚本1.创建一个index.js文件2. 添加你自己的 React Native 代码3.配...原创 2019-03-06 22:35:05 · 1626 阅读 · 2 评论 -
Android集合SparseArray的使用及源码解析
SparseArray使用及原理分析使用方法原理分析1.构造方法2.其他方法2.1 append方法2.2 put方法2.3 ContainerHelpers.binarySearch方法(二分查找)2.4 get方法2.5 gc方法优缺点和应用场景1.优点2.缺点3.应用场景使用方法SparseArray源码来自:android-28 android.util.SparseArray首...原创 2019-04-10 00:26:50 · 783 阅读 · 0 评论 -
Android异步任务AsyncTask原理(基于Android9.0)
AsyncTask原理前言AsyncTask介绍源码分析前言在Android开发中经常会通过线程去执行耗时的任务,并且在任务执行完之后通常会用到Handler来更新UI。虽然实现简单,但是有多个任务同时执行时则会显得代码很臃肿。Android提供了AsyncTask,它使得异步任务实现起来更加简单,代码更简洁。AsyncTask介绍AsyncTask是一个抽象的泛型类,它有3个泛型参数,分...原创 2019-04-15 01:09:44 · 1163 阅读 · 0 评论 -
Android EventBus 3.1.1最新源码分析
EventBus 3.1.1源码分析前言EventBus构造方法订阅者注册查找订阅者方法注册过程发送事件订阅者取消注册前言EventBus 是一款在 Android 开发中经常使用的发布/订阅事件总线框架,将事件的接收者和发送者分开;简化了组件之间的通信,使用简单、效率高、体积小!由于经常使用到,所以我们深入理解该框架的原理就很有必要了,下面我们就来分析一下EventBus原理。EventB...原创 2019-04-25 00:44:47 · 906 阅读 · 0 评论 -
Android多线程——线程池ThreadPoolExecutor详解及使用
Android线程池详解前言ThreadPoolExecutor线程池的分类FixedThreadPoolCachedThreadPoolScheduledThreadPoolSingleThreadExecutor基本使用前言在开发中经常会使用到线程来进行异步操作,但是每个线程的创建和销毁都需要一定的开销。所以就需要线程池来对线程进行管理。Android中的线程池来源于Java中的Execu...原创 2019-04-30 01:10:49 · 2522 阅读 · 0 评论 -
Android中常见的内存泄漏问题及解决办法
在android开发中,内存泄漏是比较常见的问题,但为什么会出现内存泄漏呢?当一个对象已经不需要再使用了,本该被回收时,而另外一个正在使用的对象持有它的引用从而导致它不能被回收,这就导致本该被回收的对象不能被回收而停留在堆内存中,内存泄漏就产生了。 内存泄漏有什么影响呢?它是造成应用程序OOM的主要原因之一。由于android系统为每个应用程序分配的内存有限,当一个应用中产生的内存泄漏原创 2017-10-30 16:05:27 · 612 阅读 · 0 评论 -
Android中WebView与HTML+Javascript的交互
在现在的Android开发中,很多的商业项目特别是电商项目使用了Android原生控件与WebView进行混合开发,当然不仅仅就是显示一个WebView那么简单,有时候还需要本地Java代码与HTML中的Javascript进行交互,这篇博客给大家介绍下如何实现Android与HTML+JS的交互。效果图:1、Android 调用HTML中的javascript脚本实现Android调用JS脚本是非原创 2017-10-18 22:30:28 · 942 阅读 · 0 评论 -
Android实现淘宝购物车
先上效果: 购物车实现使用的ExpandableListView,关于它的使用的就不在多说,网上的资料都非常多。 xml里面布局代码:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="htt原创 2017-07-05 17:04:18 · 6490 阅读 · 10 评论 -
Android自定义View绘制真正的居中文本
自定义view的步骤:1、自定义View的属性 2、在View的构造方法中获得我们自定义的属性 3、重写onMesure(非必须) 4、重写onDraw 1、自定义View的属性,首先在res/values/ 下建立一个attrs.xml , 在里面定义我们的属性,只定义三个,有文本、颜色和字体大小:<!--CustomTextView--> <declare-styleable原创 2017-06-20 14:59:23 · 3471 阅读 · 3 评论 -
Android贝塞尔曲线实现加入购物车抛物线动画
先上图看效果 步骤: a.确定动画的起终点 b.在起终点之间使用二次贝塞尔曲线填充起终点之间的点的轨迹 c.设置属性动画,ValueAnimator插值器,获取中间点的坐标 d.将执行动画的控件的x、y坐标设为上面得到的中间点坐标 e.开启属性动画 f.当动画结束时的操作获取控件在屏幕中的绝对坐标: int[] parentLocation = new int[2]; m原创 2017-06-20 15:47:01 · 3936 阅读 · 1 评论 -
Android 一个TextView中设置文字不同字体大小和颜色的最完整方法
在做项目的时候,经常会遇到过一行文字有两种颜色。有时候直接会想到用多个TextView来实现。今天就介绍一下更为简单的方法,用一个TextView实现。效果:这几个都实现了一行字有不同颜色,还有两个字体大小也不一样,我们下边一一介绍。首先xml代码:<TextView android:id="@+id/tv1" android:layout_width="wrap_c原创 2017-08-15 01:27:39 · 32489 阅读 · 6 评论 -
Android Studio打包签名 Signature Versions V1、V2的选择问题
最近Android Studio 打包的时候发现多了个签名版本V1和V2的选择:如下图:开始默认勾选的v2(Full APK Signature),在测试机上(5.0)一直都安装失败,后来发现和签名选择V1和V2有关系。官方解释:V1:通过ZIP条目进行验证,这样APK 签署后可进行许多修改,可以移动甚至重新压缩文件。 V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更原创 2017-08-25 11:22:44 · 5398 阅读 · 0 评论 -
Android 使用RecyclerView实现(仿微信)的联系人A-Z字母排序和过滤搜索功能
之前做项目的时候遇到一个需求是实现品牌的字母排序功能,网上的资料很多,但是有一部分有bug,这篇文章是我学习和解决部分bug之后的总结。今天带来的是RecyclerView的A-Z字母排序和过滤搜索功能。 首先上效果图: 重点:1、实现数据排序分类 2、实现右侧的字母导航 3、搜索这里使用了一个中文转化为拼音的工具包,即pinyin4j-2.5.0.jar。官网地址:http://pinyin4原创 2017-07-21 16:35:46 · 19459 阅读 · 11 评论 -
RecyclerView实现顶部悬浮、字母排序、过滤搜索最优雅的方式
效果: 这篇文章算是之前一篇的升级版,在上一篇的基础上新增了顶部悬停功能、波浪侧边栏和关于多音字的一个处理。 上一篇链接 : 《Android 使用RecyclerView实现(仿微信)的联系人A-Z字母排序和过滤搜索功能》 http://blog.csdn.net/silenceoo/article/details/75661590主界面布局代码:<?xml version="1.0"原创 2017-09-04 17:24:19 · 14073 阅读 · 18 评论 -
浅谈Android开发中的MVVM模式及与MVP和MVC的区别
三种架构模式的演化:什么是MVVM?MVVM是Model-View-ViewModel的简写。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTe原创 2017-09-05 11:36:58 · 1870 阅读 · 0 评论 -
Android手动编写ButterKnife编译时注解框架
我们在项目中经常使用ButterKnife注解等框架,那里面的实现原理是什么呢?其实内部原理比较简单,今天就跟大家一起分享一下。先上效果:这就是我用自己写的编译时注解框架实现的效果。MainActivity代码: Button btn1; @InjectView(R.id.btn2) Button btn2; @Override protected void on原创 2017-08-27 13:42:40 · 770 阅读 · 1 评论 -
众里寻它千百度——ButterKnife源码完全解析
一、概述在很久很久之前,自从朋友推荐我用butterknife后, 从此的项目再也离不开butterknife了。问butterknife的原理,估计很多人都会回答注解加反射。我一开始也是以为是注解加反射,然而看了源码之后发现不是用的注解加反射。那么下面我们就来分析一下ButterKnife的实现原理吧。本文基于ButterKnife8.6.0.二、ButterKnife用法做andr原创 2017-09-08 21:42:36 · 3659 阅读 · 2 评论 -
5分钟帮你打造一个快速启动的app(app启动分析与优化)
一、启动方式:(1)冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。(2)热启动当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然原创 2017-08-26 16:02:33 · 1598 阅读 · 1 评论 -
Android自定义View实现商品评价星星评分控件
先上图看实现效果: 首先在res/values/ 下建立一个attrs.xml , 在里面定义我们的属性,只定义三个,有间距、分值和是否可以编辑:<!--StarLinearLayout--> <declare-styleable name="star"> <attr name="margin" format="dimension|reference"/>原创 2017-06-28 15:55:09 · 3268 阅读 · 0 评论 -
Android开发中Button按钮绑定监听器的方式完全解析
按钮绑定监听器的几种方式: A:采用内部类的形式 1.自己创建一个内部类,实现OnClickListener接口,重写里面的onClick()方法. 2.在使用的地方创建一个内部类对象. 3.用button对象通过setOnClickListener(监听器对象)方法绑定监听器对象.public class MainActivity extends Activity{原创 2016-04-14 20:28:02 · 2814 阅读 · 0 评论 -
序列化Serializable和Parcelable的区别
Android中Intent如果要传递类对象,可以通过两种方式实现。方式一:Serializable,要传递的类实现Serializable接口传递对象, 方式二:Parcelable,要传递的类实现Parcelable接口传递对象。Serializable(Java自带): Serializable是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也原创 2017-06-19 16:59:58 · 1110 阅读 · 0 评论