ViewPager是Android的support库中的一个控件. ViewPager + Fragment的使用,已经有FragmentAdapter的实现可以帮助我们快速进行开发了: ViewPager + View都要自己去继承PagerAdapter并实现,重写那些写过一次又一次的方法,于是以下对其封装. 见http://blog.csdn.net/maosidiaoxian/article/details/38661589…
1.不能左右滑动的ViewPager /* * Date: 14-7-28 * Project: Access-Control-V2 */ package cn.irains.access.v2.common; import android.content.Context; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; /**…
前几天在做一个Gradle用户指南的应用程序,使用的是TextView来加载HTML内容(至于为什么不用WebView,我也没有认真使用并比较过,也许以后会换吧),其中遇见了一些纠结的问题,所幸主要的问题都一一解决了. 下面说一下遇见的几个问题及我的解决方法. TextView异步加载HTML中的图片及图文重叠 在TextView中加载HTML图片,需要实现Html.ImageGetter接口,然后在public Drawable getDrawable(String source)中去获取图片…
在本文当中,我将会与大家分享一个封装了PopupWindow实现弹出菜单的类,并说明它的实现与使用. 因对界面的需求,android原生的弹出菜单已不能满足我们的需求,自定义菜单成了我们的唯一选择,在本文当中,我将与大家分享如何使用PopupWindow实现弹出菜单. 1.弹出菜单的封装PopMenu PopupWindow可以说是一个浮动在Activity之上的容器,通常用来显示自定义的视图.比如像自动完成输入框AutoCompleteTextView,它的提示列表就是使用PopupWindo…
ViewPager是android的support库中的一个控件,也是一个在许多应用开发中都用得比较多的控件.目前为止,对ViewPager的使用,我一般是用ViewPager + Fragment的组合,偶尔也有ViewPager加View的组合.关于ViewPager + Fragment的使用,已经有FragmentAdapter的实现可以帮助我们快速进行开发了,但是每次使用ViewPager + View都要自己去继承PagerAdapter并实现,重写那些我们写过一次又一次的方法,于是…
Android开发技巧--自定义控件之组合控件 我准备在接下来一段时间,写一系列有关Android自定义控件的博客,包括如何进行各种自定义,并分享一下我所知道的其中的技巧,注意点等. 还是那句老话,尽管我知道会被爬虫机器给过滤掉. 本文原创,转载请注明在CSDN博客上的出处: http://blog.csdn.net/maosidiaoxian/article/details/49884261 今天写第一篇,就先写一下最简单的,也就是我们大概最早接触的一类自定义--组合控件. 这里仅讨论使用布局…
本篇内容是接上篇<Android开发技巧--定制仿微信图片裁剪控件> 的,先简单介绍对上篇所封装的裁剪控件的使用,再详细说明如何使用它进行大图裁剪,包括对旋转图片的裁剪. 裁剪控件的简单使用 XML代码 使用如普通控件一样,首先在布局文件里包含该控件: <com.githang.clipimage.ClipImageView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+i…
Android开发技巧--高亮的用户操作指南 2015-12-15补记: 发现使用PopupWindow进行遮罩层的显示,在华为P7上会有问题.具体表现为:画出来的高亮部分会偏下.原因为:通过view.getRootView获取到DecorView,把其作为PopupWindow的anchorView来显示,然而在华为P7上依然是显示在status bar下面,而我们计算高亮时获取view的高度,是从decorView开始计算的,导致之间的距离相差了一个状态栏的高度.参考张鸿洋大神的做法对实现进…
Android开发技巧--自定义控件之自定义属性 掌握自定义控件是很重要的,因为通过自定义控件,能够:解决UI问题,优化布局性能,简化布局代码. 上一篇讲了如何通过xml把几个控件组织起来,并继承某个ViewGroup子类,把它们封装起来使用.这是我们接触到的最简单的一种自定制控件了.但许多时候,我们还需要在布局文件中使用它们的时候,能通过属性传入一些值,来影响最终的显示结果. 我们在做项目中经常会遇到的一个情况:一张图片加一个文本的组合.比如充值账户成功之后显示的一个界面,上面是一个表示成功的…
在上一篇<Android开发技巧--使用Dialog实现仿QQ的ActionSheet菜单>中,讲了这种菜单的实现过程,接下来将把它改成一个可复用的控件库. 本文原创,转载请注明出处: http://blog.csdn.net/maosidiaoxian/article/details/46324941 对于要实现的可复用的控件库,我需要它具备以下两点: 可添加远程依赖(不考虑Eclipse中的使用) 可灵活配置 分离库的实现代码 对于第一点,需要做的就是在Android Studio中新建一…
Android开发技巧--自定义控件之增加状态 题外话 这篇本该是上周四或上周五写的,无奈太久没写博客,前几段把我的兴头都用完了,就一拖再拖,直到今天.不想把这篇拖到下个月,所以还是先硬着头皮写了. <自定义控件>我也没想着要写多长或多短,只是介绍点知识,大部分都是自己积累和摸索的.网上有很多教如何自定义某某控件来做出很酷炫的效果的,但我想写的与这些不同.我平时所积累下来的知识,还是偏向于实用而匮乏于酷炫.而对于各种酷炫的效果,其实也是说不完写不尽的.掌握一定的数学及算法知识,再加上对API的…
Android开发技巧--自定义控件之使用style 回顾 在上一篇<Android开发技巧--自定义控件之自定义属性>中,我讲到了如何定义属性以及在自定义控件中获取这些属性的值,也提到了关于这些属性除了可以在布局文件中指定之外,也可以在主题中指定.接下来将分享我所了解的关于在主题中指定属性值的两种方式. 在主题中指定属性值 我们在开发过程中,虽然关于自定义控件学会了如何在布局文件中指定它的值,以应对不同的需求.但有时还会遇到这样一种情况:我们希望对某个控件的属性,能够做一个全局的配置,这样我…
在我们的应用开发中,有些业务流程会涉及到多个步骤,或者是多个状态的转化,因此,会需要有相关的设计来展示该业务流程.比如<停车王>应用里的添加车牌的步骤. 通常,我们会把这类控件称为"StepView".上图的这种设计相对来说还是比较简单的,下面我们以它为例,来一步步写我们的"StepView". 那么,实现这样的一个"StepView",我们会需要哪些知识呢? 所需知识 布局测量 图形文字绘制 文字位置计算 布局测量 首先像这样的St…
Android开发艺术探索笔记--View(二) View的事件分发机制 学习资料: 1.Understanding Android Input Touch Events System Framework 2.Managing Touch Events in a ViewGroup 3.Android事件传递机制 4.Input Events 5.Mastering the Android Touch System 6.MotionEvent MotionEvent(运动事件)的传递规则 用户每…
Android开发艺术探索笔记 --View(一) View的基础知识 什么是View View是Android中所有控件的基类.是一种界面层控件的抽象. View的位置参数 参数名 获取方式 含义 top getTop() View左上角纵坐标 left getLeft() View左上角横坐标 bottom getBottom() View右下角纵坐标 right getRight() View右下角横坐标 View:x/y getX()/getY() View左上角坐标 translati…
50个android开发技巧 http://blog.csdn.net/column/details/androidhacks.html…
在Android中动画移动一个View的位置,采用Scroller类实现 今天说最近自己遇到的一个问题,就是要用动画效果来移动一个VIew的位置. 这个具体的情况是,需要做一个SlidingMenu的app,之前找了一个开源的,但不知道为什么,用起来app的运行效率很低,会有卡顿的现象.无奈只要自己写了. SlidingMenu核心的就是可以滑动拉开左侧和右侧的菜单.刚开始考虑用TranslationAnimation来做.不过TranslationAnimation并不是真的移动一个View的…
这次再对内容为View的ViewPager的适配器PagerAdapter进行简单的封装,支持List数据和SparseArray的数据,带更新视图功能. 首先,先贴上最上面的抽象类代码: /* * Date: 14-8-18 * Project: Access-Control-V2 */ package cn.irains.access_control_v2.common; import android.support.v4.view.PagerAdapter; import android.…
一.概述 在Android开发中,我们经常与Bitmap打交道,而对Bitmap的不恰当的操作经常会导致OOM(Out of Memory).这篇文章我们会介绍如何高效地在Android开发中使用Bitmap,在保证图片显示质量的前提下尽可能占用更小的内存. 1. 什么是Bitmap Android中的Bitmap对象是对位图的抽象,它可以从文件系统.资源文件夹.网络等各种不同的来源获取.位图可以看做是像素点的集合,本质上就是通过一系列二进制位来描述一张图片,具有不同色彩格式的位图使用不同数量的…
再次内容View的ViewPager该适配器PagerAdapter简包,支持List数据与SparseArray数据.随着更新的浏览功能. 首先,首先贴上顶部抽象类代码: /* * Date: 14-8-18 * Project: Access-Control-V2 */ package cn.irains.access_control_v2.common; import android.support.v4.view.PagerAdapter; import android.util.Spa…
最近看到有人用Dialog来实现QQ的仿ActionSheet的自定义菜单,对于自己没实现过的一些控件,看着也想实现一下.于是动手了一下,发现也不难,和大家分享一下. 本文原创,转载请注明出处:http://blog.csdn.net/maosidiaoxian/article/details/46119197 在这里我也是用Dialog来实现,代码不多,这里说一下实现的过程. 菜单的布局文件 首先我们写先一下菜单的布局文件,很简单,一个ListView菜单再加一个取消的Button. <?xm…
1.getParent().requestDisallowInterceptTouchEvent(true);剥夺父view 对touch 事件的处理权,谁用谁知道. 2.ArgbEvaluator.evaluate(float fraction, Object startValue, Object endValue); 用于根据一个起始颜色值和一个结束颜色值以及一个偏移量生成一个新的颜色,分分钟实现类似于微信底部栏滑动颜色渐变. 3.Canvas中clipRect.clipPath和clipR…
MediaMetadataRetriever 顾名思义,就是用来获取媒体文件一些相关信息的类.包括一首歌的标题,作者,专辑封面和名称,时长,比特率等等.如果是视频的话,可以获取视频的长宽,预览图. http://developer.android.com/intl/zh-cn/reference/android/media/MediaMetadataRetriever.html TouchDelegate 用于更改View的触摸区域.场景:比如在RecyclerView的ItemView里包含了…
android开发获取网络状态整理: package com.gzcivil.utils; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.telephony.TelephonyManager; import android.text.TextUtils; public class NetworkUtils…
     在移动平台上为用户展示数据的一个经常用法是将数据填充进一个List内,而此时须要注意的一点就是: 原文地址:(http://blog.csdn.net/vector_yi/article/details/24936163)           怎样处理须要填充的数据为空的情况?       ListView及其它继承自AdapterView的类都有一个简便的处理这样的情况的方法:setEmptyView(View).      当ListView的Adapter为空或者Adapter的…
简单介绍 关于运行时权限的说法,早在Google发布android 6.0的时候,大家也听得蛮多的.从用户的角度来讲,用户是受益方,更好的保护用户的意思,而对于开发者来说,无疑增加了工作量. 对于6.0以下的权限在安装时,会根据权限声明产生一个权限列表,用户只有同意才能完成app的安装.而在6.0以后,不需要先对权限授权就可以安装app,对于权限的授权我们可以选择禁止. 在新的权限机制中,Google将权限分为两类: Normal Permissions(普通权限):不涉及用户隐私,不需要用户进…
RecyclerView虽然因其灵活性.高效性等特点而备受好评,但也不是一定得用它把ListView给替代掉.在某些场景中,ListView还是相对更适合的.比如数据量不大,不频繁更新,并且需要简单地设置一下divider或header.footer的时候,相对于RecyclerView的繁琐,ListView在实现上则表现得更方便和简洁. 过去的封装 在使用ListView的过程中,为了复用ListView中的convertView以及优化getView()时的findViewById操作,我…
本文参考了导航栏的代码viewpagerindicator实现. 本文介绍了之前版本号qq或者微信,添加文本,实现图标,导航栏的底部. 2014-09-14 13:59:42更新:library的代码已经从Demo中分离出来.见文末. 本样例依赖viewpagerindicator的两个接口:IconPagerAdapter及PageIndicator.这两个接口的方法例如以下: package com.viewpagerindicator; public interface IconPager…
本篇是我对开发项目的拍照功能过程中,对Camera拍照使用的总结.由于camera2是在api level 21(5.0.1)才引入的,而Camera到6.0仍可使用,所以暂未考虑camera2. 文档中的Camera 要使用Camera,首先我们先看一下文档(http://androiddoc.qiniudn.com/reference/android/hardware/Camera.html)中是怎么介绍的.相对于其他绝大多数类,文档对Camera的介绍还是比较详尽的,包含了使用过程中所需要…
本文章的导航栏代码参考了viewpagerindicator的实现.本文叙述的是之前版本的qq或微信中,底部的图标加文字的导航栏的实现. 2014-09-14 13:59:42更新:library的代码已经从Demo中分离出来,见文末. 本例子依赖viewpagerindicator的两个接口:IconPagerAdapter及PageIndicator.这两个接口的方法如下: package com.viewpagerindicator; public interface IconPagerA…