Android
九幽神君
多年安卓开发经验,近期也从事java后端、python、c#开发。
展开
-
安卓 recyclerview展开收起动画类似ExpandListView
最近项目有个需求列表中有一个item的一部分(课表部分)是可以展开收起的,但是要有动画效果。最终实现的效果如下: 一个看似很简单的动画效果,我试了多种动画方案,最终成功达到了这个收起展开的动画。最终的方案很简单,就是在未展开时设置课表这个布局初始高度设0,然后开启一个高度从0变化到实际高度的属性动画,而收起动画则...原创 2019-11-14 10:23:28 · 1973 阅读 · 0 评论 -
fragment切换动画
Fragment切换动画在Activity跳转之间可以设置动画效果,例如平移,渐变,旋转等动画,当然在Fragment中也可以设置切换的动画效果,可以达到跟ViewPager切换动画类似的效果。在Fragment中设置自定义切换动画主要分为了两种情景,一种是使用 android.app.Fragment包里面的Fragment类时,FragmentManager里面的FragmentTr...原创 2019-12-06 10:19:27 · 549 阅读 · 0 评论 -
Android 获取签名文件jks的SHA1值或者SHA256的值
apk文件需要利用jks进行签名,可以防止应用被恶意篡改替换,标识开发者身份,加强了应用的安全性.(keystore也可以)第一种最智慧的方法使用安卓studio自带功能(谷歌真的很强大)鼠标点击一下,就得到你想要的结果第二种利用keytool工具keytool -list -v -keystore canvaskeystore.jks第三种利...原创 2019-11-17 21:39:56 · 1561 阅读 · 0 评论 -
安卓 RecyclerView局部刷新
在我们的开发中,RecyclerView是使用非常频繁的,除了常用的列表展示之外,很多时候我们要根据item的操作进行列表的刷新,比如勾选列表的勾选、删除或者根据操作动态设置某个item的布局。这时候,大部分人包括我在内使用的都是这种方式:修改数据源list,然后调用adapter的notifyDataSetChanged()进行刷新。 这种方式是我们经常采用的,在数据量比...原创 2019-11-13 16:52:06 · 1810 阅读 · 2 评论 -
安卓 java 除法取整
好久没水博客了,凑一篇,项目中应该早晚会遇到的。我的项目需求是动态计算recyclerview的高度,每行四个item,所以需要根据item的数量动态设置item高度,这就涉及到除法的问题,比如有2个item,4个item,6个item,8个item等,也就是需要得出实际的行数,比如2个只有一行,4个也是一行,但是6个就要两行,不能直接使用int值进行除法运算,因为会舍弃掉小数部分,java提供了...原创 2019-11-13 16:00:01 · 3336 阅读 · 0 评论 -
Android截屏SurfaceView黑屏问题的解决办法
最近项目中有截屏的需求,普通的view截屏方法网上一搜一大把,但是SurfaceView截屏黑屏问题很多文章说的并不清楚,自己参考了一些别的博客,再加上自己的思考,算是找到了一种解决方案。1、首先看我们一般是怎么用SurfaceView的?123456789101112131415161718转载 2017-08-05 10:18:09 · 5749 阅读 · 2 评论 -
Android ExpandableListView 中完美嵌套 GridView
在做项目的时候,想在 ExpandableListView 中嵌套一个 GridView,在实现的过程中,遇到了不少坑,所以写篇博客记录一下,也顺便帮助下和我一样的新手。我一直觉得,再多的文字,再多的代码片段,都不如写个小 Demo 更直观,所以在以后的博客中,我都尽量用小 Demo 来讲解,也给出源码。先上一张最终效果图:打开 Android Studio转载 2017-07-24 17:45:21 · 654 阅读 · 0 评论 -
JAVA 通过 Socket 实现 TCP协议的通信
目录(?)[+]简介TCP简介TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP,下一篇博客会实现)是同一层内 另一个重要的传输协议。在因特网协议族(Int转载 2017-08-02 09:45:43 · 3492 阅读 · 0 评论 -
安卓生成jni 头文件
1.首先找到jni本地函数的class文件路径。一般在D:\EsbicAecBranch\esbic-model\build\intermediates\classes\debug下或者D:\EsbicAecBranch\esbic-model\build\intermediates\classes\release下。注意:这是我的项目路径,我的jni函数的class文件是在一个引用的mode原创 2017-07-25 11:27:11 · 284 阅读 · 0 评论 -
Android将对象存储到SharedPreferences中
如果需要将一个对象存储到Android SharedPreferences中,可以用到下面的办法:以我的例子来说,我需要将一个标记账本的对象,其中元素为封面背景id(int)和账本名称(String)的对象存储至SharedPreferences。下面是我封装改账本(Book)的Bean:package beans;/** * Created by Chase o转载 2017-07-25 11:44:52 · 937 阅读 · 0 评论 -
Android ListView Adapter notifyDataSetChanged 刷新没有效果
1、唠叨 最近发现使用ListView的时候,通过调用Adpater的notifyDataSetChanged方法不能刷新UI数据显示 2、原因分析 1).数据源没有更新,调用notifyDataSetChanged无效。 2).数据源更新了,但是它指向新的引用,调用notifyDataSetChanged无效(一般主要是这种情况,使用了新创建的list对象(List转载 2017-08-03 15:17:11 · 2416 阅读 · 1 评论 -
安卓 ExpandableListView的使用详解
在Android开发中,我们知道经常会用到ListView来加载一些列表数据,但有时候ListView并不能完全十分满足我们的需求。比如如下图的效果用ExpandableListView实现起来就更方便点,我们直接用ExpandableListView,设置Group不能点击即可。好,费话不多说。下面详细介绍ExpandableListView的使用。 图(一)转载 2017-07-26 11:07:29 · 719 阅读 · 0 评论 -
Android实现计时与倒计时任务的五种方法
在购物网站的促销活动中一般都有倒计时限制购物时间或者折扣的时间。启动页页,广告页的倒计时任务。这些都是如何实现的呢?在最近的一个安卓客户端项目中恰好遇到了类似的问题,一开始使用的是Timer与 TimerTask, 虽然此方法通用,但后来考虑在安卓中是否有更佳的方案,于是乎共找到以下五种实现方案,最终我使用了方案五完成了此功能.效果如图:原创 2017-07-24 10:10:58 · 1670 阅读 · 0 评论 -
JNI中java类型与C/C++类型对应关系
在如下情况下,需要在本地方法中应用java对象的引用,就会用到类型之间的转换: 1)java方法里面将参数传入本地方法;2)在本地方法里面创建java对象;3)在本地方法里面return结果给java程序。 分为如下两种情况: 一、Java原始类型像booleans、integers、floats等从Java程序中传到本地方法中的原始类型可以直接使用,下面是jav转载 2017-07-19 11:39:33 · 491 阅读 · 0 评论 -
安卓 MediaCodec解码aac
上一篇博文介绍了如何用MediaCodec进行aac编码,这篇介绍如何解码,在解码上要注意的点是解码时要一帧一帧的喂给解码器而且得带adts头,另外要将头一帧的两个特殊字节用来对解码器进行配置,解码出来就是pcm编码的音频数据了,可以直接将pcm数据写进AudioTrack进行播放。[java] view plain copy/** *原创 2017-07-19 10:04:19 · 1564 阅读 · 0 评论 -
安卓MediaCodec编码aac
我们可以用AudioRecoder对音频进行采集,采集的音频是pcm编码的原始数据,通过MediaCodec编码成aac音频,这里要注意的是编码出来是aac裸流,是无法播放的,要播放的话必须在每一帧音频前加adts头,adts头包含音频数据的采样率,声道,帧长度等信息,必须有adts头才可以正确解码。还有就是编码时出来的第一帧是一个两个字节的数据,这个数据也是比较特殊的需要用来在解码时配置解码器,原创 2017-07-19 10:00:54 · 3005 阅读 · 0 评论 -
在Android应用中使用自定义证书的HTTPS连接
因为这部分才是本文的重点,要说得详细一点,所以单独做成一篇来说。安全地使用自定义证书的HTTPS连接方式终极解决方案是:把证书编译到应用中去,由应用自己来验证证书。生成KeyStore要验证自定义证书,首先要把证书编译到应用中去,这需要JSSE提供的keytool工具来生成KeyStore文件。参考《Java 安全套接字编程以及 keytool 使用最佳实践》,我试转载 2017-07-22 10:52:46 · 2312 阅读 · 0 评论 -
java(md5) 加密解密简单实现
Java代码 package test; import java.io.FileInputStream; class="java" name="code"> import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStre转载 2017-07-21 13:08:42 · 7210 阅读 · 1 评论 -
Java的MD5加密和解密
简单demo:import java.security.*; import java.security.spec.*; class MD5_test { public final static String MD5(String s) { char hexDigits[] = { '0' , '1' , '2' , '原创 2017-07-21 09:26:18 · 4579 阅读 · 0 评论 -
安卓java 代码中动态实现 TextView的 DrawableTop属性
标签: androidxmldrawabletextviewruntime2015-09-26 11:07 5391人阅读 评论(0) 收藏 举报 分类:Android Step(59) 版权声明:本文为博主原创文章,未经博主允许不得转载。开发中我们想实现一种带图标的 TextView的时候 一般会使用 TextView的drawab转载 2017-07-26 13:18:27 · 1876 阅读 · 0 评论 -
Android 通过接口传值
接口传值简单了说,就是在需要传值的那方定义接口,在接收数据的那方实现接口,数据就在需要实现的那个方法里,千万记住传值方的Listener一定是接收数据方的Listener。第一步:定义接口类:public interface Listener { void send(String s);}第二步:传递类发送数据:public class Data { public L转载 2017-07-26 13:58:08 · 1106 阅读 · 0 评论 -
安卓TextView文本加图片混合显示
安卓TextView文本加图片混合显示好久没写博客了,大家在项目中可能经常碰到文字开始或者末尾显示图标的情况,当单行显示的时候,我们可以使用drawableEnd等属性如下在设置: android:drawableEnd="@drawable/bg_corner_f6f8f9_5dp"或者直接使...原创 2019-07-21 13:56:54 · 1097 阅读 · 0 评论 -
安卓studio代理-build过慢以及gradle下载失败解决方案
因为众所周知的原因,由于墙的存在,安卓开发者在使用安卓studio开发时,总是遇到下载库或者升级卡着不动的情况。如果有个代理镜像服务器,可以帮我们从国外下载,然后再映射到国内服务器该多好。感谢阿里,提供了镜像服务器。如果你之前设置过 Android Studio 的 HTTP Proxy,然后又取消了代理设置,那么很有可能 Andoid Studio gradle 再次编译时仍然会走代理设置,...原创 2019-07-09 09:08:03 · 2091 阅读 · 0 评论 -
安卓动画-------布局变化动画
在安卓开发中,动画是必不可少也是相当重要的,看了很多博客,似乎动画与自定义view决定了一个安卓开发者的上限,做了三年安卓,从一开始简单的逐帧动画到慢慢随着UI的进步开始使用属性动画,从不懂到慢慢加深理解,感觉自己会的越来越多,不会的也有很多,长话短说,除了我们常见的属性动画、补间动画、逐帧动画,还有系统的自带的动画,可以实现很多UI要求的而你觉得很费劲的动画,下面先上效果图: ...原创 2019-03-04 16:36:48 · 351 阅读 · 0 评论 -
安卓 ScrollView与NestedScrollView的动态滚动与监听
2019年第一篇博客,今天就介绍下ScrollView常用的两个方法。在项目中,特别是新项目,UI经常会让我们根据屏幕的滚动展示不同的内容,或者内容太长,点击某个按钮或者触发某个事件,主动滚动到屏幕底部,这时候就需要我们监听ScrollView(我现在都是用NestedScrollView,不过为了打字方便,用ScrollView代替NestedScrollView,这两个处理其实是一样的,哈...原创 2019-01-14 14:19:56 · 8210 阅读 · 0 评论 -
安卓虚拟按键(导航栏)适配
网上关于适配虚拟按键的博客多如牛毛,我以前没做过相应的适配,最近新项目可以适配,然后从网上找了各种方案,试了很多,发现大部分都是渣渣,没什么卵用(哈哈,自己不会的大部分靠百度),但是最后还是找到了一个大神的博客,发现是有用的,在此万分...原创 2018-11-19 20:41:36 · 4744 阅读 · 0 评论 -
安卓RecyclerView刷新或加载网络图片闪烁
使用recycleview在加载网络图片后,如果上拉刷新或者下拉加载不做任何处理的话你会发现图片出现闪烁,下面是本人使用的方案,请大家使用1.RecyclerView取消动画rvCourse.setLayoutManager(new LinearLayoutManager(getActivity()));verticalCourseAdapter = new VerticalCours...原创 2018-11-22 11:16:28 · 3026 阅读 · 0 评论 -
安卓 通过intent调用系统文件管理器打开指定路径目录
当我们知道一个文件的路径,如何调用系统文件管理器显示它的位置呢。代码:private void openAssignFolder(String path){ File file = new File(path); if(null==file || !file.exists()){ return; } ...原创 2017-11-20 20:27:11 · 23373 阅读 · 13 评论 -
RXjava 深入简出
1. RxJava 简介1.1. 基础概念1.1.1. 导入依赖1.1.2. 创建 Observable(被观察者)1.1.3. 创建 Observer(观察者)1.1.4. 订阅1.2. 更多方法1.2.1. 简化订阅1.2.2. 事件队列1.2.3. 线程控制1.3. 操作符1.3.1. Map 操作符1.3.2. FlatMap 操作符1.4. 总结转载 2017-11-01 19:06:12 · 268 阅读 · 0 评论 -
安卓获取APP的信息以及整个硬件、系统信息
[java] view plain copyadapter.add(new InfoBean("app的签名", SystemUtil.AppSignature())); adapter.add(new InfoBean("app的名称", SystemUtil.AppName())); adapter.add(new InfoBean(转载 2017-10-21 10:42:57 · 10493 阅读 · 0 评论 -
Android 静默安装和智能安装的实现方法
目录(?)[+]1 简介最近研究了Android的静默安装和智能安装,于是写博客记录一下。 静默安装就是无声无息的在后台安装apk,没有任何界面提示。 智能安装就是有安装界面,但全部是自动的,不需要用户去点击。 首先强调两点:静默安装必须要root权限智能安装必须要用户手动开启无障碍服务2 原理静默安装、卸载的原理就是利用pm i转载 2017-09-27 10:43:43 · 616 阅读 · 2 评论 -
安卓常用工具类
1、日志工具类L.java[java] view plain copypackage com.zhy.utils; import android.util.Log; /** * Log统一管理类 * * * */ public class L {转载 2017-09-25 09:52:15 · 386 阅读 · 0 评论 -
安卓屏幕保护实现
Android关于界面一定时间无操作自动跳转到指定界面的实现标签:android触摸监听 计时器 事件分发2017-06-06 16:31599人阅读评论(6)收藏举报分类:android开发版权声明:本文为博主原创文章,未经博主允许不得转载。最近在做一个售货机的项目,当界面停留一定时间无操作需要自动跳转到主页原创 2017-09-25 08:38:29 · 6760 阅读 · 2 评论 -
Rxjava2使用-构建事件总线(RxBus)代替原生广播
以前的项目中使用的是eventbus来实现事件的通知和订阅,rxjava2发布之后就使用了新的方式:Rxbus,减少添加的依赖库源码: 引入dependencies { // rxjava and rxandroid compile 'io.reactivex.rxjava2:rxjava:2.0.4' compile 'io.re...转载 2017-08-02 08:51:33 · 2894 阅读 · 1 评论 -
android TextView加边框&drawable开发
为TextView加边框,需要在drawable建xml文件,里面设置shape来设置文本框的特殊效果。[html] view plain copyxml version="1.0" encoding="utf-8"?> shape xmlns:android="http://schemas.android.com/apk/res/转载 2017-07-26 14:57:16 · 1552 阅读 · 0 评论 -
Android java 遍历Map的四种方法
public static void main(String[] args) { Map map = new HashMap(); map.put("1", "value1"); map.put("2", "value2"); map.put("3", "value3"); //第一种:普遍使用,二次取值 System.out.print原创 2017-08-03 16:06:15 · 1228 阅读 · 0 评论 -
Android Switch控件修改样式
Android中自带的Switch控件在很多时候总觉得和整体系统风格不符,很多时候,自定义Switch是一种方法。但其实不用这么麻烦,安卓自带的Switch通过修改一些属性,也可以达到和自定义Switch差不多的一个效果。个人感觉,Switch的属性设置和其他控件还是有挺大区别的。因此,写下此文,方便有需要的同学参考。先上效果图:以上便是修改后效果转载 2017-07-17 13:56:18 · 3243 阅读 · 1 评论 -
安卓自定义ToastView
上效果:结构目录:代码解析:1、toast.xml布局很简单就是一个ImageView和TextView横向排列,不解释:[java] view plain copy"1.0" encoding="utf-8"?> "http://schemas.android.com/apk/res/android"转载 2017-07-17 10:49:22 · 1449 阅读 · 0 评论 -
Android常用加密手段之MD5加密(字符串加密和文件加密)
前言安全问题一直伴随着互联网的成长,如何有效地保护应用程序的数据是每一个开发者都应该考虑和努力的事情。这篇文章介绍Android平台上常用的加密方式之MD5加密。MD5MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5转载 2017-07-20 13:49:41 · 820 阅读 · 0 评论 -
Java Android 创建读写TXT文件
import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.RandomAccessFile; public class FileOperati转载 2017-06-12 16:42:46 · 5189 阅读 · 0 评论