- 博客(25)
- 资源 (16)
- 收藏
- 关注
原创 Android TextView图文混排,图片和文字居中对齐
TextView用来显示文本是最普通的用法了,有些情况需要我们再文本中显示图片,比如显示表情,下边来说说处理方法.1.下图是项目中一个UI需求 如图需要在文本的前边显示新上标签,开始的处理方法是用了两个空间分别显示标签和文本,但是有个问题是第二行的文本不能顶头对齐,很不美观.我们可以通过图文混排来解决上述问题,通过SpannableString来实现,在相应位置使用ImageSpan替换即可,但是
2017-08-16 17:46:44
3912
1
原创 Android自定义对话框
由于Android系统的碎片化,导致对话框的样式在每款手机上都不尽相同,基于这个原因和UI的需求,在项目中自己定义了一个对话框,提供基本的样式设定,效果如图我们定义一个CustomerDialog继承自Dialog,并对外暴露设置属性的相关方法,类代码如下.package com.qfang.androidclient.widgets.dialog;import android.app.Dialog
2016-12-08 16:30:14
736
原创 SVN打分支,分支合并操作
这篇博客写了个标题就一直放在着了,最近忙完了手头的工作,有时间把这篇文章写完.以前的项目没有太多需求,只在主干进行迭代开发,随着需求的日渐增多,不得不进行多版本并行开发.以前一直对分支合并敬而远之,怕开发中出现大问题给整个团队挖坑,但是事实证明,对一个知识不了解用起来还真有不少问题,真应了那句"书到用时方恨少".言归正传,下边说说在开发中遇到的一些问题,顺便说说我们的解决办法,供大家参考.我们的
2016-10-27 23:50:31
2514
原创 Android适配不同的系统版本
新的Android版本会为我们的app提供更棒的APIs,但我们的app仍应支持旧版本的Android,直到更多的设备升级到新版本为止。Platform Versions的控制面板会定时更新,通过统计访问Google Play Store的设备数量,来显示运行每个版本的安卓设备的分布。一般情况下,在更新app至最新Android版本时,最好先保证新版的app可以支持90%的设备使用。Tip:为了能在
2016-09-17 22:22:10
4894
原创 Android ViewPager嵌套GridView实现滚动菜单(demo)
目前国内的app很常见的一种首页菜单布局就是类似于大众点评等团购网站的首页菜单交,如下图上边的菜单区域,通常在Android中是将GridView装填到ViewPager中进行显示,网上的例子或多或少都有点小问题,下边写一个小例子来实现一下.先看效果图 主要代码如下,后面有demo可以下载,代码写的不是很完美,可以再封装一下,但功能没问题package com.example.gridviewac
2016-07-31 20:56:10
6392
原创 Android自定义加载对话框
Android的碎片化造成了加载对话框在不同系统和机型上的不统一,而且在开发过程中,如果前期没有约束好会造成每个人都有自己的一套加载对话框.所以这里继承自Dialog自定义了一个统一样式的加载对话框要注意对话框的使用场景和交互细节哦,做出好的交互对产品是至关重要的.package shidong.com.commonformlayout;import android.app.Activity;im
2016-07-31 19:48:02
5450
原创 Android自定义控件之标题控件
在Android项目中我们经常会遇到如下的UI展示需求 demo下载就是模块标题的显示,通常后面内容是动态的,还有诸如有无向右箭头,上下是否显示线条等不同需求.之前项目中的做法是用一个include标签将次布局引入,这必然导致布局文件不易读,而且引入太多include标签页会影响界面的渲染速度,所以改为组合控件形式的自定义控件来改造,支持xml属性定义并且对外暴露相关方法.1.首先还是自定义我们需
2016-07-30 18:18:31
1425
原创 Android属性动画实现TextView类似支付宝余额数字滚动
Demo下载链接 项目中的小需求,完成类似于支付宝余额的数字滚动效果,找了网上的一个小demo,再加上郭婶的关于属性动画的文章,整理一部分代码分享给有需要的人.下面贴出封装的TextView代码片段,主要是利用属性动画来更新TextView完成数字滚动更新.package shidong.com.numberscrolldemo.view;import android.animation.Valu
2016-04-21 22:31:34
5969
原创 多个构造参数考虑使用Builder构造器模式
对于有多个参数的类,我们一向习惯采用重载构造方法的模式,像这样public class User { private String name; private int age; private String address; public User(String name) { super(); this.name = name;
2016-02-26 21:37:51
526
原创 怎样编写Android界面使你的代码易于重构和维护
Android开发会涉及到大量的绘制界面工作,项目中可能会遇到这种情况,比如将整个界面风格从Drawer变成底部tab切换的架构,如果你的代码都写在Activity中,并且没有进行分层管理,那么修改起来将会是非常蛋疼的一件事情.下边就说说怎样合理规划代码结构使之易于重构和维护.我已一个mvp架构的demo作为演示程序,如果想了解mvp架构,可以参考文章Android MVP架构和MVC架构比较 1
2016-02-26 13:32:42
857
原创 Android布局优化 merge标签使用
复杂的界面布局往往会因为层次过多影响性能,这是我们需要一些技巧来优化布局. merge标签使用 标签用于减少View的层次来优化Android布局,先写一个布局<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/to
2016-02-25 23:50:30
1878
原创 ScrollView嵌套ListView不置顶显示
Scrollview里面嵌套了一个Listview,我们一般会自定义ListView,重写onMeasure()方法来解决滑动冲突和显示问题.public class MyListView extends ListView { public MyListView(Context context) { // TODO Auto-generated method stub
2016-02-25 11:30:17
948
原创 Android Studio断点调试方法
断点调试是我们在开发中经常用到的,刚从Eclipse转到Android Studio有点摸不到头脑,还好经过一段摸索,已经基本掌握了Android Studio上边的一些调试小技巧.下边就来说说常用的两种方法 1.我们打上断点之后,点击屏幕上的断点模式运行,即可进入断点调试状态 这种方法使整个进程始终处于断点调试状态,运行起来会比较慢,下边说下第二种方法.2.先运行程序,待到断点处,我们再单独对
2015-12-05 14:28:35
1571
原创 Swift下弹出对话框
//对话框控制器 let alertController = UIAlertController(title: "提示", message: "数字不能为空", preferredStyle: UIAlertControllerStyle.Alert) //点击按钮动作 let canCelAction = UIAlertAct
2015-11-29 21:57:33
2113
原创 通俗地理解Swift语言计算属性
Swift语言有一种新的属性叫计算属性,乍一看被一大堆定义搞晕,这里写一个小demo,来了解一下什么是计算属性概念:计算属性不直接保存变量值,但是可以通过对其值的设置来改变其它属性的值,用起来非常方便,可以不用像Java一样定义成员方法class MacComputer { var name = "macbookpro" var count:Double! var price
2015-11-27 23:23:25
429
原创 Android MVP架构和MVC架构比较(有代码示例)
Android MVP架构和MVC架构比较 代码示例请点击点击下载demo 1.概述 如题,本文想要讨论的是MVP与MVC之间的比较,那么在这之前,我们首先来回顾一下MVC的概念.MVC我们再熟悉不过,即Model-View-Controllor,对应于Android项目结构如下 - Model对应于业务逻辑和实体类 - View对应于xml布局
2015-11-26 19:53:11
3076
原创 Android PopupWindow显示在控件上方或者下方(demo)
项目中实现Android PopupWindow显示在控件上方或者下方主要代码如下 View view = mInflater.inflate(R.layout.layout_popupwindow, null);PopUpwindowLayout popUpwindowLayout = (PopUpwindowLayout) view.findViewB
2015-01-23 14:49:10
9171
原创 Google Map Android API V2使用总结
通过如下几个步骤完成:1. 安装Google Play服务 SDK,通过SDK Manager完成,在Extras下,安装完成以后,该SDK/extras目录下将会出现如下目录:google/google_play_services。2. 获取访问Google Map的APIKey,需要到Google APIs Console完成,方法如下:2.1 打开https://code
2013-06-14 20:18:57
884
原创 Android中实现仿微信界面切换平滑滑动效果
直接说实现步骤1.打开AndroidManifest.xml文件,在application节点中 将android:theme="@style/AppTheme"。2.在res--->values下新建styles.xml文件(如果有则不需要新建),将内容改为如下配置 14sp #F34141 @style/a
2013-05-21 20:30:07
2622
原创 巧用Java移位运算
最近在开发项目的过程中涉及到Android手机和下位机进行蓝牙通信的编程,初次接触这些方面的处理,感觉要比处理xml,Json蛋疼一点。代码经过数次修改,基本可以稳定运行了,处理数据过程也是一波三折...最终找到相对简单一些的办法,但也不是很好,需要继续学习。说下移位运算,需要发送蓝牙请求下位机返回文件。数据以字节数组形式返回。假设该字段为为byte[]{10,00 },通过 currSize
2013-04-11 17:39:10
663
原创 Handler发送消息携带多个参数
通过Bundle携带多个参数进行发送Message msg = new Message(); msg.what = 2; Bundle bundle = new Bundle(); bundle.putString("content", content); bundle.putString("button", "开始统计");
2013-03-21 19:59:43
5731
原创 Activity生命周期理解
生命周期方法不多说,onCreate创建与onDestroy销毁;onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause;这6个方法是相对应的,那么就只剩下一个onRestart方法了,这个方法在什么时候调用呢?答案就是:在Activity被onStop后,但是没有被onDestroy,在再次启动此Activity时就调用onRestart(而不再调用onCrea
2013-03-14 15:37:19
522
Android ViewPager嵌套GridView
2016-07-31
Android属性动画实现TextView类似支付宝余额数字滚动
2016-04-21
Android编写易于维护重构的界面代码(Fragment)
2016-02-26
Android MVP和MVC模式比较Demo
2015-11-26
Android Popupwindow显示在控件上方实例下载例子
2015-01-23
Android UniversalImageLoader开源框架加载图片
2015-01-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人