自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT_ZJYANG的博客

一个在奋斗路上的Android小生

  • 博客(44)
  • 资源 (5)
  • 问答 (2)
  • 收藏
  • 关注

原创 Android 玩转PathMeasure之自定义支付结果动画

概述最近在研究Android的路径动画,恕我直言,PathMeasure是个神器,可以帮助我们绘制任意的路径,只要你能draw出来的Path,它都能绘制出来,你可能会问,既然drawPath都可以了,要它何用? PathMeasure的强大之处在于它能够通过根据起点和终点截取某一段路径进行绘制,可以理解为对Path片段的绘制,然你可能还是会说:但如果再结合属性动画,那简直就可以为...

2019-02-24 17:09:42 499 1

原创 Android 自定义带入场动画的弧形百分比进度条

前言日常开发经常会有遇到使用进度条的地方,有些场景会需要使用圆形百分比进度条来更优雅地表示当前的进度,并赋予一些入场动画,使得页面更有活力(比如一些运动App,表示能量的进度条,消耗卡路里的进度条等等),给用户一种不断累积的视觉感。效果特性1.设置圆弧半径2.背景圆弧的粗细3.进度圆弧的粗细4.设置进度颜色5.中心文字大小 颜色 内容...

2019-02-15 22:27:33 1147

原创 Android疑难杂症大汇总

此文专门记载本人在开发过程中遇到的一些印象比较深刻的问题,以及踩过的一些坑,包括Gradle以及AndroidStudio都有,会一直持续更新~目录Android5.0以下(Android4.x)出现NoClassDefFoundError 运行项目时报错Error: Activity class {} does not exist.Error while Launching activ...

2018-10-27 18:08:59 624

原创 Android版本适配姿势之Android6.0

前言写这一系列的文章是因为刚好最近有个项目的targetversion需要升级到26,而在这之前是21,所以需要一下子适配6.0,7.0,8.0,顺便汇总一波需要注意的一些点,由于篇幅较长,因此分为3部分 概述本文主要是针对Android6.0需要适配的一些方法和注意事项,在Android6.0之前,我们在AndroidMainfest.xml里面声明的权限,都是在用户安装的时候就...

2018-10-16 00:27:14 949

原创 ViewPager封装轮播效果+指示器 实现一行代码展示轮播图

前言平时应用开发中首页经常会有一个Banner轮播的展示,不可避免的需要封装一个自定义View,在使用的时候能够方便的只用一句代码设置图片地址集合,就可以启动轮播效果,本文将通过ViewPager一步步对轮播图进行实现,最终效果如下:源码传送门:https://github.com/GitHubZJY/ZJYWidget里面还有很多实用的自定义View源码及demo,互相学习,互相进...

2018-09-02 22:39:54 1823 3

原创 Android自定义View之数字密码锁

距上次写博客已经快一年了,计划赶不上变化,种种原因加上自己的拖延症= =、 之前想好的每月一文还是没能坚持下来,趁着闲暇之余撸一篇,希望之后能够继续坚持总结的习惯。最近项目上用到一个密码加锁功能,需要一个数字密码界面,就想着封装成一个View来方便管理和使用。废话不多说,先上最终效果图:思路整体可分为2个部分来实现,1.顶部是4个密码位的填充;2.数字键盘部分。整体

2018-01-22 18:15:29 4151 7

原创 Java字符串类型String、StringBuilder、StringBuffer的区别

Java中关于字符串的类型主要有三种:String、StringBuilder、StringBuffer从可变与不可变的层面上讲:String是字符串常量StringBuilder和StringBuffer是字符串变量举个例子,如下代码片段:String s = “ab”;s = s + “cd”;这里表明上看是对字符串s重新赋了一个值

2017-03-01 13:40:26 732

原创 Android自定义彩色织带分割线

前言最近开发的一个产品需要涉及到订单,订单页涉及到了一个UI元素,类似饿了么的订单页以及支付宝口碑外卖订单页的彩带(通俗点讲就是一条两种颜色相间而成的分割线):         可以看到,风格基本都是以两种颜色为主相间拼接,至于长度则完全由屏幕宽度来决定,因此如果想要通过设计成图片素材来作为ImageView的背景的方式实现的话,效果并不理想,因为图

2017-02-10 00:00:59 1200

原创 Android百度地图开发之旅(一) 环境配置

前言现在的APP很多都会带有定位需求,本篇系列主要记录如何将百度地图SDK集成到项目中去,想要实现百度地图提供的功能,需要在百度地图官网注册开发者账号并且创建你的应用,获得所需要的key,将key填写到工程中并且导入相应的SDK文件,实现我们想要的定位功能。环境配置1.创建应用先进入到官网的API控制台,点击创建应用创建应

2016-12-14 01:10:33 1316

原创 图文讲解QuickSort快速排序算法(Java版)

什么是快速排序?快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。算法原理单单看以上解释还是有些模糊,可以通过实例来理解它,下面通过一组数据来进行

2016-11-30 14:28:54 36080 22

原创 Android如何一步步实现状态栏一体化效果

前言我们经常可以在App中看到这样一种效果:             可以看到,状态栏与App自身的标题栏融合在了一块,相比于原生黑色的状态栏,给用户的整体视觉效果更佳,那么如何实现Android状态栏一体化效果?实现在你所要实现沉浸的页面的Activity中添加如下代码://判断当前设备版本号是否为4.4以上,如果是,则通过调用se

2016-11-25 14:31:49 6983 14

原创 Android开发中ListView与EditText的冲突汇总

在Android开发中,有时候会遇到ListView中嵌套了一些EditText的情况,这个时候很容易发生一些冲突问题,解决方案列举如下。点击EditText弹出软键盘导致EditText焦点丢失和文本重置问题问题描述:点击EditText,弹出软键盘,会导致ListView调用getView()重绘,从而导致本来应该在EditText上的焦点被刷新而消失了,从而在软键

2016-10-13 18:21:22 7442 3

原创 Android打造通用标题栏——让你的App统一标题栏风格

前言在Android应用实际开发中,标题栏是App必不可少的元素之一(当然,不包括游戏),大部分情况下,系统提供的标题栏并不能完全满足我们的需求,就需要手动去编写标题栏布局,那么问题来了,如果是在Activity或者Fragment布局文件里面编写标题栏,那岂不是每一个页面的布局文件都要增加不少的代码,如果想更改一下整个app的标题栏的风格...(十脸蒙蔽),甚至有时候还会可能一个不留神写错了

2016-09-11 13:26:31 22711 11

原创 Android图像滤镜框架GPUImage从配置到应用

GPUImage简介GPUImage 是iOS下一个开源的基于GPU的图像处理库,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜。GPUImage for Android是它在Android下的实现,同样也是开源的。其中提供了几十多种常见的图片滤镜API,且其机制是基于GPU渲染,处理速度相应也比较快,是一个不错的图片实时处理框架。GitHub地址:https:...

2016-08-21 20:04:52 31340 31

原创 Android教你如何一步步打造通用适配器

前言在Android开发中ListView是最为常用的控件之一,基本每个应用都会涉及到它,要使用ListView列表展示,就不可避免地涉及到另外一个东西——Adapter,我们都知道,Adapter是连接数据和列表界面的一个桥梁,一般项目中一个listview就会有一个Adapter与之对应,然后就是一堆方法的重写,包括getCount,getItem,getView等等,遇到自定义布局时还需

2016-08-01 00:00:21 7994 6

原创 HashMap与TreeMap的应用与区别

Java中有许多封装好的数据结构类,比如List,ArrayList,Set,Map,Collection等,它们各自有各自的特点,其中,Map是属于键值对的集合,它提供key到value的映射,能够通过键来找到相应的值。一个Map中不能包含相同的key,每个key只能映射一个 value。本文主要针对其中两种经典常用的Map集合HashMap&TreeMapHashMap的使用:

2016-07-09 16:24:05 14152 3

原创 Android注解框架Annotations从配置到应用

最近在看一个新的基于注解开发的项目,了解到Android中同样存在一些注解框架,能够大大提高我们的编码规范和效率,减少代码量。本文主要分为两部分,针对较热门的注解框架Android Annotations在Android Studio上的配置进行详解。Android Annotations配置1.首先,一个框架需要有它的依赖包,Annotations框架需要使用两个jar包

2016-06-29 00:30:00 4246

转载 最全的Git操作要点大总结(从零开始)

Git使用教程 一:Git是什么?       Git是目前世界上最先进的分布式版本控制系统。二:SVN与Git的最主要的区别?      SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以

2016-06-10 13:14:15 1691 1

原创 Android ListView优化篇

在我的上一篇博客《Android ListView基础篇》中陈列了ListView和adapter的多种结合方式的基本使用,在本篇文章中将具体讲述如何处理好ListView的优化问题。在上篇文章的例子中,我们使用了一张图片和一个文本作为每一行的数据,发现效果已经完全达到了,而且没出现什么问题。但如果我们将Item的数量调大,比如调到1000、10000、100000条数据,这个时候当你

2016-06-06 16:14:12 3632

原创 Android ListView基础篇

本系列文章将为大家总结如何快速使用ListView以及做到高效的ListView,本篇博文介绍ListView的基本使用ListView&AdapterListView是Android中用来显示一个列表的数据的控件,几乎大部分的应用都会用到,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示,ListView继承至AdapterView,它的展示是要通过一个adapter来完成,adapter里面装载数据,ListView再通过adapter的数据来进行每一个Item的展示。如下图:Ad

2016-06-06 15:44:28 2026

原创 教你如何使用ViewPager+Fragment一步步打造顶部导航界面滑动效果

最近在整理以前的知识点,重新碰到了以前项目中的一个滑动分页的效果,就打算写这么一篇文章分享一下ViewPager的经典使用在许多应用中,我们常常用到这么一个效果:可以看到,由于现在的应用数据经常需要涉及到多个模块,所以常常需要使用滑动标签在多个页面之间跳转,实现这样的效果有很多种方式(比如系统自带的tabhost控件),但android-support-v4包中还为我们

2016-06-04 15:01:52 16529 16

原创 Android通知Notification的使用

我们经常可以在Android手机中下拉状态栏时可以看到有许多的推送通知,Android中专门提供了Notification来实现这种效果,如下:Notification的基本使用:创建一个NotificationManager类实例,用来发送通知NotificationManager manager = (Notification)getSystem

2016-06-02 13:33:13 3291

原创 Android四大组件之BroadcastReceiver详细解析

什么是BroadcastReceiver?BroadcastReceiver作为Android四大组件之一,在实际开发中也发挥着重要的作用,广播机制在Android程序通信中至关重要,广播其实与我们现实生活中的电台很相似,电台在某个频道上发送它的内容,那么只要有在收听这个频道的人都会收到这些内容。在Android中,广播也同样分为两个角色:广播发送者、广播接收者。Broadca

2016-05-25 17:02:11 4609 2

原创 Android深入浅出自定义控件(三)

在我的上两篇博文...中介绍了如何自定义View以及ViewGroup,自定义控件的话是从零写起,从无到有,但有时候我们还可以通过简单地重写系统自带的控件,来实现属于自己的控件,比如定义一个自己的弹框,定义一个个性化进度条等等,都是可以直接继承系统控件来重写。本文主要通过自定义一个带删除功能的EditText来学习如何重写系统控件,我们都知道,Android自带的文本框是没有删除功能,但是在许

2016-05-23 15:04:13 1041

原创 Android深入浅出自定义控件(二)

在我的上篇博文Android深入迁出自定义控件(一)中介绍了如何自定义View控件,本篇博文主要介绍如何自定义ViewGroup什么是ViewGroup?在Android的树状结构图中,ViewGroup类衍生出我们所熟悉的LinearLayout、RelativeLayout等布局:简单来说,ViewGroup其实就相当于所有布局的父亲,所以我们可以通过自定义

2016-05-21 16:39:50 5570

原创 Android深入浅出自定义控件(一)

Android自定义主要有3种,自定义View、自定义ViewGroup、继承重写系统控件本文主要讲解Android中如何自定义ViewAndroid打造自定义控件,大体的思路主要有以下五点:1.创建自定义属性,在res/values目录下创建attrs.xml文件,声明自定义控件的属性2.创建自定义View类,继承于View类,重写View的三个构造方法3.通过TypeArr

2016-05-20 15:57:26 961

原创 Android开发中的命名规范

Android编码规范包命名规范包(packages):采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为xxx(可以是公司域名或者个人命名),三级包名根据应用进行命名,四级包名为模块名或层级名。包名说明com.xxx.应用名称缩写.activities页面用到的Activity类(activities层级用户

2016-05-18 14:55:10 2049

原创 Android Fragment应用及原理

什么是Fragment?大多数人以前写项目的时候都是直接用Activity来构建每个页面,到了Android3.0之后,推出了Fragment,翻译成中文就是碎片,正好符合它的特质,Fragment其实就相当于Activity的“碎片”,它可以内嵌于Activity中,一个Activity可以由多个Fragment组合构建而成,Fragment可以有自己的控件、生命周期,可以接收和处理自己的事

2016-05-18 00:01:06 2742

原创 Android监听事件的回调机制

最近做项目的时候遇到了自定义弹框中输入的值无法返回的问题,需要用到回调,于是就上网查阅了许多资料,以下是本人对回调的理解,希望能够帮助有需要的朋友:先举个生活中常见的例子:A有一个问题要问B,B说:“把你的手机号码给我吧,然后你手机随时开机着,等会儿我回去查到结果了就打你手机”,当B查到了结果,就会马上打回A的手机号码,A就收到了结果。这就是一个完整的回调过程。然后再看

2016-05-15 14:38:39 7439 3

原创 Android之LayoutInflater加载布局及原理分析

相信以前写过Android的朋友都会经常遇到这么一个东西:LayoutInflater,可能许多初学者都是直接在Activity里绘制或者控制那个Activity里的内容(直接setContentView(布局文件)),但是当你需要在一个Activity里加载或者控制另外一个Activity的控件或者动态加载View时,你就会需要用到它。LayoutInflater的基本用法主

2016-05-13 01:07:36 2131 2

原创 浅谈UML类图中类之间的5种关系

什么是UML类图?以前学设计模式的时候一直迷迷糊糊,在画类图时经常分不清各种形状的线条之间的区别,到底依赖和关联有什么区别,聚合和组合又是什么鬼,今天学习之后终于真正了解,通过现实中的例子来解释区分它们类与类之间的关系类与类之间的关系可以根据关系的强度依次分为以下五种:依赖关系(Dependency)---关联关系(Assoc

2016-05-09 18:19:46 11626 6

原创 Socket通信详细解析(附例子)

什么是Socket?Socket,又叫套接字,是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。服务端的socket在服务端机器上特定的端口进行等待,客户端的socket绑定了服务端的IP地址以及它正在监听着的端口,所以两者通过IP和端口连接起来,就如同一条虚拟的通道。可以理解为我们现实中打电话的过程,当没有人打电话给你时,你的手机是处于监听等待的状态,一旦有人拨打了你的号码,就会收

2016-05-05 17:00:06 7458

原创 如何在myeclipse中开启两个console?

在测试客户端与服务端的通信中,我们经常需要看到两个端的实时情况,如何同时看到两个控制台并分别绑定两个端呢?myeclipse默认只有一个控制台,我们需要先打开多一个console窗口:在下端工具栏中点击 Open Console下拉,再点击 New Console View:这个时候会发现多了一个console启动其中一个java程序,比如服务端程序

2016-05-05 15:39:05 5992 4

原创 eclipse启动动画自动消失并且没有反应开启失败的解决方法

有时候eclipse在调试过程中出现问题,程序没有响应强制关闭,重启的过程中,eclipse开启动画只是出现一下就消失,开启失败解决方案如下,亲测有效:删除 [workspace]/.metadata/.plugins/org.eclipse.e4.workbench文件夹下的workbench.xmi文件重新启动eclipse,成功启动

2016-04-27 00:47:42 1016

原创 Android多线程机制详细解析

或许你曾经需要项目中进行后台工作比如数据库访问或者网络连接,如果你按照以前的做法,直接在点击事件或者onCreate方法中直接调用访问数据库或者服务器的方法,你就会遇到大多数Android程序员都遇到过的这么一个错误:android.view.ViewRootImpl$CalledFromWrongThreadException报出这个错误的原因?我们首先要来了解一下Android

2016-04-18 16:19:29 5033 2

原创 Android服务类Service详细解析

Service有什么作用?许多人不明白service是用来干嘛的,其实Service作为Android四大组件之一,可以理解为一个运行在后台的Activity,它适用于处理一些不干扰用户的长时间的后台操作,比如你播放器播放音乐之后跳到其它页面,音乐需要继续播放,那么这个时候就可以将音乐的播放一直运行在后台服务中,需要启动播放的时候就通过Activity去启动服务,再通过服务去调用播放,需要停止

2016-04-17 14:01:43 3485 2

原创 Android自定义标题栏

Android自带的标题栏样式非常的单调,有时候会想要自定义自己的标题栏样式,但是Android默认是不允许设定标题栏样式的,所以需要手动去设置它:首先,在java代码onCreate方法中【代码的顺序必须按照以下排,否则会没有效果】:super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_CUST

2016-04-11 11:48:11 870

原创 插入排序

什么是插入排序?插入排序其实就是指对于一个无序的数组,从下标为1的元素开始,每一轮都以此元素(即准备插入的元素)为起点,向着数组首元素(即array[0])的方向开始遍历,直到遇到比此元素小的数据项,则停止遍历,然后从这个数据项开始,其后的元素都后移一位,以腾出空间,再将一开始准备插入的那个元素插入到这个位置。插入排序代码: int finishKey; //当前准备

2016-04-09 12:01:26 918

原创 myeclipse如何更改字体颜色以及背景色

1.myeclipse如何更改背景颜色:打开myeclipse菜单栏的Window->preferences:打开preferences窗口后,依次展开General->Editors->Text Editors:在右侧显示的窗口中下方点击Background color,将SystemDefault的勾去掉,更改为自己喜欢的颜色:点击Apply或者OK,背

2016-04-08 14:09:52 26287

原创 选择排序

什么是选择排序?比如对于一个无序的数组,想让它从小到大排列,则使用选择排序规则如下:1.首先遍历整个数组,找到最小的元素,将它与数组第一个元素交换位置,完成第一轮交换2.经过第1步,最小的元素已经放在了第一位,接下来可以固定刚才选出来的第一个元素,而从第2个元素开始,同样遍历后面的元素,找到其中最小的元素,将其与数组第2个元素交换,即此时已经将倒数第二小的元素放在了数组第2位,完成第二

2016-04-05 11:08:34 879

自定义标题栏CustomToolBar源码

此标题栏可以作为一个app的大部分页面的公共标题栏,方便设置标题栏基本属性,提高效率,仅供参考

2016-09-11

Android图片滤镜框架GPUImage演示Demo

Android图片滤镜框架GPUImage的演示实例,可切换多种滤镜,调整饱和度

2016-08-21

ViewPager+fragment打造顶部导航界面滑动效果源代码

CSDN博文《如何使用ViewPager+Fragment一步步打造顶部导航界面滑动效果》一文所用到demo源代码

2016-06-04

Android带删除功能的EditText

博文Android深入浅出自定义控件(三)中demo所用到的所有材料以及源码

2016-05-23

Frament测试demo

Frament测试demo

2016-05-18

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除