Android经验
文章平均质量分 62
huang_xiao_yu
这个作者很懒,什么都没留下…
展开
-
观察者模式的一次实践
1. 项目需求背景:直播端有个美颜设置功能,如下:2. 实现方式:先说布局:看完交互之后,决定采用tablayout+viewpagertablayout指示器长度的改变:网上有采用反射或是第三方控件来改变indicator长度,这里我们直接用drawable方式<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:width原创 2021-02-05 15:56:57 · 177 阅读 · 0 评论 -
扒一扒app
起因是这样的,拿到一个产品需求,如下,ui倒是一目了然,但是具体交互细节呢,美工小姐姐在设计稿上标了一小行字:去看看每日优鲜。既然如此,那就先看看别人家是怎么做的吧。1.工具篇:参考一片文章:查看布局先找到android sdk 的目录-》tools -》monitor.bat. 启动按照如下操作,之后就获取到别人app的布局视图了选取其中某个交互开始分析:打开app,在此分类界面,一只手不停下拉,不松手,另外一只手按照2进行操作,获取到的截图如下:看看红框我们能分析出哪些信息:①原创 2021-02-05 10:40:25 · 523 阅读 · 1 评论 -
Android拍照,选择图片,裁剪和上传服务器
类似于QQ设置头像,裁剪,然后上传服务端。我将自己在实际项目中的做过的此类功能顺便总结下,写了如下的demo,以供参考。 先看效果图: 其中第一个ImageView 是按照相册中的图片和8:3的比例裁剪 第二个ImageView 是按照拍照获取图片和1:1的比例裁剪布局比较简单,所以不上布局代码,直接上MainActivity中的代码: 代码中都有详细的注释,所以不再做特别说明原创 2016-01-09 18:13:12 · 2001 阅读 · 1 评论 -
WebView和html5 的交互
最近项目中webview 和 html5做的交互比较多,由于不是很熟悉,难免会出现了一些bug。现在针对自己解决的这些bug,做个整理。方便日后学习和借鉴。一. webview中的onReceivedTitle。1.背景:我的项目是通过webview 加载url, 然后在url 中点击item项的时候,继续加载url。不同url 带有不同的标题,我们希望在点击item的时候,url标题能正原创 2016-04-05 19:48:17 · 5511 阅读 · 0 评论 -
Android 使用Html.fromHtml需要注意的地方
项目中我和一个同事都使用了Html.fromHtml设置字体的颜色,结果是他设置的没有效果,我的确有效果,然后对比代码不同的地方,终于知道原来使用html时候 ,还需要稍微注意下。因为是在机缘巧合之下发现的,所以特别记录下,减少错误的发生。1. 设置字体颜色的时候,颜色值需要用到转义符:如下代码所示:String textStr = "本月已成功邀请 <font color=\"#FF0000\">原创 2016-05-04 18:38:17 · 33625 阅读 · 2 评论 -
Android 解析二维码图片
我们项目之前已集成了一个zxing的扫描二维码开源库。现新增需求是将用户存储到相册中的二维码图片识别并解析出来。网上也有很多这样解析的例子,我这篇博客也是在借鉴他们提供的方法之后写出来的,整个解析过程都差不多,不同的是,因为每个人集成的项目会有所不同,中间会有所修改。而且在做这个项目的时候,中间出了几个异常,我提出来一是引以为鉴,二是里面有些错误,我也不是很明白,希望有人看到之后,能顺便帮我解解惑。原创 2016-12-01 15:52:24 · 9142 阅读 · 4 评论 -
MVP的实践
背景:之前看到有朋友在项目中用mvp模式,他推荐我去看看google托管在github上的一个demo,然后我就下载下来看,结果是看得稀里糊涂的,感觉几个接口调来调去的,让我不够用的大脑更加混乱了。然后,我又在网上搜索一些文章看,结果绝大部分文章标题是:Retrofit+RxJava+Dragger2+MVP模式,一下子包装这么多框架进去,更是让看了之后,更是不会了。后面自己想:既然整体看不懂原创 2017-07-06 19:30:37 · 403 阅读 · 0 评论 -
视频播放比例问题研究
背景:针对视频满屏播放,有时候如果仅仅是设置某个控件宽高都是match_parent, 但是视频源却没有和设备的比例保持一致,就会存在画面被拉伸的情况,那么应该怎么避免呢?解决方法:第一步:确定视频源的比例:根据帧宽高算出比例大致是9:5 第二步:确定设备的宽高比例,我们设备屏幕是10寸,宽高是:1920*1200,比例是8:5第三步:分析,从上面两个比值来看,视频源比例和设...原创 2018-03-20 08:56:52 · 3437 阅读 · 0 评论 -
Android Studio某些编译错误处理
Studio 有时候真的很奇怪,明明项目几天前都运行好好的,某天等你再次打开运行,就会出现特殊错误。现总结一些错误现象,减少开发人员不必要的时间浪费。第一个错误:Error:Failed to resolve: annotationProcessor如果你百度,你会发现大家说和butterknife 或者是apt等有问题,然后叫你更新google仓库。这种方案我试验过,但是往往都不凑效,请仔...原创 2019-03-05 11:53:21 · 4128 阅读 · 0 评论 -
Java设计模式之单例模式(Singleton)在Android系统服务中的应用
单例模式:一个应用程序中 只有一个实例 特点是: ① 私有的构造方法 ② 私有的静态实例 ③ 公有静态访问方法单例分为饿汉式和懒汉式:其中懒汉式存在线程安全问题,所以需要加锁。饿汉式:public class Singleton { // 饿汉式是直接创建对象 public static Singleton instance = new Singleton(原创 2015-10-31 23:21:20 · 1083 阅读 · 0 评论 -
设计模式之工厂模式(Factory)在Android中的应用
1.工厂模式也是我们最常见的一种模式了,可以用来创建多个不同的实例对象。Android代码中最常见的应该是对Fragment的集中管理了。用Fragment工厂,创建出不同的fragment。2.eg: 现在的app大多数都是由少数几个activity和众多的fragment组成,那么针对这些fragment,我们可以开辟一个工厂,针对不同的需求生产不同的fragment,如下就是典型的工厂模原创 2015-11-01 21:48:36 · 1801 阅读 · 0 评论 -
Android中历史浏览功能的实现
在许多购物的app上,可以看到当我们浏览了某一项商品的时候,app的某一页面会将我们浏览过的商品展示出来,现用代码展示如何实现此功能: 思路分析: 1.设计好数据库:用于将浏览的商品信息保存下来,其中的字段可以是id,json数据,和time(time的作用是为了避免重复添加已经浏览过的商品) 2.当点击到某一项商品的时候,访问数据库是否有该商品的信息,有的话更新商品浏览的时间,更新数据库。原创 2015-10-26 03:23:50 · 1447 阅读 · 0 评论 -
Android之搜索功能的实现
效果图展示: 实现的效果: 1.热门商品搜索栏中的数据从网络接口获取 2.搜索历史商品中的数据从SQLite数据库中获取 3.当点击热门商品搜索的时候,该数据会立刻出现在搜索历史商品中,不会重复增加已经出现过的商品,历史中的商品按照最新时间排序。 4.效果图中的button没有做监听,其实现原理是:获取EditText中的内容,按照服务端的接口格式要求,发送get请求,访问服务端获取原创 2015-10-28 21:17:22 · 9935 阅读 · 4 评论 -
观察者模式(Observer)在Android中的应用:
1.概念:Android中主要是指当某些敏感性数据eg:数据库和控件 发生变化的时候,发消息给对这些敏感数据感兴趣者,也即观察者,然后观察者用自己的业务逻辑处理。2.应用举例: 比如银行账户改变,将消息发给用户,用户收到消息处理此事件。针对以上情况,观察者设计模式如下:a. 模拟数据库,里面装载有许多敏感数据,对数据库中的数据进行操作,同时发消息通知所有观察者:public cla原创 2015-11-01 20:29:31 · 1175 阅读 · 0 评论 -
Android中对加载大图的处理
1.先看加载原理:Android中图片是以像素的形式加载到内存中。png、bmp、jpg等格式的图片(位图文件),都是以像素表述图片大小的。虚拟机的内存并不是无限的大,而是当前应用程序所能分配的内存。当图片的大小超过虚拟机内存的大小,就会出现OutOfMemoryError2.如何解决? a.思路: 把图片一相应的比例缩小,而不影响视觉效果。 代码如下:public class Ima原创 2015-11-01 23:09:55 · 396 阅读 · 0 评论 -
Android手机适配
Android不同设备之间的屏幕差距比较大,如果不进行适配,会导致在某一设备上运行的界面在另外一个设备上就不能正常展示了。现介绍几种常见的适配方法:1.java代码适配: 适合做等大的控件 比如在布局中设置TextView的宽高: <TextView android:id="@+id/tv" android:background="#F08080"原创 2015-10-31 18:37:24 · 779 阅读 · 0 评论 -
Java设计模式之适配器模式(Adapter)在Android中的应用
1.概念:将内容与控件相分离的一种设计(公式) ,达到内容灵活显示的目的。2.适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。单独讲解接口的适配器模式a. 接口的适配器模式的概念:有时我们写的一个接口中有多个抽象方法,当我们写该接口的实现类时,必须实现该接口的所有方法,这明显有时比较浪费,因为并不是所有的方法都是我们需要的,有时只需要某一些,此处为了解决这个问题,我们引入原创 2015-11-01 00:33:45 · 2330 阅读 · 0 评论 -
Java设计模式之模板模式(Template)在Android中的应用
1.说到这个Template 模式,使用实在是太普遍了,并且非常容易理解。通俗一点的说法就是:我们定义一个抽象类,里面封装一些抽象方法,然后子类继承这个抽象类,实现这些抽象方法。这就是一个模板模式,它可以起到减少代码重复,规范子类行为的作用。2.在Android开发中经常会看到先定义一个BaseActivity,然后后续的Activity都来继承这个BaseActivity,所以这个BaseA原创 2015-11-01 01:56:55 · 448 阅读 · 0 评论 -
Java设计模式之Command在Android中的应用
1.概念:其实刚开始我也不是很理解这一模式。后面看到一些文章谈到Command模式的许多代码都是针对图形界面,它实际就是菜单命令。把这句话照搬到Android中,会发现我们经常做的一些如对点击事件的监听就是采用的这种模式:把对控件和对控件的事件处理分离开来,降低耦合性。它和适配器模式非常相似,只不过适配器是针对内容,而command是针对事件。2.应用:android 中的点击监听事件就是comma原创 2015-11-01 03:10:08 · 700 阅读 · 0 评论 -
Android中对Activity的一些封装
自定义一个BaseActivity,将activity中的相同代码,相同功能封装到一个父类中,避免代码重复。 另外,此封装只是根据我自己的实际需要而写的,不同的项目可能需要的封装方法也不同,所以也可以对其中的一些方法进行删改,以便更贴合自己的项目要求。 代码如下:public abstract class BaseActivity extends FragmentActivity impleme原创 2015-10-26 03:04:21 · 592 阅读 · 0 评论