
Android
文章平均质量分 69
白玉梁
一个Java、Android、Swift、Vue、React、Flutter、Python、Harmony都会点儿的全栈攻城狮……
展开
-
安卓keytool获取不到签名文件的MD5
keytool无法显示md5的解决方案原创 2023-03-17 12:01:25 · 5019 阅读 · 2 评论 -
安卓11上的存储权限问题
意思是,你需要添加一个属性:tools:ignore=“ScopedStorage”,忽略ScopedStorage,其实谷歌的本意是安卓10以后,必须要适配ScopedStorage的,11以后进一步限制你对不属于自己应用的文件夹的访问权限的,但你一定要访问,那你就忽略以下我这个强制适配的属性吧,说直白点就是,在说11之前,我们先回忆以下10上存储权限的变更:每个应用会生成自己对应的沙盒文件路径,自己的应用只能访问自己的文件路径,以及系统提供的公共资源文件夹,而无法访问其它文件夹!原创 2022-12-15 09:59:58 · 6102 阅读 · 0 评论 -
uniapp原生插件-YL视频播放器
YL视频播放器是一款适用于安卓端的高性能原生插件(支持3核心切换(exo,ijk,安卓原生),支持点播录播,小窗播放,支持各种视频播放常用功能,适用于各种常见播放场景如在线教育,小视频,朋友圈等等!原创 2022-09-29 17:48:30 · 8223 阅读 · 7 评论 -
Android预览Office文档
在安卓上预览Office文档如doc,pdf等,我想大部分做安卓开发的小伙伴都会遇到这样的需求,ios有支持在线打开的系统能力,只需要一个链接就可以,而安卓想要实现在线打开,可就非常困难了!Android实现在线打开PDF安卓系统本身不提供文档在线打开能力,想要实现,那就需要自己想办法,自己技术团队实现,或者用网上已有的方案比如pdfjs,pdfjs是mozilla实现的一套在线打开pdf的web项目方案,启动项目后只需要在url后面拼上你的pdf链接,即可实现在线打开,pc端打开后大概是这个样子:原创 2022-03-26 17:58:11 · 8808 阅读 · 6 评论 -
RxJava串行执行任务
RxJava是什么不在多说,上一篇讲过RxJava的并发请求实现:RxJava的并发,这一片讲串行的实现,主要用到contact和contactArray方法,直接上代码: Observable<Integer> task1 = Observable.create(emitter -> { //... //这里执行一些任务 //执行完成后发射到下一个任务并通知本任务完成 emit原创 2022-02-17 15:41:59 · 4937 阅读 · 0 评论 -
一文理清H5调起App那些事
以安卓为例,实现h5调起app步骤:在安卓AndroidManifest.xml中,启动Activity下添加属性:<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="a原创 2021-09-30 11:55:40 · 939 阅读 · 1 评论 -
安卓批量上传
支持功能:多任务批量上传;上传状态储存(结合数据库);进度监听(需具体网络上传框架支持,如okhttp,oss等);上传取消;上传错误(或强杀)后点击重新上传;可根据实际业务需求改造…GitHub:https://github.com/baiyuliang/MultiUpload效果如图:代码结构:数据库:GitHub:https://github.com/baiyuliang/MultiUpload...原创 2021-09-11 09:54:12 · 857 阅读 · 1 评论 -
拼团列表item自动滚动+倒计时实现
标题可能不太直观,想了半天也没想到好的,那么我就先贴一张具体应用场景的效果图:就是这一块:相信大家在做商城类应用时,经常会有相似需求!本项目实现的效果如下图:最开始通过RecyclerView实现,也可以,但是在进行嵌套特别是ScrollView等滑动控件时,就会出现触摸bug,即便你将recyclerview禁止滑动也不行,虽说这个bug不算太影响体验,但是对于追求完美的我,不能忍,就再寻找了另一种实现方式:动态add/removeView+属性动画!原理其实很简单:首先,分析效果图,u原创 2021-01-28 14:41:17 · 4012 阅读 · 3 评论 -
Kotlin+MVVM+Retrofit+协程+ViewBinding+EventBus
MVVMhttps://github.com/baiyuliang/MVVMKotlin+MVVM+Retrofit+协程+ViewBinding+EventBus注意:使用ViewBinding需要AndroidStudio版本为4.0+项目框架整体架构图:本框架的特点:1.使用Kotlin语言2.使用MVVM+协程开发模式,相较于常用的MVP+RXJava开发模式,会减省大量的MvpView的创建,以及大量的接口回调,并且不再需要Presenter的注册和注销,减少内存泄漏风险3.Vi原创 2020-06-01 15:43:08 · 6824 阅读 · 8 评论 -
MVVM+Retrofit+Kotlin网络框架封装
上篇文章讲了MVVM入门,网络请求部分非常简单和原始,本篇则是上一篇的进阶,主要讲解如何在vm中使用协程结合Retrofit进行网络框架的封装。Retrofit自不必说,非常优秀的网络请求框架,说到Retrofit就不得不提RxJava,RxJava是什么?官方定义:一个在jvm上使用可观测的序列来组成异步的,基于事件的程序的库,它具有良好的链式编程风格,以及强大的异步处理能力,在近几年的移...原创 2020-04-25 15:43:41 · 3639 阅读 · 7 评论 -
AndroidQ文件存储适配
安卓Q即安卓10.0已经发布多时,不过大多数开发者并没有真机去测试,最近各厂商系统陆续推送了10.0的升级,因此必须要考虑去适配10.0系统了!关于10.0系统权限方面的改变,大家可以搜索相关文章,这里主要讲一下存储权限的变化,10.0之前我们在保存或者查询文件时,首先需要申请存储权限: <uses-permission android:name="com.android.laun...原创 2019-12-27 17:47:55 · 4666 阅读 · 7 评论 -
Android通过WebService实现图片的上传和下载(一)
这篇文章将讲解Android如果通过访问WebService接口实现图片的上传和下载,当然这不但需要大家懂得Android还要懂得WebService技术,安卓属于客户端,而webservice则属于服务端,所以就要求大家既要会开发APP又要会写服务器,这篇文章所用的WebService是通过Xfire实现的,不懂的同学可以了解一下javaWeb技术和Xfire。当然这篇文章主要是针对既要开发客户原创 2014-03-06 16:25:45 · 3540 阅读 · 0 评论 -
android listview 使用
今天在做项目的时候用了自定义listview以及自定义的item、adapter。现在把其中需要注意的地方记录下来:1、item内如果有button等控件时,在监听listview的onitemclick事件时,焦点会被item内的button、imagebutton等控件抢走,从而导致在listview设置了onitemclick事件后不会被触发。解决方法是在初始化item的时候屏蔽掉其内部转载 2014-03-29 23:01:20 · 1140 阅读 · 0 评论 -
Android布局中ScrollView与ListView的冲突的最简单方法
看到网上流行的一种使用方法是:public class Utility { public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter();转载 2014-04-02 15:45:05 · 1234 阅读 · 1 评论 -
FragmentPagerAdapter与FragmentStatePagerAdapter差异
平常使用的FragmentPagerAdapter和FragmentStatePagerAdapter来自android.support.v4.app包用来构建ViewPager。 FragmentPagerAdapter更多的用于少量界面的ViewPager,比如Tab。划过的fragment会保存在内存中,尽管已经划过。而FragmentStatePagerAdapter和ListView转载 2014-04-03 19:32:03 · 1420 阅读 · 0 评论 -
Afinal加载网络图片及下载文件使用方法
Afinal快速开发框架使用起来非常方便,下面将讲解如何利用Afinal加载网络图片及下载文件:先看效果图:注意:使用Afinal前需添加Afinal的jar,可以在这里下载:http://download.youkuaiyun.com/detail/baiyuliang2013/7313587其中包括了Afinal的源码和jar,使用时只需添加jar包即可,在学习阶段也可以直接添加源码到原创 2014-05-08 01:21:11 · 6039 阅读 · 0 评论 -
Afianl加载网络图片(续)
上一篇已经讲了如何利用Afianl加载网络图片和下载文件,这篇文章将继续讲解使用Afinal加载网络图片的使用,主要结合listview的使用:看效果图: listview在滑动过程中没用明显卡顿,很流畅,这点优化的很不错,Afianl使用前当然是要先添加jar包啦,接下来看代码:activity_main.xml:<RelativeLayout xmlns:an原创 2014-05-08 01:49:16 · 2200 阅读 · 0 评论 -
ProgressBar的简单使用
当我们的应用在进行耗时操作时,显示一个进度条呈现给用户,让用户知道当前进度是一个很好的体验,接下来我们就来简单了解下ProgressBar(本文主要针对初学者,大神可以绕开啦),先看效果图:进度条ProgressBar共有几种样式,如圆形,长条形等等,本例中用的是长条形:style="@android:style/Widget.ProgressBar.Hor原创 2014-05-09 16:47:29 · 1721 阅读 · 0 评论 -
ListView下拉刷新上拉加载更多实现
这篇文章将带大家了解listview下拉刷新和上拉加载更过的实现过程,先看效果: 接下来再看一下工程文件;首先,实现这种效果需要重写ListView控件,工程中的RefreshListView即继承了ListView,并实现了OnScrollListener接口,头部和脚部和主界面其实是连在一起的,只是在RefreshListView中没让它显示出来,只有当特定条件比如下拉上拉原创 2014-03-06 15:00:41 · 2494 阅读 · 3 评论 -
ScrollView的阻尼回弹效果实现(仿qq空间)
玩过新浪微博,qq空间等手机客户端的童鞋,都应该清楚,在主界面向下滑动时,会有一个阻尼回弹效果,看起来挺不错,接下来我们就来实现一下这种效果,下拉后回弹刷新界面,先看效果图:这个是编辑器里面的界面效果,不言自明:运行效果:正常界面下:下拉:下拉结束:实现代码:主要部分就是重写的ScrollView:package com.by原创 2014-05-14 17:17:40 · 8342 阅读 · 8 评论 -
Dialog样式的Activity
效果图:设置全屏模式:@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); getWindow().setLayout(LayoutParams.原创 2014-06-10 14:34:11 · 4204 阅读 · 1 评论 -
Universal-Image-Loader 图片异步加载类库的使用
这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影。 可是有的人并不知道如何去使用这库如何进行配置,网上查到的信息对于刚接触的人来说可能太少了,下面我就把我使用过程中所知道的写了下来,希望可以帮助自己和别人更深入了解这个库的使用和配置。 GITHUB上的下载路径为:https:/转载 2014-06-18 17:37:53 · 1235 阅读 · 0 评论 -
安卓自定义日历控件
尊重作者劳动成果,转载请注明出处: 最近,因工作需要,需要实现自定义日历控件功能,主要应用于软件中的酒店入住时间选择功能,进入日历后,可选择入住时间,及离开时间,选择完成后,再次进入日历时,会显示上次选中的结果,默认选择日期是在距当前日期三个月内,三个月以外的均以灰色显示,且不可点击。本篇实现的效果是高仿某软件的界面效果:某软件界面效果:本篇实现的效果:原创 2014-07-13 07:59:05 · 3222 阅读 · 5 评论 -
网易新闻客户端(高仿)
最近整理了下自己以前做过的项目,决定分享出来,本篇所展示的是仿网易新闻客户端,服务端是在新浪SAE部署着的,所以大家下载后,可直接在手机上看到效果,接下来看效果图:技术要点:每个界面都是一个Fragment,通过ScrollVIew+ViewPaper+Listview实现,ViewPaper可左右滑动,整体上拉下拉刷新,侧滑效果是用的开源项目slidemenu,分享功能是原创 2014-07-15 22:34:11 · 3529 阅读 · 4 评论 -
实现新浪微博@@@
首先看下新浪微博客户端界面如图: 每转发一次都会增加一个@xxx,而点击@xxx则进入该用户详细资料界面,点击其他地方则进入的是微博正文,这个怎么实现呢,只用TextView行吗?答案肯定是不行的! 先分析下它这个过程是怎么实现的,个人觉得,当发布一条微博后,这条微博记录所对应的服务端的表中,会有用户个人信息,以及转发时的评论内容即这一部分(这一部分内容其实可以是一个字原创 2014-09-19 13:08:44 · 1997 阅读 · 2 评论 -
安卓代码混淆与反射冲突,地图无法显示等问题解决及反编译方法
此前的代码混淆,因为并没有用到反射,所以常规的代码混淆方式一遍就能通过,而此项目中某些类利用到了反射机制(本人的这个项目中有即时通讯功能,所以有表情类资源,因此需要通过反射由文件名找到表情资源id),当由文件名去寻找资源id时就报空指针异常了,期初我并不知道什么原因,通过反编译已经混淆的apk,一步一步寻找到出错的地方,才恍然大悟,正是反射那一步出现了问题:Field field = R.draw原创 2014-08-22 11:45:32 · 3654 阅读 · 4 评论 -
多图选择(仿微信,陌陌)
整理了下网上的资源,并做了大量修改,美化,完成以下效果,仿微信陌陌多图选择,最多可以选择6张图片,选择完成后,用GridView展示,点击图片可以删除,其实,以此为基础还可以做出更多更炫的效果,不过本代码仅供参考,若有需要,自己可以进行扩展,接下来看效果图:源码下载地址:http://download.youkuaiyun.com/detail/baiyuliang2013/7749241原创 2014-08-13 15:20:43 · 3080 阅读 · 1 评论 -
安卓Toast自定义及防止重复显示
Toast是安卓系统中,对用户误操作时或某功能执行完毕时,对用户的一种提示,他没有焦点,并在一定时间内会消失,但用户连续误操作(如登录时,密码错误)多次时,怎会有多个Toast被创建,系统会把这些toast放进队列中,等待上个Toast 显示完毕,接着显示下一个,那么用户则会看到多次Toast提示,无论你退出软件与否,这样给用户的体验则大打折扣,所以我们需要做的是,若Toast在显示着(也就是To原创 2014-08-18 09:21:19 · 2991 阅读 · 3 评论 -
Android自定义处理崩溃异常
用过安卓手机的用户以及安卓开发者们会时长碰到程序异常退出的情况,普通用户遇到这种情况,肯定非常恼火,甚至会骂一生垃圾软件,然后卸载掉。那么开发者们在开发过程中遇到这种情况给怎么办呢,当然,你不可能世界上的每个安卓手机你都要试试你的程序有没有异常,这是无法办到的事情,所以最好的办法就是,当普通用户遇到这种情况时,让应用自动把错误信息发送到你的服务器,然后你去分析异常原因,这是不是一件很有意义的事情啊原创 2014-08-19 15:23:27 · 3310 阅读 · 3 评论 -
安卓实现发送实时地图
在多数即时聊天通讯中,会有发送位置的功能,在发送位置时,大家有注意的话,聊天界面的item里显示的是实时地图,如下图: 这个是如何实现的呢? 其实,这个很简单了,各大地图提供商都会有一个静态地图的API,大家只要调用这个API传入相关参数,就相当于从网络获取一张图片显示,显示一张网络图片,这个对大家来说容易吧? 上图中使用的是高德地图,我满现在拿百度地图来说,百度原创 2014-09-03 13:40:36 · 2289 阅读 · 1 评论 -
安卓即时通讯聊天界面及动态表情实现
最近因工作需要,一直在研究即时通讯,偶尔在网上看到一篇介绍发送类似qq动态表情的文章,觉得很不错,于是经过本人的整理及改善,做成一个demo,供大家一块研究学习,界面及功能如下:其中接收的消息是在自己发送消息后模拟对方发来的消息已达到效果,具体可下载demo研究,里面的注释也比较清楚,有这方面需求的同学可以简单的学习下其布局,收发消息后的处理以及发送表情等的实现过程。源码地址:ht原创 2014-09-25 15:03:35 · 5873 阅读 · 4 评论 -
安卓实现天气预报功能
此篇文章主要针对初学者,讲述了如何如何利用webservice访问天气预报接口获取网络数据,对返回结果的处理,以及如何利用Handler更新主线程UI。先看效果图:接下来看主程序:package com.example.getweather;import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapO原创 2014-03-24 19:09:18 · 3378 阅读 · 2 评论 -
调用百度地图只显示网格的问题
关于安卓调用百度地图只显示网格的问题,楼主也曾为此不知所措,曾怀疑是不是百度SDK的bug,在网上也搜了各种答案,都没能解决,应为这个问题很很奇怪,位置已经定好了,并且坐标,地址也都能显示出来,唯独地图界面不加载,这让人很是抓狂,按说位置已经定出来了,应该密钥key没有问题,但其实不然,问题还真出在这里,可能是我用的百度地图SDK版本较新,但却用的旧的key,问题就这样出来了,看到这条说明,尼原创 2014-03-22 01:54:17 · 3062 阅读 · 0 评论 -
安卓调用百度地图实现
本文将讲述安卓调用百度地图的实现方法,刚接触百度地图的童鞋可以作为参考,先看效果图: 再看工程文件:注意,该项目所用百度sdk为最新版,需用最新密钥,再次声明,那些在调用百度地图时老是不正常的童鞋,一定要根据你的sdk版本申请对应密钥,这个我已经在上一篇文章中讲过了,大家可以去参考下。首先看,主界面布局:<RelativeLayout xmlns:an原创 2014-03-27 22:16:46 · 3109 阅读 · 2 评论 -
popupwindow中EditText获取焦点后自动弹出软键盘
关于popupwindow中EditText获取焦点后自动弹出软键盘的问题,用过手机qq或空间的童鞋应该知道,再点击评论时会弹出一个编辑框,并且伴随软键盘一起弹出是不是很方便啊,下面我们就来讲一下实现方法,先看效果:实现过程其实就是在listview的适配器Adapter中给"评论"这个所在的这个空间设置一个监听,当点击评论时,弹出popup,并异步弹出软键盘,看一下我的适配器中的代码片段原创 2014-03-08 09:34:18 · 11473 阅读 · 3 评论 -
GridView如何适配不同屏幕
GridView和ListView一样,都是项目中常用的控件之一,那么本篇文章要讲的是GridView如何适应不同大小的屏幕,首先,我们来看一张效果图,如下:每行为四个item,上下左右间距大概2dp,而且会根据不同的屏幕大小,每个item中的图片随之缩放或放大以适应屏幕(始终保持正方形的样子),我们大多数在使用GridView的时候可能会把columnWidth设置了一个定值如70d原创 2014-10-17 10:32:22 · 5014 阅读 · 3 评论 -
阻尼回弹效果的ScrollView嵌套GridView
以前写过一篇带阻尼回弹效果的ScrollView,但是有些小问题,于是又重新整理了一下,这篇文章一是一个带阻尼的Scrollview,再个就是Scrollview嵌套GridView实现,而GridView也继承了上篇所讲的自动适配屏幕大小,我们可以先参考下陌陌的效果:再看本文所实现的效果:demo中加载的图片是使用afinal从网络获取的,目的为了达到效果,也给大原创 2014-10-17 13:44:51 · 4027 阅读 · 2 评论 -
ListView嵌套GridView
首先,我们通过两个实例来了解下本篇文章所讲的重点,看下图:微博:陌陌:大家应该对这两款软件并不陌生,接下来,我将列举下本文将要实现的几个点:1.ListView嵌套GridView,互不冲突,界面显示及操作正常;2.GridView中的图片依据屏幕大小,自动扩大或缩小以适应屏幕,并始终保持正方形;3.图片数量不同时,布局不同(如上图的4张图片和6张图片);原创 2015-01-12 20:28:02 · 7728 阅读 · 6 评论 -
安卓2.x的版本使用4.x的主题
现在,还有大部分安卓开发者在开发安卓APP时使用的是2.x的SDK版本,为了兼容2.x的手机这本倒无可厚非,但最令人头痛的就是2.x版本的主题是在太丑了,这是安卓刚推出时只考虑到了使用,并没考虑到美观,而现在上至操作系统下至应用软件都以漂亮的界面,舒适的操作体验为前提,那么是否可以,既兼容2.x又可以使用4.x的主题风格呢?答案当然是有的! 有时我们在安装某APP时,会看到支持最低版原创 2015-01-04 10:48:58 · 1397 阅读 · 3 评论 -
安卓如何快速更新SDK
打开SDK Manager,点击tools->options打开,如图:Proxy Setting如下设置:HTTP Proxy server:mirrors.neusoft.edu.cnHTTP Proxy Por:80并勾选:Force https://...sources to...,然后Close。此后,再去检查更新及安装SDK版本即可。原创 2015-01-05 11:00:33 · 2027 阅读 · 1 评论