自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Android N以上使用Charles抓https包

最近开发一款app,调试接口的时候抓包~于是按照以往的经验给手机和pc装证书~一波操作猛如虎。最后发现不行~app全部接口都用不了。开始怀疑人生。后来看了https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/发现原来要进行如下操作才可以的~大概是说需要在res目录新建一个x...

2020-04-09 17:36:45 82

原创 设计模式:说说外观模式(Facade)

最近在学php框架Laravel,发现里面有很多Facade,所以特地去学习了一下,发现原来是某个设计模式。所以写下来做个笔记。例子那么对应到编程之中我们写的某一个功能可能需要调用到很多类,如果后续维护者去维护这个功能的时候也需要清除所调用的每一个类那时间成本太高,而且也不利于维护。各个类之间的联系太多,我们称之为耦合性过高。那么能不能有一个中间类就是为了这个功能服务的,我们只需要把所...

2020-04-08 15:02:31 29

原创 Android:RecyclerView实现横向滑动接近中间的Item居中效果

这个效果有点一言难尽,上个图吧。就是这个效果:当某个item移动到屏幕中间的时候停止滑动这个item会自动滑动向中间。有点像画廊那个效果,但是画廊的图片比较大。那么该如何实现的呢?刚开始我是自己计算的: override fun onScrollStateChanged(recyclerView: RecyclerView, newStat...

2019-12-10 20:43:23 794

原创 Android:记一个关于TabLayout的沙雕问题

在使用TabLayout+AppLayout做了个悬浮折叠多tab的效果之后(效果参见上一篇文章)发现点击TabLayout没反应折腾了好一段时间什么事件拦截反射重新设置onClick都试过没用,后来发现自己犯了一个很沙雕的错。先上代码:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:...

2019-03-22 15:36:40 84

原创 Android滚动多TAB悬浮头效果

Android滚动多TAB悬浮头效果先看效果图思路开始贴代码如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入先看效果图最近公司项目要实现类似这个效果于是自己...

2019-03-20 15:54:49 509

转载 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 255

原创 ubuntu mysql 默认密码 设置

好久没安装过mysql了,以前的mysql安装的时候都会弹出输入密码的。最近安装发现直接安装完成中途居然没有弹窗让我输入密码。这下懵逼了,没有密码怎么连接数据库? 先说说我的mysql和系统版本:Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)1.输入 mysql -uroot -h127.0.0.1 -p然后提示Enter pass...

2019-01-25 11:12:47 692

转载 Android开发中一些被冷落但却很有用的类和方法

来自:http://luckyandyzhang.github.io/Resources.getIdentifier :这个我 用过,记得以前做过一个皮肤切换功能,可以通过这个方法从皮肤包 获取皮肤资源。(皮肤包的资源名称和 主包的资源名称id 名是一样的,因此都是通过名称获取id ,而不是R.id.xxx)Android:clipToP

2017-09-05 14:37:55 263

转载 Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题

最近项目中遇到一个问题,用户第一次安装应用在系统的安装器安装完成界面有“完成”和“打开”两个按钮。当用户点击“打开”按钮进入用户注册页面进行手机号验证码发送和验证码输入等操作界面,若此时用户点击Home键切出应用到桌面,再从桌面点击应用程序图标试图切回应用完成验证码输入等操作时,应用重新走了欢迎页等步骤,此时之前从系统的安装完成界面点击打开启动的应用其实还在后面运行。然而当用户“完

2017-05-23 13:25:12 614

原创 设计模式-适配器模式(Adapter)

适配器模式(Adapter)适配器模式(Adapter) 讲一个类的接口转换成客户希望的另一个接口。大家对于适配器的这个名词应该不陌生了吧,在我们手机的充电器,电脑的充电器上都可以见到适配器三个字。电源适配器。通俗的解释手机电压最多就几伏特,而我们的家用电可是220v那怎么才能做到用家用电去给手机充电呢。适配器就充当了转换的角色。而另一个更加接近适配器模式的例子:翻译。英文不太好的人去到美国怎么跟当

2017-01-14 17:01:07 376

原创 Android性能优化

一.过度绘制:使用手机自带的过度绘制检测,然后在布局文件分析。二.Android图形渲染:减少非必须的view以及减少view的层级。    1.使用Hierarchy viewer:对正在运行的程序界面显示布局层级    2.节点性能分析:对渲染控件的速度进行显示。三.内存泄漏检测:内存泄漏会导致随着app使用时间越来越长占用的内存越来越多。而且还会导致卡慢甚至崩

2016-12-01 10:25:33 295

原创 设计模式:代理模式(Proxy)

代理模式:为其他对象提供一种代理以控制对这个对象的访问仅仅一句话自然是说明不了代理模式是什么,我们先看看代码例子,什么事代理:举一个栗子吧,假设有个人家里有困难,A同学知道了这个人的情况,想捐点钱给他,但是又想做好事不留名,于是好心人让B同学帮忙把钱给这个人。那么我们先建一个People类:class People { String name; People(Stri

2016-08-31 17:12:28 417 1

原创 设计模式:装饰模式(Decorator)

装饰模式,从装饰两个字可以联想到我们身上的首饰啊衣服什么的。因此本文就以穿衣服为例子说说装饰模式。该例子的难点是用程序吧所需要的衣服按照正确的顺序串联起来控制。先简单说说装饰模式:装饰模式,东塔地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。按照笔者的理解,装饰模式就是将多个继承了同一个父类的对象嵌套起来。然后调用的时候按照嵌套的顺序

2016-06-17 16:33:12 482

原创 Android:四大组件之-----广播(Broadcast)

相信很多读者都与笔者一样,在刚学安卓的时候就接触到广播。但是并不知道广播其实也分好几种,我们刚学习使用的只是广播的其中一种:普通广播android的广播分为:普通广播,有序广播,本地广播,Sticky广播,四种。下面就为大家介绍一下这四种广播的区别与用法。一.普通广播 普通广播是异步的,通过context,sendBroadcast()发送。传递效

2016-06-16 16:17:03 946

原创 软件设计之 开放-封闭原则(OCP)

开放封闭原则:软件实体是可以扩展但是不可以修改。该原则有两个特性:1.对于扩展是开放的2.对于更改是封闭的往往我们在设计程序的时候都是根据现有的需求所设计的,以后需求的改变必然会令到软件的结构有所改变。怎样设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新版本呢? 开放封闭原则可以给我们答案。在实际开发中,绝对的对修改关闭是不可

2016-06-07 10:42:55 515

原创 软件设计之 单一职责原则(SRP)

单一职责原则:就一个类而言应该仅有一个引起它变化的原因(ASD)。笔者刚学编程的时候,是学c语言入门的。c语言是面向过程语言,刚开始习惯了,到现在写程序也会被面向过程思想所影响。到了面向对象编程(java)的时候,很自然地就会给一个类加入各种各样的功能,于是在一个类中写入各种各样的代码。但是这样做的弊端很明显,如果一个类的职责过多,就相当于把这些职责耦合在一起,一个职责的改变可

2016-06-03 22:56:16 380

原创 设计模式:简单工厂模式

简单工厂模式又叫做静态工厂方法模式,不属于23种设计模式中的一种。 简单工厂模式是工厂模式家族中最简单的一种。简单工厂模式具有以下优点:让外界可以从直接创建具体产欧诺对象的尴尬局面解脱出来,仅仅负责“消费”对象就可以了外界不必管这些对象究竟如何创建及组织的明确了各自的职责与权利,有利于整个软件体系的优化有优点自然会有缺点的,那么简单工厂模式还有什么不足的地方?、集中了所有实例的创建逻辑,

2016-05-26 11:29:05 328

原创 Android:Sqlite的使用

在刚接触android的时候就知道有SQlite数据库了,只不过向来对数据库不太感冒,因此做安卓一段时间了都不太会使用Sqlite。于是使用各种sqlite的框架,用以替代。比如郭霖大神的Litepal。不过使用第三方框架有时候也会出现各种问题,而且不懂sqlite的基本使用总感觉不太踏实啊。因此又一次重温了sqlite的知识。并写下来。Android为了让我们更加方便地管理数据库

2016-05-17 15:22:08 494

原创 Android:方向传感器

说起方向传感器,笔者最近刚好用到,在这里记录一下。上网找了一下,关于方向传感器的文章大多数都已经使用已经过时的方法。有一些则是解析过度,看完之后还是不知道怎样使用新的Api。1.旧的用法首先sensorManager获得方向传感器:Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);然后设置

2016-05-03 13:29:12 1174 1

原创 Android:让EditText不自动获取焦点

在使用EditText的时候如果界面中有EditText的话,刚打开这个界面的时候第一个EditText就会自动获取焦点。如果是想要用EditText监听焦点的话。那么就会捣乱了,监听的逻辑。或者在其它操作的时候也可能需要不让EditText自动获取焦点1.其它方法如何让EditText不自动获取焦点,笔者搜索了一下发现有几篇文章都说在第一个EditText前写一个LinearLayout

2016-04-13 17:01:12 4267

原创 Android:6.0运行时权限解析

android6.0发布好一段时间了,但是由于android手机厂商都要对android“深度定制”。因此很多用户都没有第一时间收到android6.0升级推送。笔者用的是魅族手机,到笔者写本编文章为止还没能升级到6.0系统。在这里吐槽一下bugme!android6.0的权限机制发生了较大的变化,特别是对于开发者来说要第一时间掌握如何对6.0的运行时权限进行适配。1.运行时权限的变化在a

2016-04-12 14:48:49 455

原创 Android:TextInputLayout的简单使用

今天看了一下同事新写的登录注册界面,发现点击输入框之后EditText中的hint有浮动动画。于是看了一下实现的代码,发现使用了TextInputLayout这个东东。1.效果一般我们在EditText中写的hint会对当前EditText输入内容进行提示,一旦输入内容之后该EditText中的hint就会消失。这样的效果不算很好。但是使用了TextInputLayout的EditTe

2016-04-09 14:46:46 584

原创 Python:使用property装饰器将方法转为属性

最近看了一下python,学习了点基础。本文就是在学习python过程中的产物之一。一来作为笔记方便日后参阅,二来写出来分享给python初学者。由于笔者的工作语言是java,因此可能回经常将python于java比较。一、property用途有时候在写程序中某些变量是由特殊的范围值的,就好像people中的age属性:年龄一样,总不可能是负数的吧。那么就要对该变量进行检查。一般的做法就是

2016-03-31 16:24:55 2027

原创 Android:EventBus的使用 从此消息传递变得简单

一首先要说的自然是我准备了好几秒钟的开场白:最近看别人的Demo看到一个有趣的框架EventBus,挺有趣,也挺好用。看名称个人理解成事件总线,这个总线负责接收发布者的信息转发给订阅者。不太会画图,暂且看看我用文字粗略表示的“图”:                          订阅者也就是说发布者在某处发布了一些信息,已经订阅了该信息的订阅者即可收到该信息。

2016-03-25 15:13:50 1678

原创 Android:官方下拉刷新——SwipeRefreshLayout基本使用

先说说废话实现下拉刷新可以有很多种方式,这里介绍一下官方的SwipeRefreshLayout,看名字就知道是一个Layout(果然废话),笔者觉得使用起来非常简单~~至于好不好看就看个人口味了~~~下面先上一张效果图:使用方法上图就是效果图了,虽然不是动图。但是请各位自行脑补一下刷新图标转动的画面哈。先看一下布局代码: <android.support.v4

2016-02-29 21:31:48 3829

原创 关于java Udp收发数据异常的笔记

笔者前段时间在android上用到udp相关的技术,一般来说无非就是接收与发送两个功能。于是笔者就分别开了两条线程分别创建一个DatagramSocket 去负责接收数据与发送数据。岂料出现了发送或接收不能正常进行的错误~~~然后在网上找到原因了:就是把接收和发送数据的操作都在同一个DatagramSocket上进行。笔者试了一下,果然一切正常进行~如果读者发生了笔者类似的错误,而且又

2016-01-12 17:21:43 1634 2

原创 Android:获取状态栏高度

有时候我们计算控件的位置,特别是自己画控件的时候需要用到各种屏幕高度,宽度,状态栏高度之类的值。获取屏幕宽高的方法网上一大堆,而获取状态栏高度网上虽然也很多但是很多已经过时了,并不能获取到真正的状态栏高度,往往获取到得值是0.那么笔者在这里介绍一种获取状态栏高度的方法:该方法用到反射机制只要通过反射机制获取系统R文件中的dimen类的实例,然后获取该实例中的高度属性:status_bar_he

2015-12-29 10:13:10 467

原创 Android:MediaPlayer播放音频

在安卓中MediaPlayer的应用范围很广,主要用于播放音乐与视频。本文主要介绍如何使用MediaPlayer播放音频。本文分为两个部分第一部分主要介绍播放本地音频,第二部分介绍播放网络音频。使用MediaPlayer播放本地音频文件首先准备一首歌曲,笔者使用的是ywasn.mp3,放在res/raw最简单的用法,莫过于直接创建MediaPlayer对象然后调用start

2015-11-26 22:21:33 3123

原创 Android:简单实现美女扒衣服小游戏

实现思路说说实现的大概思路,首先要有两副图片。这两幅图片的区别就在于一副有穿衣服,另外一副没有穿衣服,其他的细节都要一模一样。这对于懂ps的童鞋就好办啦自己动手制作就好了。但是本文为了照顾不懂ps的童鞋,提供两幅图片供大家使用~~图中美女不美各位不要吐槽哈~。A图:没穿衣服B图:有衣服的首先一开始是把A图放在屏幕上,然后再把B图覆盖在A图上。那样用户一开始看到的是B图。我们通过,监

2015-11-20 21:59:56 29755

原创 Android:图片不加载到内存获取图片的大小

在显示图片的时候往往图片大小并不合适我们手机屏幕大小,我们一般都会对图片进行压缩修改,达到节省内存的目的。那么我们可以怎样获取图片大小呢? Bitmap bitmap=BitmapFactory.decodeFile(""); Bitmap bitmap=BitmapFactory.decodeResource(res, id);我们可以使用以上两种方法,分别适用于获取sd卡上某个位

2015-11-06 16:48:17 6061

原创 Android:Service(三)——Aidl绑定远程服务

远程服务什么是远程服务呢?远程服务笔者觉得是相对于本地服务来说的。本地服务就是运行在同一个进程上的服务,而远程服务就是运行在其它进程上的服务。不同进程间的数据一般都是独立的,若要在不同进程间通讯就要通过特定的方法去沟通。android就提供了aild(

2015-11-06 10:08:07 3047

原创 Android:Service(二)——以绑定方式启动Service

关于Service的线程问题上一篇说了Service的基本使用:Android:Service(一)——Service的基本使用,其中有一点没有提到的是:在service上运行的任务也是运行在主线程上的,所以不要以为开启了服务就可以在里面尽情地做一些耗时任务。不然的话也会导致ui卡顿~可以做这么一个实验,在Activity上输出当前线程的Id然后在Service上也输出当前线程的id,就会发现

2015-11-05 15:17:31 4183

原创 Android:Service(一)——Service的基本使用

Service的基本信息service是androi中四大组件之一(Activity,Service,BroadcastReceiver,Content ProVider),作为四大组件之一可见Service的重要性。那么Service有什么用呢?Service是用来运行没有界面的任务,在后台默默无闻地工作。比如即时通讯软件需要监听服务器有没有新的消息,天气预报app需要定时更

2015-11-05 09:49:48 553

原创 Android:一键find控件,从此告别繁琐的findViewById

记得之前写过一篇博客叫做:你还在苦逼地findViewById吗?使用ButterKnife从此轻松定义控件此文是介绍在eclipse环境下使用ButterKnife的,相比传统的findViewById确实简单了点~但是笔者认为还不够简单~~在谷歌停止对ADT+Eclipse停止更新之后~笔者还苦苦在Eclipse坚持了几个月终于开始转移到Android Studio

2015-10-30 14:44:01 8712 1

原创 Java动态代理的基本用法

简介在开发中,我们可能会遇到一些类的方法不太合适我们实际的业务逻辑需求,而且我们不想或者不能修改该类的源码的时候我们通常会采用集成重写的方法去达到目标。但是也有些情况下使用继承重写不是那么的方便,那么这个时候我们可以用java的动态代理技术去实现。案例本案例用来演示java动态代理可能不太合适,但是主要是为了演示动态代理的用法,所以不必过于纠结,我们主要看用法!

2015-10-27 11:25:29 693

原创 JDBC与MySql:事务

什么是事务? 事务的概念:事务是指逻辑上的一组操作,这组操作要么同时完成要么同时不完成.案例:有一个很经典的银行转账案例,解释了什么是事务,事务的重要性:假设有a,b两个人分别有1000元,a向b转账200元,那么对应地在数据库的操作就是把a的余额值减200,给b的余额值加200。这两个操作分别是由两条sql语句完成的,那么假设在执行第一条sql语句之后数据库发生故障,

2015-10-21 15:21:41 727

原创 JDBC:使用PreparedStatement防止SQL注入

1.关于SQL注入什么是SQL注入:由于jdbc程序在执行的过程中sql语句在拼装时使用了由页面传入参数,如果用户恶意传入一些sql中的特殊关键字,会导致sql语句意义发生变化,这种攻击方式就叫做sql注入,参考用户注册登录案例。  首先看一下以下代码:String sql = "select* from users where username='" + userName

2015-10-20 14:35:38 14099 4

原创 JDBC:使用映射增加JDBC语句通用性

以下是一段使用jdbc连接MySql的代码:public static void main(String[] args) { Connection conn = null; Statement state = null; ResultSet set = null; try { // 注册数据库驱动 DriverManager.registerDriver(n

2015-10-16 16:03:37 526

原创 JDBC:JDBC资源释放的细节问题

在上篇博客介绍了jdbc的基本用法,其中有一段代码是这样的:public static void main(String[] args) { Connection conn = null; Statement state = null; ResultSet set = null; try {

2015-10-16 15:00:03 9165 6

原创 JDBC与MySql:手把手教你JDBC入门

之前写了一堆MySql数据库的操作方法,都是在cmd命令下操作的。那么我们在cmd窗口下增删改查对于我们实际开发也没什么卵用~因为我们写出来的程序总不可能需要保存数据的时候就打开cmd窗口插入几条数据,需要读取数据的时候就在cmd窗口查询一下,然后把结果复制到我们所写的程序中吧~显然数据库不是这么用的。    正确的使用方法是直接用程序跟数据库沟通,而笔者本身是android开发的,所以这里就

2015-10-16 11:11:25 8336

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