Android开发
文章平均质量分 77
疯一样的雨
在最糟糕的日子里遇到了最幸运的人!
展开
-
RadioButton多行显示
日常使用单行的时候都是以列表的形式,如横向或者竖向,而一但需要多行显示的时候就不行了,如下面的效果图:实现这样的效果图有以下几种思路:使用RadioGroup竖向布局。中间嵌套LinearLayout来使用。但是这样RadioGroup会失去单选的功能,因为所有的RadioButton必须作为RadioGroup的子view才行。分2行RadioGroup。使用RadioGroup的setOnCheckChangeListener来监听,当选中的radio是属于group1的时候,使用group2原创 2020-10-21 15:27:33 · 1026 阅读 · 1 评论 -
TextView显示多个空格
有时使用TextView时需要在文字间显示空格,但是又不想用2个textview来实现,这时有2种方式可以实现TextView文字之间空格。在xml中直接填写文字,如:android:text=“你好 hello” // 显示 你好 hello(中间2个空格)1的写法虽然解决了问题,但是不利于语言国际化,一般字符串显示都是通过资源文件string来实现的...原创 2019-12-24 14:28:06 · 810 阅读 · 0 评论 -
Mac系统配置Android Studio的gradle命令
前言:一般我们打包apk都是用的AndroidStudio直接签名生成,这就造成了很多人不知道gradle除了可以用来配置依赖外,还可以用来编译生成apk。还有就是,在使用apk插件框架的时候,就需要使用gradle来编译apk,否则会出错。这里说的是mac系统下配置gradle。找到Android Studio应用图标在Mac"应用程序"里面找,找到后使用control键+点击,然后选...原创 2019-12-19 17:25:32 · 1470 阅读 · 0 评论 -
gradle更换版本号错误
想使用插件化框架来帮助业务分离,于是用到滴滴开源的VirtualAPK框架。但是在将gradle版本从3.4.1更换到3.1.0时,报了以下故障:解决方法1、将style里面的主题theme换成:Theme.AppCompat.Light.NoActionBar2、将build.gradle里面的implememtation ‘androidx.appcompat:appcompat:...原创 2019-12-19 15:37:47 · 224 阅读 · 0 评论 -
TextView显示多个空格
有时使用TextView时需要在文字间显示多个空格,如“你好 hello”,但是又不想用2个textview来实现,这时有2种方式可以实现TextView文字之间空格。1. 在xml中直接填写文字android:text=“你好 hello” // 显示 你好 hello(中间2个空格)2. 上述写法不利于语言国际化,一般都是通过资源文件string来限定文...原创 2019-11-20 09:56:59 · 456 阅读 · 0 评论 -
Android Studio更新后3.0.1后出现re-download问题
错误如下图所示: 原因:没有下载有相应的gradle包,且尝试下载失败(可能跟“墙”有关) 。解决方法: 1、打开gradle-wrapper.properties文件,将网址中的https改为http,然后重新同步下载相关组件即可。 更改前: 更改后: 2、将这里的文件路径改为跟之前能正常使用的一样。...原创 2018-02-09 17:28:58 · 647 阅读 · 0 评论 -
升级android studio3.0 在xml中新增资源ID找不到
升级android studio3.0后发现新增的资源ID(包括string等资源)提示是找不到的,即使将新增的ID复制进去也是提示错误,但是编译或者clean后就可以恢复正常了。但是没有以前那样能自动识别编译。**解决方法:**在build.gradle的defaultConfig中新增下面语句:manifestPlaceholders = [UMENG_CHANNE...原创 2018-03-15 13:47:18 · 4807 阅读 · 6 评论 -
springboot2.0 + websocket + android客户端实战
简介WebSocket是HTML5中的协议,支持持久连接,可以有效解决客户端和服务端之间数据数据同步时需要轮询的问题。效果图服务端创建web工程(此处省略)引入websocket maven依赖(springboot2.0以上才支持)找到工程的pom.xml文件夹,添加以下依赖。<!--websocket springboot2.0以上才支持-->...原创 2018-07-14 11:07:09 · 7549 阅读 · 3 评论 -
Android Studio CMAKE_C_COMPILER not set, after EnableLanguage
起因一个用cmake编译Jni的工程原来是可以正常编译的,但是换电脑后用新的Android Studio版本下载Cmake和Ndk后却不能正常编译,最终报标题所示的错误。分析后来通过比较分析得出:原来的工程中ndk版本是16的,安装新Android Studio后ndk只有17的版本可更新选择,导致ndk 16的某些功能不兼容。解决方法网上下载或拷贝之前版本的ndk 16包,然...原创 2018-07-14 11:56:59 · 3563 阅读 · 0 评论 -
谷歌Android开源串口通信使用
Demo下载地址: 谷歌官方串口库使用引言:现在的串口通信多用于嵌入设备中,Android主板与各种板卡之间的通信。因此串口通信在未来智能设备中应用会很广泛。现在市面上几乎所有的Android串口通信库都是用的Google开源的https://github.com/cepr/android-serialport-api封装而成。 但是很多第三方库质量参差不齐,出了问题也不知道是什么...原创 2018-07-27 17:50:17 · 5150 阅读 · 5 评论 -
Android Studio出现“Write access is allowed from event dispatch thread only”
Android Studio更新后出现““Write access is allowed from event dispatch thread only””提示,原因是Android Studio自带的jdk和自己安装的jdk冲突造成的。**解决方法: 点击Android Studio的File-project structure,然后勾选jdk的use embedded jdk选项,如下图...原创 2018-02-09 14:58:15 · 6565 阅读 · 0 评论 -
Android sdk在android studio中消失且编译不了程序
今天打开Android Studio发现所有的工程打开后都没有了Android选项,而且页面上的调试按钮是灰色的,这说明不能调试程序了,如下图。万幸的是后来静下心来仔细分析问题,最后终于解决了。真的是吓死宝宝了。 通过排查,发现setting->plugins中的Android Support给自动去掉勾选了,所以不再有Android的选项。如下图: 那么问题来了,之前好端端...原创 2018-02-09 13:57:20 · 4085 阅读 · 1 评论 -
文件记录日常日志
本文章demo下载地址:文件记录日志demo在app日常运行过程中会产生非常多的信息,一般情况下我们是将用户日常使用中的信息上传到服务器中,但是在无网络环境下这个方法就不能用了。解决的方法是我们可以将这些记录保存在本地文件中,待有网络时再上传到服务器。1、添加文件读写权限Android 6.0及以上需要动态获取文件读写权限,这点需要注意。本例为简单示意,直接采用静态注册的方式,只可原创 2018-01-13 09:47:25 · 515 阅读 · 0 评论 -
Android使用assets实现内置图片选择
本文章demo下载地址assets图片读取demo下载有时候做app需要内置一些图片给用户选择,这样就不用时刻在网络上下载图片或者另外打包图片在本地文件了,这时可以将图片资源放在assets目录下,该目录的图片会随着apk一起打包进去。1. 新建assets文件夹建立工程后,右键点击res目录,选择new->Folder->Assets Folder,之后会在res目录上方建立as原创 2018-01-04 20:29:02 · 7777 阅读 · 0 评论 -
Android串口通信
本文章demo下载地址:串口通信demo在智能物联网时代,Android除了大量应用在手机外,还可以紧密结合在智能硬件中,给出用户更好的体验。Android系统与智能硬件的通信方式一般有蓝牙或串口通信,本方将介绍日常Android应用中如何通过串口与硬件进行通信。串口通信底层一般是使用谷歌之前提供的.so文件,通过jni调用来进行通信,而网上有很多对其进行二次封装使用的。这里使用的第三原创 2018-01-13 17:21:01 · 1427 阅读 · 0 评论 -
Android app升级更新
本文章demo下载地址:app升级Demo效果图: 基本上开发了app后都会有升级,很多app都是放在应用商店,然后由应用商店升级,那么如果不想走app应用商店,想通过自己的服务器升级该怎么办呢?网上很多都是用Android自带的DownLoadManager类来下载,使用该类的一般升级步骤如下:通过getSystemService来获取DownLoadManager类。原创 2018-01-16 20:05:20 · 987 阅读 · 0 评论 -
不可不知的android开发冷知识8
1、在开发过程中,发现用的第三方串口库在4.4、5.1系统上运行正常,而在6.0系统上却打开串口错误。原因是编译串口.so文件的版本太低,而工程中的targetSdk太高,因此把targetSdk改成小于23就可以了。如:targetSdkVersion 222、Activity的onActivityResult比onResume早调用,这个知识很重要,例如跳到另一个界面的时候,在onPause中将原创 2017-12-20 19:53:15 · 273 阅读 · 0 评论 -
AndroidStudio使用inspect code帮助优化代码
简介:很多工程都有专门的代码检查工具,Android的工程也不例外,Eclipse时代有checkstyle等优良的代码检查工具,不过AndroidStudio发布后自己集成了一个代码检查工具Inspect Code。下面就来介绍如何使用Inspect Code来优化代码。打开Inspect Code打开IDE,点击Analyze->Inspect Code。 选...原创 2018-08-14 17:50:34 · 4964 阅读 · 0 评论 -
记一次乱用git reset --hard的惨痛经历
起因:今天在用git 的时候脑抽想回到某个版本,于是随便上网搜了下命令,也没仔细看,就用了git reset --hard xxx(commit id),结果版本是回了,但是工程里的所有新加的文件全部都自动删除了,自动删除了……这可真的急坏了,好几天的心血都在这里呢!!!!稍微冷静下来后,怀着一丝希望去找恢复的方法,还真的让我找到了。解决方法:stackoverFlow上有人建议使用gi...原创 2018-10-30 20:12:37 · 2847 阅读 · 2 评论 -
Android app添加后台拉起机制
本demo源码下载地址 App拉起机制源码下载简介:做智能售卖设备需要app一直在前台显示,但是有时由于一些不当操作或者系统原因会使app退出,导致设备不能使用。这时就需要拉起机制了。拉起机制目前实现方式主要有2种。1、利用Activity生命周期创建一个类MyApp继承自Application类,在该类通过监听所有activity生命周期来判断activity是否全部销毁,以此来...原创 2018-11-06 20:24:25 · 7242 阅读 · 1 评论 -
android studio去掉工程未用资源
简介在实际开发中,有时候项目迭代更新的时候会替放弃一些旧的资源或者string字符串。这样就产生了很多未用的图片或string字符串资源,增大apk的大小。如果一一对比找出这些无用资源,那就真是太难了。这时利用Android Studio的一些小功能可以轻松实现删除无用资源。点击Android Studio上的Analyze功能,选择Run Inspection by Name.在弹...原创 2019-10-08 16:18:36 · 417 阅读 · 0 评论 -
android反编译apk教程
文章中所用到的反编译工具下载地址:android反编译工具.zip一、下载jd-gui工具该工具用于查看反编译后的源码。二、下载apktool工具该工具用于资源文件的提取,包括图片、布局文件。使用步骤:解压apktool工具将需要反编译的apk拷到apktool工具目录下,如test.apk打开cmd命令窗口,定位到apktool目录下,输入apktool.bat d -f te...原创 2019-08-22 18:10:28 · 298 阅读 · 0 评论 -
Android定制个性化字体
本例demo下载地址:CustomFontDemo简介:有时我们嫌Android自带的字体难看或者需要在某个显示文本的地方加点个性化字体,这时就需要自定义字体了,那么在Android开发中如何在特定的位置显示自己指定的字体呢?1、创建存放字体的文件夹在工程res目录下建立assets文件夹,然后在assets目录下新建一个专门存放字体的文件夹fonts。之后在fonts文件夹放进个性化...原创 2019-03-27 20:27:09 · 651 阅读 · 0 评论 -
微信支付签名算法java实现
本例demo下载地址:WxPayDemo简介:使用微信支付的时候有一步需要实现对各个参数升序排序后进行签名,再把签名后的结果加到参数里面,然后再将参数转换为xml格式去请求,具体要求如下:java代码实现:private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5", "6", "7",...原创 2019-03-18 20:13:44 · 5034 阅读 · 0 评论 -
Android Studio将jni代码模块化
本例源码下载地址:ModuleDemo简介:当我们的app代码量越来越多时,难免会有一些希望抽出来共用的代码,这时就需要将其封装成库提供给其他应用使用。库可以以传统jar包的形式提供出来,也可以用aar的形式提供。不同的是,jar形式只能包含java代码,而aar形式的库则可以包含Android资源和一个清单文件包括相应的C/C++代码,这样可以绑定布局和可绘制对象等共享资源。以下用一个具...原创 2019-03-09 10:52:42 · 1010 阅读 · 0 评论 -
Android Jni开发-基础配置篇(CMake)
简介:涉及到一些算法或者底层驱动的时候,往往需要使用jni来开发。现在官方推荐使用CMake工具来开发jni。使用CMake开发Jni其实挺简单的,要求不高的话只需要简单配置一下就可以使用了。配置环境使用CMake进行Jni开发需要使用CMake插件、LLDB插件、NDK插件,这些都可以通过Android Studio很快地安装。打开SDK Manager,找到Android SDK-&...原创 2019-01-16 18:04:34 · 2121 阅读 · 0 评论 -
webview.pauseTimers()问题
在进行android hybrid开发的时候,一般在不需要webview时需要将webview进行销毁,但是如果销毁前调用了webview.pauseTimers()这个方法就需要注意了,调用pauseTimers()这个方法会将整个app所有webview的js中的定时器停掉。即使没有调用这个方法的webview也不能幸免。与此类似的是,即使在app最后一个activity退出时调用pause...原创 2019-01-09 20:22:34 · 3618 阅读 · 0 评论 -
Android Jni开发-实战篇(CMake)
本例demo下载地址:JniDemo下载简介上篇介绍了Android Studio中CMake简单配置jni开发。不清楚的可以看Android Jni开发-基础配置篇(CMake)如果不想麻烦的话直接在示例Jni代码native-lib.cpp中添加自己的业务逻辑即可。但是这样当代码一多了的时候不好扩展也不好管理,因此这次来实践添加自己的Jni代码。目标:实现一个简单的jni函数sum...原创 2019-01-17 20:27:08 · 5600 阅读 · 1 评论 -
android 生成javadoc时出现“编码GBK的不可映射字符”
我们知道AndroidStudio可以很方便地生成javaDoc文档,但是如果类注释中出现中文,那么当生成doc文档的时候会出现“编码GBK的不可映射字符”错误。这时可以在生成文档时,在other command line arguments里面输入-encoding utf-8 -charset utf-8...原创 2018-12-10 19:05:10 · 410 阅读 · 0 评论 -
Android Studio不能预览布局
Android Studio某些版本打开xml文件预览布局时出现rendering problems,导致不能实时预览xml的布局。解决方法:1、打开res/values/styles.xml文件,找到AppTheme。2、将parent="Theme.AppCompat.Light.DarkActionBar"改为parent=“Base.Theme.AppCompat.Light.Da...原创 2018-12-15 14:09:48 · 1128 阅读 · 0 评论 -
java改变byte的某一位值
今天在对下位机发送指令的时候,由于下位机是根据byte里面的某一位值来确定某个功能是否需要开启/关闭的,因此控制下位机需要在改变某一位值的同时保留其他值不变。这里以改变第2位值为例。刚开始时头脑比较蒙,首先想到用int数组来保存对应byte的值,然后改变后对下的下标值来达到效果。如2,那么int数组为[0,0,0,0,0,0,1,0]。如果要关闭,则把第2位值变为0,即[0,0,0,0,0,0...原创 2018-12-12 19:28:18 · 6152 阅读 · 0 评论 -
Android Hybrid混合开发
本例demo下载地址:HybridDemo下载简介:混合开发(Hybrid)也有一段时间了,现在闲下来总结一下。说到混合开发,重要功能有2种,一是网页端调用安卓原生接口或功能,二是安卓原生调用网页功能。效果图:Hybrid开发流程:1、Android端编写网页调用接口创建一个供网页端调用的类,如JSObject,里面编写供网页调用的方法,记得在方法上面添加@JavascriptIn...原创 2018-11-28 19:34:46 · 4285 阅读 · 0 评论 -
Android values文件夹适配屏幕
在面对不同屏幕分辨率的时候,如果像素差异比较大,且dp差不多一样的时候,可以使用不同分辨率来区分。如平板的7寸和14寸屏幕,一个为1024*600分辨率,一个为1920*1080,因此就需要在dimens中对布局控件的大小作出不一样的改变,可以把values中的dimens单独抽出来,放在不同的values中,系统会自动根据当前分辨率选择适应的dimens中的尺寸大小。在android3.0之前,在原创 2017-09-25 18:58:45 · 4155 阅读 · 0 评论 -
Android对EditText做输入限制
本文章源码下载地址:EditLimitTestAndroid很多情况下需要让用户只输入数字或者小数,因此都会在xml中设置其输入属性:android:inputType="numberDecimal"但是光这样可不行,如果用户只输入“.”,那么由于这个“.”是字符串而不是数字,因此会引起程序崩溃。解决的方法一般有两种: 1、获取用户的输入,对用户的输入进行判断,不符合则提示用户重新输入。该方式用户原创 2017-07-27 18:52:12 · 846 阅读 · 0 评论 -
git关联Android Studio以及上传项目到GitHub
转眼时间一晃就过去了,从事Android开发已有一年多的时间,由于项目忙,一直没时间更新,虽然笔记做了很多,但是一直没时间总结,只是把很多开发遇到的坑和知识点记在笔记本。这次来总结下android studio如何关联git。1、安装git客户端。这一步比较简单,直接去官网下载安装就可以了,这里我用的是windows版本。安装成功后打开Git Bash命令行,然后在命令行输入git -v,如果显示了原创 2016-10-10 22:32:13 · 2520 阅读 · 0 评论 -
FragmentStatePagerAdapter与FragmentPagerAdapter的区别
两者使用方法基本相同,区别在于二者在卸载不再需要的fragment时,所采用的处理方法不同。FragmentStatePagerAdapter会销毁不再需要的fragment,事务提交后,可将fragment从Activity的FragmentManager中彻底移除,在销毁fragment时,它会将onSaveInstancesState(Bundle bundle)方法中的bundle原创 2016-01-26 22:02:13 · 774 阅读 · 0 评论 -
Android调用另一个App界面
最近年底了,项目比较忙,虽然用笔把要总结的技巧来技术写下了,但是一直没有时间来更新。今天要说的是在App中调用其他APP界面的总结,我们经常需要给别的程序调用自己程序的UI界面,这时可以有三种方式来提供调用。 1、使用隐匿intent的方式调用,这种方式是比较推荐的,也比较简单 首先在自己应用的Mainifest.xml中加入如下代码:<activity android:name="com.mh原创 2016-01-25 19:03:12 · 10482 阅读 · 1 评论 -
android 组合控件
有时候项目中常常需要用到一些一样的控件,那些控件形状一样,但是具体内容却不一样,如下图: 如果每次都把要用到的控件在布局中一个一个的用代码写出来,会显得非常麻烦,这时就要用到组合控件了。组合控件是指把系统的几个已有控件组合为一个适合自己的可用的控件。要定义自己的组合控件非常简单,首先定义控件应有的属性,在res/values下新建attrs.xml文件<?xml version="1.0" e原创 2015-12-17 01:17:21 · 1036 阅读 · 0 评论 -
android 短信添加附件
添加附件。 在ComposeMessageActivity里 addAttachment(int type) 函数 根据type的不同,分成6个case case A: MediaSelectListActivity.ADD_IMAGE 用gallery选图片: MessageUtils.selectImage(this, REQUEST_CODE_AT转载 2015-12-15 10:19:22 · 1775 阅读 · 0 评论 -
ExpandableListView的自定义布局以及注意事项
android开发中常常需要使用到ExpandableListView来对一组数据进行分组, 使用ExpandableListView能够达到类似QQ分组的效果,类似于下面两张效果图: 要达到这种效果其实并不难,因为ExpandableListView跟ListView很相似,如果你对ListView很熟悉的话,很快就能掌握它,如果对ListView不熟悉的话,建议 先看看之前的博文 andr原创 2015-11-25 23:50:51 · 4319 阅读 · 1 评论