
Android
宝华的小岛
生命不息,奔跑不止。
展开
-
扫码登录的简单实现-移动App端
程序结构如下:一、在app模块添加依赖 //动态权限 implementation 'com.tbruyelle.rxpermissions:rxpermissions:0.7.0@aar' //二维码扫描库 implementation 'com.google.zxing:core:3.2.1' implementation 'cn.bingo...原创 2019-10-08 12:40:33 · 2228 阅读 · 0 评论 -
两层fragment内层切换不显示的问题
做了一个小应用,外层大模块用了fragment,大模块内部的小模块也用了fragment,都是用viewpager管理。后来发现大模块切换之后,回到原来的模块,小模块内容不显示。开始怀疑viewpager管理有问题,于是在几个fragment中都遍置log测试生命周期函数,包括setUserVisibleHint和onHiddenChanged,但是明明看见调用了,就是没有内容。后来在网上看到原创 2017-05-26 12:11:18 · 889 阅读 · 0 评论 -
SwipeMenuListView滑动菜单的使用
如果使用到滑动菜单删除等功能,可以用到这个开源控件。一、添加依赖//滑动菜单ListView compile 'com.baoyz.swipemenulistview:library:1.3.0' 或者下载项目后依赖模块https://codeload.github.com/baoyongzhang/SwipeMenuListView/zip/master原创 2017-03-29 16:12:36 · 743 阅读 · 2 评论 -
第三方评分控件 RatingBar的使用
需要自定义RatingBar的样式。但是原生的RatingBar自定义很不方便,兼具无法调节,半颗星总是很难对齐,大小也不能自由调节。通过网络搜索,发现这是原生RatingBar本身的问题,很多开发者推荐使用第三方评分控件。一、添加依赖dependencies { compile 'com.hedgehog.ratingbar:app:1.1.2'}二、布局文件原创 2017-03-29 12:21:45 · 5800 阅读 · 1 评论 -
Volley的简单应用
Volley是一个轻量级的网络请求框架,主要包括字符串请求、json对象请求、图片加载和缓存图片加载四个内容。四个方面大致相同。json请求其实也算是字符串请求,我们一般习惯拿到json字符串之后自己去解析。首先下载volley.jar,把它放到libs,不需要add。在清单文件中添加权限。布局文件几乎都是按钮,另加一个图片控件。最后就是主程序原创 2017-02-07 00:15:40 · 234 阅读 · 0 评论 -
xUtils3的简单应用
xUtil3一共分为view、数据库、网络和图片加载四个模块。首先下载jar,并且导入as,添加到库然后写一个类集成Application,并且在清单文件中配置权限等等。public class BaseApplication extends Application { @Override public void onCreate() { sup原创 2017-02-06 22:37:05 · 310 阅读 · 0 评论 -
多图选择器MultiImageSelector的使用
首先下载MultiImageSelector,GitHub和优快云上面都有。新建一个app,给自己的app添加一个model。File-->new-->Import Model,找到MultiI-mage-Selector这个文件夹导入。等它构建完成。如果于大盘picasso一直构建不完,终止进程重启。我就是这样的。或者另外构建picasso的依赖。因为网和防火墙的问题,很无奈。原创 2016-12-21 02:10:30 · 3352 阅读 · 1 评论 -
属性动画入门
直接看代码就能明白,布局文件是一个ImageView和五个按钮。下面就是监听事件。@OnClick({R.id.btn_translate, R.id.btn_scale, R.id.btn_rotate, R.id.btn_alpha, R.id.btn_set}) public void onClick(View view) { ObjectAnimator ani原创 2016-12-20 19:53:05 · 342 阅读 · 0 评论 -
补间动画入门
第一种,用anim资源文件创建动画动画文件:between_anim_res.xml <translate android:duration="1000" android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="300" andr原创 2016-12-20 19:42:17 · 208 阅读 · 0 评论 -
帧动画入门
第一种,应用动画文件到背景:文件可以放到drawable文件夹,也可以放到anim文件夹<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/i原创 2016-12-20 19:35:47 · 327 阅读 · 0 评论 -
butterknife的依赖添加
butterknife-7.0.1和butterknife-5.1.2是以jar包的方式添加的。在eclipse+ADT中直接添加Add Build Path就可以使用。butterknife:8.4.0是以依赖库的方式添加的。在Model级的build.gradle中的dependencies部分添加一行:compile 'com.jakewharton:butterkn原创 2016-12-20 16:32:18 · 953 阅读 · 0 评论 -
Notifycation使用入门
notifycation有两种使用情况,第一种是只发消息,第二种是自定义布局显示,并且还可以对交互事件进行相应,类似于很多音乐播放器界面退出之后在通知栏显示简单播放条,可以控制。先发自定的布局文件:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_widt原创 2016-12-28 03:19:52 · 1198 阅读 · 0 评论 -
TabLayout联动Viewpager不显示图标的问题
以前都是用布局做容器来管理外层模块,直接使用fragmentmanager管理器来管理fragment,使用比较麻烦,一直想封装,可是没做完。ViewPager来管理很方便,但是在Tablayout和Viewpager进行关联的时候,设置的图标和自定义的View不能显示,只显示文字。这个文字是从adapter中获取的。检查Tablayout的源码,在populateFromPagerAdapter原创 2017-05-28 10:49:39 · 2702 阅读 · 0 评论 -
rtmp视频直播的简单实现
花了三天的时间,研究视频直播的采集、编码、推流,历尽艰辛,删减参考代码,多次实验,详细检查,终于自己另外写了一个demo。有一些地方还看不懂,我基本能看懂的地方做了详尽的注释。示例代码来自于github:https://github.com/runner365/android_rtmppush_sdk其中包括sdk。我分步骤,先实现采集,再实现视频推送,最后加上音频推送比较顺利原创 2017-05-30 21:49:25 · 2902 阅读 · 1 评论 -
扫码登录的简单实现-思路分析
要实现手机扫码登录,需要服务端、web前端和手机移动端App三方合作,大致逻辑流程是这样的。1. web端向服务端发出请求getScanCode,获取一个用于生成二维码的信息字符串,这个信息字符串包含表示此次登录的识别码,可以设计为安全token;2. 服务端收到web端的请求,会生成一个识别码,返回给web端,同时将其加入数据库,这个数据库可以是sql,也可以是nosql,我在这里为了移...原创 2019-10-08 11:46:11 · 960 阅读 · 0 评论 -
将Android封装库通过gradle部署到maven私服并依赖使用
结合上次创建一个Android基本封装库项目:https://blog.youkuaiyun.com/xxkalychen/article/details/95479191一、在需要发布的模块chrisbaselibrary下的build.gradle中添加以下部分//maven插件apply plugin: 'maven'//打包main目录下代码和资源的 tasktask android...原创 2019-07-12 13:57:19 · 637 阅读 · 0 评论 -
Gradle项目部署到maven私服
一、创建一个gradle项目,编写一个简单的类,便与测试二、在build.gradle文件中添加以下内容apply plugin: 'maven-publish'repositories { maven { //maven私服仓库 url 'http://maven.ai-ways.com/nexus/content/repositori...原创 2019-07-12 11:00:47 · 3016 阅读 · 0 评论 -
Gradle封装开发库生成arr包并在项目中使用
本人是个懒人,开发讲求效率,所以比较喜欢把常用的一些功能进行封装,正式开发的时候只需要关注业务。由于Android Studio默认使用Gradle管理项目,所以需要使用gradle来打包和管理封装好的库。这里只介绍简要思路。一、创建一个空白的app项目,这个项目只是用来做测试使用二、在这个项目中创建一个Android Library的module,取名chrisbaselibrary,用...原创 2019-07-11 15:27:23 · 1113 阅读 · 0 评论 -
Android使用JNI入门
使用JNI的必要性就不多说了,开始之前要下载NDK工具,在AS的SDK管理页面可以选择,配置好NDK的路径。新建一个项目,我的项目名为MyJniDemo。在布局中建一个TextView,用来显示我们最后调用的结果,这里不多说。创建一个类MyMathUtils,在其中创建一个静态的本地方法。我在上一个demo中创建的是普通方法,这里尝试静态方法。package com.chris....原创 2018-09-06 08:33:09 · 494 阅读 · 0 评论 -
创建AVD时unknown error异常的解决
不知道为什么,在运行AVD的时候导致Win7xt奔溃,重启之后所有的AVD被损坏,无奈重新建立,却出现unknown error,每一个AVD都是如此。查了一些资料没有解决,最后在用户配置文件夹.android下找到avd文件夹,全部删除重启,就解决了。原创 2017-09-10 10:29:47 · 10064 阅读 · 0 评论 -
基于retrofit网络请求token过期的处理逻辑
手机调用接口,关键数据请求需要验证token,token设置按照一定周期就过期。验证token需要判断token是否过期,如果过期就需要后台调用登陆接口获取新的token,并且用新的token替换原来的token,在后台继续完成原来未完成的请求。经过尝试,基本完成实现与优化。一、首先贴出接口代码,采用SpringBoot编写的简单接口:@RestControllerpublic cl原创 2017-08-31 15:42:34 · 2877 阅读 · 0 评论 -
自定义网络传输数据加密与解密
最近做一个电商类的APP,进行后台数据接口的调用。这期间涉及到财务账目的往来,自然很需要重视数据安全的问题。我没有搞过爬虫、抓包之类的技术,但是如果传输过程中的数据被抓,如果被破解了肯定会出问题的。所以我考虑自己做一个加密和解密的算法,在后台将数据打包后进行加密,APP拿到数据又进行解密。经过测试,基本实现了这个过程。首先,我要确定一个思路,就是如何进行加密。解密的过程是一个逆运算原创 2017-08-27 21:12:00 · 4242 阅读 · 0 评论 -
SpringBoot实现文件上传
用SpringBoot实现服务器,然后用java和html5实现客户端进行上传测试。一、服务器端接口程序。为省事就在controller中写了,正式的程序我喜欢放在service这一层进行处理调用。@RestController@RequestMapping("/file")public class FileController { /** * 单文件上传原创 2017-09-04 22:14:46 · 23975 阅读 · 9 评论 -
混合开发关键技术Java和JS互调并交换数据
研究混合开发,关键技术是java和js的方法互调,现在采用JavascriptInterface接口很方便,一段时间,解决不了的事返回值的问题。js调用java可以轻松拿到返回值,但是java调用js使用的是webview的loadurl(),这个方法拿不到返回值。搜到的资料也很少。多番琢磨,尝试采用会话的模式,java向js发出数据请求,调用js的一个方法,js在这个方法中反向调用java的一个原创 2017-06-16 12:21:20 · 1452 阅读 · 0 评论 -
使用WebSocket设计简单聊天软件的雏形
动机是要了解WebSocket,网购没有书籍,网上的资料也比较碎片化,接触这个有好几天了,没找到一个深入的有效途径。有朋友给我一个例程,但是由于搞不定Idea,所以也没有跑起来。网上很多例子,讲解都不完整,不是注释不齐,就是没交代环境配置。今天花了半天时间,把一个简单的IM系统的雏形弄出来。立即写一个博客,一方面有利于自己记忆,一方面也许能为其他和我一样的初学者指一条路。这个系统分三部分,服务原创 2017-06-05 18:24:12 · 1559 阅读 · 1 评论 -
自定义View:重绘进度条
最近下大工夫功课自定义View这一关。我把自定义View划分为八个类别,写完这八个类别,我就基本上弄清楚自定义控件的门道了。以下是我自己划分的八个类别:1.使用现有控件布局,对子控件进行格式化和监听,纯代码实现;2.使用现有控件布局,对子控件进行格式化和监听,带布局文件和属性文件;3.继承View,自己画一个,纯代码;4.继承View,自己画一个,带属性文件;5.继承现有控件,原创 2016-12-28 01:38:41 · 1510 阅读 · 0 评论 -
QRCode二维码扫描和生成
使用zxing的第三方抽取包,简单的几行代码就可以完成。首先,下载第三方抽取包libzxing将其按一个model导入到我们建好的app中,添加model引用,添加权限。注意:因为权限问题,我们在主程序代码中有一大段是对权限的请求,有注释。现在看代码:首先是布局文件:<LinearLayout xmlns:android="http://schemas.android.c原创 2016-12-25 01:23:43 · 11467 阅读 · 0 评论 -
灵活运用SearchView搜索框控件(一)
不多说,上代码。一、首先,写好布局,就是一个ToolBar,把主题设置为NoActionBar。纯熟个人习惯,用ActionBar也可以。二、创建menu文件。其中有个item只是为了给searchView提供自定义的提交按钮的。<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app原创 2016-12-15 17:56:36 · 2588 阅读 · 0 评论 -
Android应用socket即时通讯的实现
一、服务器思路:首先创建服务器,用一个死循环等候若干个客户端的连接。一旦有客户端连接,就把客户端添加到集合当中,并且启动一个新的线程来保持长连接,监控客户端发来的信息。一旦接收到有客户端发来的信息,就进行包装后遍历集合,把包装好的信息发送给每一个客户端。代码如下:/** * Tcp通信服务器 * @author Devin Chen * */public class CS原创 2016-12-21 15:51:40 · 11347 阅读 · 4 评论 -
Android简易录音机
这个相比照相机和录像机要简单多了。因为没有用到摄像头。上代码一、AndroidManifest.xml:<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.devin.simpleaudiorecorder"> <applica原创 2016-12-16 23:53:02 · 858 阅读 · 0 评论 -
Android简易录像机
直接上代码。一、AndroidManifest.xml<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.devin.simplevideorecorder"> <application android原创 2016-12-16 23:34:29 · 583 阅读 · 0 评论 -
Android自定义简易照相机
不多说,上代码,有注释。一、开权限<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.devin.camerademo"> <application android:allowBackup="true"原创 2016-12-16 22:46:03 · 906 阅读 · 2 评论 -
bindService报空指针错误故障排除
说起来不值一提。学过服务但是很久没有去用,没有研究里面的原理,用起来就出错误。以下是刚写的代码:service:public class MyService extends Service { public MyService() { } @Override public IBinder onBind(Intent intent) { re原创 2016-12-15 11:36:42 · 2022 阅读 · 1 评论 -
RecyclerView瀑布流的简单实现
首先建立布局。<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="ma原创 2016-12-15 21:38:03 · 354 阅读 · 1 评论 -
Windows 7遇上MySql安装不成功
今天重装系统,干干紧紧的安装版。驱动完成之后,开始安装开发软件。安装MySql时总是在最后一步失去反应,于是卸载,清理注册表,安装,不成功,再卸载。如此反复,几近奔溃。网上提到的那些方法都不起作用。想再重装,也不是办法。于是考虑装个绿色版,也就是解压版。官网进不去,速度慢不说,还要注册。找了几个绿色版本,和网上找到的教程又不温吻合。后来终于找到一个。http://dlsw.baidu.co原创 2016-12-06 21:39:52 · 491 阅读 · 0 评论 -
Android极光推送入门
今日接触推送,大概是因为下载了Demo,看到里面代码太多,有点惧怕麻烦,以为肯定挺复杂。幸好今天有时间,决定好好研究一下。才发现很简单。一切以文档为指导。现在就把我的入门过程记录下来。一、首先是要去极光推送网站注册帐号https://www.jiguang.cn/accounts/platform二、创建一个应用,Andoid应用只需要应用程序标题和包名。应用程序标题没讲究,以后只原创 2016-12-14 20:18:22 · 497 阅读 · 0 评论 -
Android圆形ImageView(二)
这个类不用依赖库,是一个纯代码的类,不需要配置文件,思路是做圆形切割,没涉及轮廓。要求原始图片必须是正方形。package com.devin.htmlplugindemo.view;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;i原创 2016-12-12 00:12:13 · 374 阅读 · 0 评论 -
Android圆形ImageView(一)
一、在Android Studioz项目中创建model,新建Android Library二、自定义控件CircleImageViewpackage com.devin.circleimageview;import android.content.Context;import android.content.res.TypedArray;import android.graphics.B原创 2016-12-12 00:04:32 · 432 阅读 · 0 评论 -
灵活运用SearchView搜索框控件(二)
实现自动完成。上代码。布局文件,在ToolBar下面加一个ListView。<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_mai原创 2016-12-15 19:21:16 · 1646 阅读 · 0 评论 -
滑动返回SwipeBackLayout
一、首先添加依赖compile 'com.loopeer.android.thirdparty:swipe-back-layout:1.0'二,创建一个新的Activity,继承SwipeBackActivity。public class Main2Activity extends SwipeBackActivity { private SwipeBackLayout sw原创 2016-12-15 20:02:24 · 488 阅读 · 0 评论