Android基础
huang_xiao_yu
这个作者很懒,什么都没留下…
展开
-
协程vs回调的一次使用demo
从一个例子开始:写一个方法,判断textview 文本是否超过了一行。1. 协程方式实现:suspend fun TextView.isOneLine(str: String?) = suspendCoroutine<Boolean> { if(str.isNullOrEmpty()){ it.resume(true) return@suspendCoroutine } val viewTreeObserver = this.viewT原创 2021-06-24 11:56:16 · 125 阅读 · 0 评论 -
创建Splash 页面的另外一种方式
前言:这是翻译的一篇文章,How to Create a Splash Screen。这篇文章里,作者提出了一个很独特的实现闪屏的方案,代码也验证过,确实可行。现在,我们按照他的方案,一步一步来实现。ps:不习惯于一字一译,这样有时候会很生硬,所以我采用的是按照自己的理解,融合作者和自己想表达的意思翻译而来。目的也只是为了让文章既能好读,也能好懂。所谓Spalsh页面(闪屏页面)一般就是在app启动的时候,展示公司的logo或是name(当然,国内的app 可能不是这么简单的玩下)。我们实现闪屏可翻译 2021-06-21 15:07:06 · 330 阅读 · 0 评论 -
Android 图片存储到指定路径和相册
我们在平常项目中,可能会存储一些头像,二维码之类的。这篇文章主要也是介绍自己在存储中会遇到的问题以及一些改进方案。1.首先是长按保存:这个可以去参照网络上的,无非是自己先要拼接好一个文件路径。注意:IO流只能帮忙建文件,但是不能帮忙建目录(路径)。 // 先拼接好一个路径:在内存卡/或是手机内存上做好文件夹 String filePath = Environment.g原创 2016-06-13 14:59:02 · 20934 阅读 · 8 评论 -
ExpandableListView 和CheckBox结合使用
先说说需求,这样便于理解代码:(以图来讲解说明)这是A页面:可以看到一个医疗组:组名是从B 页面拿到的。想要更换组名,点击这个组,就跳转到B页面。2.这是B页面:页面是分组选项,其中:A页面上次选的组名要在B页面展示出来,同时,用户也可以重新选择组名,再传递给A.3.做的过程中碰到的难点就是:A页面选择的组名怎么在B页面中展示。(1) 我刚开始的思路是:把A页面选择的组名的ID保留传递给B,然后原创 2016-06-14 15:19:57 · 4102 阅读 · 0 评论 -
ListView实现类似课程表,出诊表的表格样式
实现类似课程表或出诊表,方法多种多样,有可以用TabelLayout, 也可用GridView等。这里我用ListView来实现。先谈谈最初的项目需求原型:关注的重点:1. 表格线怎么实现; 2. 用listview的话,怎么设置item布局。分析:listview有个属性,divider。设置divider, 可以有行分割线。 具体的列分割线的话,在item布局中一个一个配置好了。原创 2016-07-28 09:59:52 · 1757 阅读 · 2 评论 -
Android 指引蒙版的实现
实现这个功能的关键是: 你需要知道哪个button处需要给个指引的高亮显示,这个涉及到坐标的运算,免得位置放偏。先给大家看看做的效果图:把没有做好的也放上去,这样更容易看出问题和需要注意的地方。(图一是没有设置padding,效果不好;图二是是指padding之后的效果,但是位置没有对准;图三才是正确的姿势)看实现过程:原创 2016-10-25 19:19:14 · 8581 阅读 · 1 评论 -
Android 日期转换
说说最近项目中一个特别小的细节:日期转化。比如说游客在某个时间访问了主页,需要确定这个时间是今天,还是昨天,还是其他时间来访问的。因为觉得这个特别常用,所以就写了个小demo,可以作为一个工具类使用。注释中做了详细说明。原创 2016-11-01 15:35:41 · 815 阅读 · 0 评论 -
layer-list实现阴影和选择器效果
实现这个效果的话,不需要多高深的技术,但是关键是要有耐心和对细节完美的追求。先看效果图:布局:LinearLayout android:layout_width="180dp" android:layout_height="40dp" android:orientation="horizontal" android:l原创 2017-03-19 17:36:29 · 2380 阅读 · 0 评论 -
谈谈Android中的回调
我这里主要是用Fragment和Fragment或是Activity之间的通信来举例子如何使用回调。当然,EventBus也是可以实现这一目的的。举例一:Activity需要在Fragment数据加载成功之后,显示某个控件。 步骤: 1.单独定义一个接口:public interface CallBack { void updateView(boolean isSuc原创 2017-03-20 17:48:56 · 274 阅读 · 0 评论 -
Handler实现倒计时的两种方式
背景:最近项目中,正好做到登录/注册这个功能快。它需要通过发送验证码,在规定的时间内用验证码来完成登录/注册。之前的项目中也有这个功能,但是觉得太复杂了,只好自己重新实现一遍。用Handler来做,觉得代码简介,逻辑也清楚。代码一://在向服务端发送获取验证码成功的回调函数中,开始发消息:mHandler.obtainMessage();mHandler.sendEmpty原创 2017-06-30 19:29:01 · 3623 阅读 · 0 评论 -
仿Android 源码处理长按事件
项目中有个需求:当用户长按某个键,当有5秒的时候,提示用户松手。需求非常简单,如何用简单高效的方法来实现呢?刚开始是打算用个计时器,如果计时达到了5s,就提示用户松手,后面回想android button的长按点击事件,它又是如何实现的呢?view 的长按点击事件部分源码://这是一个runnableprivate CheckForLongPress mPendingCheckForLongPre原创 2018-05-07 17:03:15 · 599 阅读 · 0 评论 -
WebView控制h5视频播放页面
相信大家看到这个标题,就已经知道是通过在Webview中写入js,从而控制某个网页页面的播放。具体要如何实现呢?1. 全屏这里以爱奇艺的网页为例,当我们拿到它的一个网页url播放链接,用平板运行的时候,播放器不会是全屏状态,当我们点击全屏图标的时候,希望它能像网页那样全屏展示播放,但是实际情况是,你点击全屏,它也根本无动于衷。所以我们应该怎样做,才会自动实现全屏呢? 这里有1个难题要解决...原创 2018-05-28 14:19:44 · 7080 阅读 · 0 评论 -
Android SpannableString 基本用法
以下介绍SpannableString 对文字的一些特别处理:比如字体,颜色,下划线,链接和点击事件。 先看效果:布局代码就不贴了,很简单就是3个TextView.现在看MainActivity中的代码实现: private TextView mTvContent1; private TextView mTvContent2; private TextView mTvCont原创 2016-05-09 18:20:38 · 1382 阅读 · 0 评论 -
Android Validator 验证
利用第三方开源框架 Validator 验证和限制用户的输入。1.用第三方框架的话,肯定是得导包。我是将项目导入到eclipse中,如何导入,这个网上百度一下,肯定大堆.导好之后,和自己的项目关联即可。2.运用:1.布局:验证用户名,密码,手机号和邮箱。2.代码public class MainActivity extends Activity implements ValidationListen原创 2016-05-18 15:00:45 · 2016 阅读 · 0 评论 -
Android图片三级缓存原理
缓存原理:从集合中读取:集合中没有的时候,走第二个步骤访问SD卡或是从缓存目录cache中取,当这里面还没有的时候,走第三个步骤访问网络以下代码实现了图片缓存原理,并且可以作为一个工具类来使用: 详情请看代码:public class ImageCache { private LruCache lurCache; private File cacheDi原创 2015-10-18 02:02:05 · 2725 阅读 · 0 评论 -
Android中三大组件和Fragment生命周期汇总
1.Activity,这个不用多说;直接上图就能看懂。原创 2015-11-10 00:42:51 · 406 阅读 · 0 评论 -
Fragment输入状态丢失的修复:
Fragment输入状态丢失的修复: 1.先解释下Fragment输入状态丢失的概念: 当ViewPager中装载有多个fragment,而fragment中有输入控件,如EditText,则当在fragment1中输入一些内容,之后滑动到fragment2的时候,会发现fragment1中的输入内容不在了, 2.解决方法如下:public abstract class BaseFrag原创 2015-10-14 23:53:39 · 703 阅读 · 0 评论 -
Activity的启动模式和横竖屏切换
一. Activity 依靠任务栈,按照先进后出的原则,记录和维护当前开启的Activity。Android为了维护用户更好的体验,提供了以下4种启动模式:1.Standard的启动模式:每开启一个activity,就会往栈中增加一个activity,不考虑是否有重复的activity被一再开启。2.SingleTop的启动模式:如果发现任务栈的栈顶已经存在这个activity,再去开启a原创 2015-10-29 21:24:47 · 1366 阅读 · 0 评论 -
Android经典底部选项卡集成方式之一
先上效果图: 许多应用都会带有这种底部选项卡,应用非常广泛,所以现总结一套模式,方便以后使用: 其设计模式非常简单:RadioGroup+RadioButton+FrameLayout+Fragment 1.MainActivity的布局:"http://schemas.android.com/apk/res/android" xmlns:tools="http://sche原创 2015-10-16 01:48:59 · 2866 阅读 · 0 评论 -
Android之解析XML文件
Java中对xml文件的解析方式有以下3种:1.dom解析: 把文件先导入到内存,再解析,不很适合手机设备2. sax解析:边导入,边解析,以事件驱动的形式来解析xml文件,当解析到一个节点,回调该节点类型的方法3. pull解析:边导入,边解析,以事件驱动的形式来解析xml文件,当解析到一个节点,返回的是该节点的类型(int 整数),不再继续解析,需要手动指向下一个节点 ,直到文档的结尾 ,pul原创 2015-11-02 02:30:58 · 304 阅读 · 0 评论 -
Android之线程池的使用
1.线程池就是事先将多个线程对象放到一个容器中,当使用的时候就不用new线程而是直接去池中拿线程即可,节省了开辟子线程的时间,提高的代码执行效率,也便于集中对线程管理。2.线程池的调用:public static class ThreadPool{ private ThreadPoolExecutor executor; private int corePoolSize原创 2015-11-01 22:06:30 · 342 阅读 · 0 评论 -
Android拍照,选择图片,裁剪和上传服务器
类似于QQ设置头像,裁剪,然后上传服务端。我将自己在实际项目中的做过的此类功能顺便总结下,写了如下的demo,以供参考。 先看效果图: 其中第一个ImageView 是按照相册中的图片和8:3的比例裁剪 第二个ImageView 是按照拍照获取图片和1:1的比例裁剪布局比较简单,所以不上布局代码,直接上MainActivity中的代码: 代码中都有详细的注释,所以不再做特别说明原创 2016-01-09 18:13:12 · 1959 阅读 · 1 评论 -
用广播(Broadcast)实现不同app之间的通信
Android中广播类型可以分为2种,一种是系统的自动广播,比说说:电量偏低,网络状态改变,系统时间改变等等。另外一种是我们自己自定义的广播,这种就最常见了。 系统发送来的广播可以被我们自己的或是第三方的app接收到,这说明了广播是可以实现不同app之间通信的。这也是我个人认为广播没有界面和用户交互的好处。 现在写个小demo测试广播在不同app间通信:即在demo 02 中,发送广播,试试d原创 2015-12-26 11:37:29 · 13667 阅读 · 0 评论 -
用Handler实现计时功能
期待的效果: 从1开始计时,10秒之后,停止计时。初始画面: 计时中画面: 计时到10秒之后结束的画面: 原理: 用handle 发送消息,处理消息的时候,判断是否已经达到10秒,没有达到10秒,接着再发送消息。布局简单,不贴代码,主要看activity中的代码:public class MainActivity extends Activity { private Button btn原创 2016-05-25 17:17:11 · 4393 阅读 · 0 评论 -
TextView根据不同内容设置展开与收缩
一.项目中的需求:TextView 最高2行显示,超过则下拉展开全部内容。TextView中如果没有2行,则指示箭头消失。二.效果图:当内容超过2行,展示图如下(指示箭头显示,同时TextView可以展开与收缩):2.当内容没有超过2行(指示箭头消失不见),展示如如下:三.思路分析:当初看到这个需求的时候,还以为十分简单,但是做起来之后,虽然可原创 2016-05-13 14:13:09 · 3270 阅读 · 1 评论 -
Android经典底部选项卡集成方式之二
此中方式的设计模式是:RadioGroup+RadioButton+ViewPager+Fragment。 其效果和我上一篇博客描写的效果是基本相同的,再次就不再上效果图了,直接上源代码。 先看布局:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://sc原创 2015-10-16 21:38:51 · 519 阅读 · 0 评论