自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 问答 (1)
  • 收藏
  • 关注

原创 FragmentDialog常见问题

@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { initView(); View contentView = inflater.in...

2019-03-31 20:05:58 1054

原创 Rretrofit文件上传

一、 说明1.文件上传一般用post请求2.文件上传的API接口中不能带@FormUrlEncoded参数3.一般要携带@Multipart(上传文件的标志)4.接口范例:@Multipart@POST("UploadServlet")Call<String> uploadFile(@PartMap Map<String, RequestBody&gt...

2018-09-26 22:17:15 525

转载 java动态代理、Proxy与InvocationHandler

1、代理的基本构成  抽象角色:声明真实对象和代理对象的共同接口,这样可在任何使用真实对象的地方都可以使用代理对象。  代理角色:代理对象内部含有真实对象的引用,从而可以在任何时候操作真实对象。代理对象提供一个与真实对象相同的接口,以便可以在任何时候替代真实对象。代理对象通常在客户端调用传递给真实对象之前或之后,执行某个操作,而不是单纯地将调用传递给真实对象,同时,代理对象可以在执行真实对...

2018-07-30 19:29:01 255

原创 Git常用命令

创建目录$ mkdir learngit$ cd learngit$ pwd初始化仓库$ git init添加到缓存$ git add file1.txt提交本地仓库$ git commit -m "add 3 files."查看仓库状态git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。比较不同https://ww...

2018-05-29 00:08:46 247

原创 美团多渠道打包工具walle及结合python实现界面化快速打包

项目地址https://github.com/BinZhiLy/-walle-Python-.gitWalle(瓦力):Android Signature V2 Scheme签名下的新一代渠道包打包神器瓦力通过在Apk中的APK Signature Block区块添加自定义的渠道信息来生成渠道包,从而提高了渠道包生成效率,可以作为单机工具来使用,也可以部署在HTTP服务器上来实时处理渠道包Apk的...

2018-02-23 11:51:21 6866

原创 集成React Native到现有原生app的方法

经过测试,集成到原生的官方文档老旧存在很的bug,之后通过命令行创建完成项目研究其原生目录结构后总结出正确的集成RN已有原生app方法命令行创建项目的方法可以参考官方文档,这里主要对集成rn到原生项目进行介绍集成RN后的目录结构如图1. 创建/修改 Android 项目用 Android Studio 创建一个 Android 项目,注意 Minimum SDK 要设置为 API 16 或以上,因...

2018-01-01 15:06:16 594

原创 ViewPager使用详解和相关技巧之禁止滑动和滑动到最后一条时的监听等方法

ViewPager在开发中的使用频率非常的高,此做个总结,本文包括以下几方面:ViewPager的简介和作用ViewPager的适配器ViewPager实现小圆点指示器效果ViewPager禁止滑动ViewPager滑动到最后一条再次滑动的监听1.ViewPager的简介和作用ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前

2017-11-04 14:09:21 4719

原创 Android动态权限管理及封装

权限是一种安全机制。Android权限主要用于限制应用程序内部某些具有限制性特性的功能使用以及应用程序之间的组件访问。在Android6.0之前,我们只需要在AndroidManifest.xml文件中直接添加权限即可,但是在Android6.0之后,我们只在AndroidManifest.xml文件中配置是不够的,还需要在Java代码中进行动态获取权限。当然这里不是所有的权限都需要动

2017-10-21 10:20:19 3471

原创 Weex的环境搭建及集成到Android Studio和趟过的坑

简介Weex 是一套简单易用的跨平台开发方案,能以 web 的开发体验构建高性能、可扩展的 native 应用,为了做到这些,Weex 与 Vue 合作,使用 Vue 作为上层框架,并遵循 W3C 标准实现了统一的 JSEngine 和 DOM API,这样一来,你甚至可以使用其他框架驱动 Weex,打造三端一致的 native 应用。前期准准备已经安装了JDK versi

2017-09-16 11:35:01 6496

原创 android四种启动模式

首先说下什么是Activity,按照我的理解,我们在手机上看到的每一个页面都是一个Activity,包括系统的桌面,也是一个Activity。要启动一个Activity有四种模式:standard(标准启动模式)、singleTop、singleTask、singleInstance。 注: Aty1_1和Aty2_1为两个不同的Activity,Aty1_1和Aty1_2为同一个Acti

2017-08-20 23:04:05 2038

原创 GreenDao使用和升级详解

greenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM解决方案。关于greenDAO的概念可以看官网greenDAO是是是沙发时的发生

2017-07-10 11:23:23 987

原创 WebView问题及解决方案

随着h5的普及, webveiw使用度越来越高,作为安卓的最复杂的控件,使用时会遇到一些头疼的bug,总结如下当拿到webview的时候,我们往往需要根据情况做一些配置,这个地方处理不到经常会出现问题 WebSettings webSetting = getSettings();//拿取设置的方法1 支持javaScript,现在很多界面使用了js,如果没有设置会导致

2017-06-22 11:20:34 1875

原创 Eclipse和Android Studio切换包名的方法

有些公司的需求我们需要更改包名或者一个项目通过切换两个包名来达到一个项目开发两种应用的目的,这个时候切换包名的方法就显的比较重要,一个项目切换两种包名实际比较少见冷门,网上资料也比较少或者不够详细,这里我给大家详细解答一下    首先我们需要知道,不同的应用是通过包名来区分的,所以更换包名后就可以达到修改包名的目的    先看老牌的eclipse    eclipse非常简单右键项

2017-05-14 11:26:22 1067

原创 Android调用系统打电话和发短信功能

一、打电话     1、添加打电话的权限在manifast文件中。           Android:name="android.permission.CALL_PHONE"/>     2、使用Uri.parse(String a)创建Uri。           Uri uri = Uri.parse("tel:"+1008611);     3、

2017-04-24 18:26:43 6925 1

原创 Android drawable不同文件夹的区别

首先Drawable资源分为xxhdpi,xhdpi,hdpi,mdpi,ldpi,分别为超超高密度400dpi(左右),超高密度320dpi,高密度240dpi,中密度160dpi,低密度120dpi。  目前的屏幕适配准备好xhdpi,hdpi就好了,太小的mdpi基本很少了,特别大的图可以再准备一套xxhdpi然后手机的屏幕又分为FWVGA,WVGA,VGA,HVGA,QVGA,其中

2017-03-24 09:30:05 858

原创 微信分享注意的BUG

微信分享对内容,标题长度和图片都做了限制,尤其是图片,不能大于32k,对于6.0.1的系统可能比这个范围还要小,所以使用的图片要注意大小,并且放在不同尺寸的文件下(如果不做处理小图片也可能不符合规定),为了保险起见,最后再用代码压缩一下,下面是方法,转自大神。解决方案:使用Bitmap自带的compress方法解决了这个问题源码如下:[java]

2017-03-14 16:56:30 2200

原创 Volley的使用及其工具类的封装

Android:Volley的使用及其工具类的封装一. Volley简介Volley的中文翻译为“齐射、并发”,是在2013年的Google大会上发布的一款Android平台网络通信库,具有网络请求的处理、小图片的异步加载和缓存等功能,能够帮助 Android APP 更方便地执行网络操作,而且更快速高效。在Google IO的演讲上,其配图是一

2017-02-26 08:45:52 844

原创 HTTP 常见状态码

如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot抓取网页时),服务器将会返回 HTTP 状态码响应请求。此状态码提供关于请求状态的信息,告诉 Googlebot 关于您的网站和请求的网页的信息。一些常见的状态码为:200 – 服务器成功返回网页404 – 请求的网页不存在503 – 服务器临时不可用下

2017-02-04 17:10:35 300

转载 Android JNI编程—JNI基础

文献来自于 http://www.jianshu.com/u/071991caaf4e 什么是JNI,怎么使用 JNI——Java Native Interface,它是Java平台的一个特性(并不是Android系统特有的)。其实主要是定义了一些JNI函数,让开发者可以通过调用这些函数实现Java代码调用C/C++的代码,C/C++的代码也可以调用Java的代码,这样就可以发挥各

2017-02-04 15:29:11 802

原创 java 设计模式之 -- 观察者模式

定义观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。观察者模式(Obse

2016-12-26 22:48:56 845

原创 java 设计模式之 -- 工厂模式

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会

2016-12-19 19:49:28 2077

原创 java基础知识

基础八种基本数据类型的大小,以及他们的封装类。八种基本数据类型,int ,double ,long ,float, short,byte,character,boolean对应的封装类型是:Integer ,Double ,Long ,Float, Short,Byte,Character,BooleanSwitch能否用string做参数?在Jav

2016-12-11 20:20:44 521

原创 java集合类详解

Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。Java集合类的整体框架如下:从上图中可以看出,集合类主要分为两大类:Coll

2016-12-11 19:21:14 2135 1

原创 wireshark抓包过滤方法

http模式过滤。如过滤get包,http.request.method=="GET",过滤post包,http.request.method=="POST"端口过滤。如过滤80端口,在Filter中输入,tcp.port==80,这条规则是把源端口和目的端口为80的都过滤出来。使用tcp.dstport==80只过滤目的端口为80的,tcp.srcport==80只过滤源端口为8

2016-12-11 19:14:53 4480

转载 java 设计模式之 -- 单例模式

java 设计模式之 -- 单例模式阅读 600收藏 382016-9-27原文链接:https://zhuanlan.zhihu.com/p/20831029java 设计模式之 -- 单例模式 —— 由 BobLam大宝 分享Java的Singleton设计模式的最佳实践与实例单例模式是GoF设计模式其中的一种并且属于创造的设计模式目录。定义上,这似乎是

2016-12-08 21:42:37 1694

原创 Android 程序员必须掌握的知识点 - 多进程和多线程

当某个应用组件启动且该应用没有运行其他任何组件时,Android 系统会使用单个执行线程为应用启动新的 Linux 进程。默认情况下,同一应用的所有组件在相同的进程和线程(称为“主”线程)中运行。 如果某个应用组件启动且该应用已存在进程(因为存在该应用的其他组件),则该组件会在此进程内启动并使用相同的执行线程。 但是,您可以安排应用中的其他组件在单独的进程中运行,并为任何进程创建额外的线程。

2016-12-07 19:23:51 1280

原创 美团城市选择源码解析

源码地址:https://github.com/helloworld107/CitySelect效果图源码分析   先从简单的来吧,先说数据,对于一个城市而言名字必须有的,其次因为控件还会有相关的导航字母,所以还需要每个城市的拼音,这样一个城市的实体类就完成了,因为城市数据量庞大,显然装在了一个数据库中,这样我们通过sqlite获取数据和查找也非常方便数据库放在

2016-12-01 22:53:26 48187

原创 教你如何实现淘宝天猫的首页可以滑动的gridview导航

源码https://github.com/helloworld107/MeituanDemon/new/master?readme=1效果图源码分析:我们应该知道一个不能滑动的列表图标可以用girdview或者recycleview来实现,如果可以滑动的话几乎都是考虑viewpager嵌套多个gridview,思路并不算很难,比较复杂的是需要考虑当数据传递进去后,每一页要显示相对应

2016-12-01 20:36:08 4261 1

原创 WebView详解

public voidsetWebView(String url){WebView webView = view.getWebView();mProgressBar= view.getProgressBar();//设置webview属性WebSettings settings = webView.getSettings();settings.setJavaScri

2016-10-25 20:35:57 1889

转载 5.0新布局CoordinatorLayout的酷炫动画

现在的一些app我们偶然会发现随着滑动toolbar出现消失或者扩大到一定程度的酷炫效果,比如知乎的toolbar,其实这是运用了5.0的新布局CoordinatorLayout,从单词来泛型就是“协调”,用来处理多个控件的依赖关系,一般都是两个我们先看一组动画CoordinatorLayout帮我们协调子View,它根据我们的定制,帮助我们协调各个子View的布局。我们先看一组动画图~

2016-10-25 20:35:09 1053

原创 自定义Recycerview支持多种类型,下拉刷新,上拉加载更多的适配器

先上代码,作者的返回类型方法直接使用了数据的角标,然后在createviewholder里面根据类型参数来判断具体的返回情况,这种写法我真的无力吐槽,非常醉了,直接把viewtype当成了position,而且类型增多肯定会增加判断,性能优化的负担,这表示类型数量会比请求数据还会多(因为包含轮播图请求尾),然后你还要考虑除正常数据的其他类型在哪?很坑爹,直接把我搞懵逼了,所以果断弃之,直接自己重写

2016-10-25 20:34:40 1266

转载 java8新特性

下面看看其中的一个实习类吧主页面的实现看起来非常简单吧,直接执行方法就可以了,因为呐presenter是接盘侠,这个锅背的好惨由于泛型限制,定义完接口再写这个实现类一些功能无法调用,其实可以先写一部分或者直接从presenter着手,最后再写实现viewpublic classDailyFragment extendsMVPBaseFragmentimplements

2016-10-25 20:34:06 826

原创 Retrofit网络框架搭建

本项目运用了很多新鲜前沿的技术,mvp+rxjava+retrofit+5.0系统新特性布局,recycerview,项目结构不算复杂,对于学习新技术的朋友有很好的教学意义,下面开始撸代码,分析一下该项目的核心知识点部分先看框架大体上工具类,自定义控件,适配器,bean实体类与mvc并没有任何不同,由于使用的mvp+rxjava+retrofit,差异的地方在于api获取方式,

2016-10-25 20:24:41 1082

原创 自定义Toolbar

由于在多个活动中都会用到toolbar,重复写代码布局显然会浪费更多的时间和精力,同时为了toolbar的灵活性和扩展性,所以实际开发会采用自定义控件的toolba自定义toolbar的布局<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" app:android="http

2016-10-15 23:09:18 616

原创 自定义轮播图HeadView

说到轮播图我们都不会陌生,常规的思想是通过listview或者recycerview的判断不同类型来去写轮播图布局并且做出判断,这样有一个缺点就是会增加适配器的代码量和复杂程度,根据高内度,低耦合的思想自然会把轮播图分开,于是listview有了addHeadView,recycerview虽然原生没有但是通过修改也可以达到添加头和尾的功能。下面重点说一下轮播图的实现。其实轮播图就是一个布

2016-10-15 23:07:23 558

原创 轮播图控件ImagerSlider的BUG你知道吗?

像淘宝,京东的安卓轮播图大家应该都遇到过,大部分的实现是做一个viewpager,我也推荐这种做法,比较灵活,方便修改。对于轮播github上有这么一个专门针对轮播的项目AndroidImageSlider,很不幸第一次用发现了BUG,浪费了数小时都没能解决,@Override public View initView() { View inflate = View.inflate(g

2016-10-09 22:12:37 2030 2

原创 支付流程简单逻辑分析

分类型listview对于分类型的listviewjson数据非常复杂,对于庞大的数据自然不会手动解析,肯定是用GsonFormat,fastgson这样的类来解析,同时再通过HiJson来分类查看类型做适当修改,需要注意是对于越界或者浮点数来代替,所以long对于整型,double对于小数可以规避这个错误,要知道解析不了的错误是不会报错的,直接卡死在解析方法里,根本就察觉不到,非

2016-10-08 23:05:38 4268

原创 Android 支付宝微信支付快速接入流程

搜索活动源码地址https://github.com/helloworld107/ShangGuiGu321Meida.git与大部分app类型,点击顶部的搜索框后直接跳转到搜索活动再做处理,这里搜索的内容直接通过相关api就可以返回相应视频播放的列表参数,本质上和读取本地视频区别不大,不过这里又嵌入了讯飞语言识别,说实话讯飞识别好大,竟然有8mb多,坑

2016-10-08 23:02:52 1595

原创 音乐播放器自定义控件歌词解析

源码地址https://github.com/helloworld107/ShangGuiGu321Meida.git自定义控件音乐歌词源码分析当前主流的歌词文件为lrc,和txt,先来看一下文件内容[00:03.51]荣耀 [00:10.30]作词:高晓松[00:12.30]作曲:钱雷[00:12.37]演唱:王晓天[00:20.03][00:21.82]你听

2016-10-08 23:00:18 1340

原创 常见算法

源码地址https://github.com/helloworld107/ShangGuiGu321Meida.git音乐播放器之活动写完服务终于可以在活动中调用了,看看源码吧这里aidl就可在连接成功里拿到他了,拿取也比较古怪,又用到了stub.asinterfacepublic classAudioPlayerActivityextendsAppComp

2016-10-08 22:52:58 3409

空空如也

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

TA关注的人

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