Android实战功能实现DEMO
wwww_dong
这个作者很懒,什么都没留下…
展开
-
ViewFlipper网络图片加载及关联导航按钮
ViewFlipper从网络动态加载图片,根据图片的个数动态生成相同个数的RadioButton导航按钮。并实现ViewFlipper和RadioButton的联动原创 2016-08-13 17:38:58 · 555 阅读 · 0 评论 -
图片的单指拖拽与双指缩放
这会涉及到两个知识点: 1、Matrix对象:Matrix是一个3*3的矩阵,里面封装了9个float数值,通过控制这9个数值,可以控制图片的大小、旋转、位置、倾斜等。 2、Android的事件处理机制 有两种:基于监听的事件处理机制;基于回调的事件处理机制。 事件处理的先后顺序:1、触发组件绑定的事件监听器;2、触发组件提供的回调方法;3、传播到该组件所在的Activity。其中的返回值代原创 2017-02-23 13:54:49 · 2678 阅读 · 0 评论 -
处理Android程序运行时的配置变化
Android程序在运行期间设备的配置是可能发生改变的(例如屏幕的方向,键盘可用性,和语言等)。当这些配置发生变化时,Android会重启正在运行的Activity(先调用onDestory(),紧接着调用onCreate())。这个设计是为了让你的程序在配置发生变化时,使用不同的资源自动去适配新的配置机器。正确的处理重启,一件很重要的事就是通过Activity正常的生命周期去恢复之前状态,你可以在转载 2017-02-23 15:20:15 · 280 阅读 · 0 评论 -
Gestures(手势)
Android提供手势检测,并为手势识别提供了相应的监听器!Android运行开发者自行添加手势,并且提供了相应的API识别用户手势!Android中手势交互的执行顺序 - 1.手指触碰屏幕时,触发MotionEvent事件! - 2.该事件被OnTouchListener监听,可在它的onTouch()方法中获得该MotionEvent对象! - 3.通过GestureDetector转原创 2017-02-24 18:13:26 · 515 阅读 · 0 评论 -
android树状结构导航图
本文参考Hongyang大神文章 http://blog.csdn.net/lmj623565791/article/details/40212367 ,自己写个demo记录下。先看效果图: 总思路:将每条数据都看作是listview的一个item,按照它们之间的关系,将这些item由上到下排序。然后将每个item设置为不同的显示状态,再加上点击每个item会联动其他相应item的显示状态改变,这原创 2017-03-29 16:45:21 · 3517 阅读 · 0 评论 -
ViewPager实现简单的画廊效果
效果图如下: 实现思路如下: 1、将ViewPager的宽度设置为屏幕宽度的一半,并将ViewPager置于屏幕的中央; 2、通过clipChildren属性将ViewPager控件范围外的View显示出来; 3、通过设置ViewPager的PagerTransformer来实现当前展示图片的放大。 4、通过将外部容器的触摸事件委托给ViewPager处理,达到即时是滑动ViewPager原创 2017-04-05 16:03:35 · 2062 阅读 · 0 评论 -
Fragment用法总结
一、FragmentManager、FragmentTransaction、Fragment、FrameLayout容器之间的关系和用法:1、布局中用Framlayout容器,这样在代码中动态增加Fragment时才能达到层叠效果。2、Fragment在Activity中初始化之后,它的生命周期就跟着Activity走了。注意,在onCreate方法中是不能findFragmentByTag的,因为原创 2017-06-30 14:39:30 · 1763 阅读 · 0 评论 -
Activity状态保存
1、当某个activity变得”容易”被系统销毁时,该activity的onSaveInstanceState()就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候。onSaveInstanceState()的调用遵循一个重要原则,即当系统存在“未经你许可”时销毁了我们的activity的可能时。调用将发生在onPause()或onStop()方法之前如果我们没有覆写原创 2017-06-30 17:25:39 · 423 阅读 · 0 评论 -
更改dialog样式activity在屏幕中显示的位置
/** * 更改dialog样式activity在屏幕中显示的位置 */ @Override public void onAttachedToWindow() { super.onAttachedToWindow(); //即设定DecorView在PhoneWindow里的位置 View view = getWin原创 2017-08-01 16:09:41 · 1882 阅读 · 0 评论 -
二维码变形问题
可能有两个原因: 1、屏幕旋转导致的,增加以下代码即可 Point screenResolutionForCamera = new Point(); screenResolutionForCamera.x = screenResolution.x; screenResolutionForCamera.y = screenResolution.y;原创 2017-07-26 11:22:58 · 4600 阅读 · 0 评论 -
PorterDuffXferMode的几个坑
转自:http://blog.csdn.net/u010335298/article/details/51983420转载 2017-08-22 16:22:58 · 306 阅读 · 0 评论 -
startActivityForResult()
startActivityForResult(),从名字就能看出来,意思是为了得到结果数据来启动一个Activity。仔细分析一下:为了得到数据,可以有各种途径,比如说通过封装工具类、通过网络等,但这里为什么要通过Activity呢?不难想到,Activity可以和用户交互,得到一些数据,这是其他途径所做不到的。由此,startActivityForResult()的使用场景就清晰了。一、使用场景原创 2017-12-09 03:06:21 · 325 阅读 · 0 评论 -
自定义permission
1、Android不允许两个不同的应用定义一个相同名字的权限(除非这两个应用拥有相同的签名),所以在命名的时候,需要注意哦。2、permisssion限制只针对跨进程的情况,如果是在一个应用内调用这个权限设置是没有作用的。3、参考:http://blog.csdn.net/u014088294/article/details/51924223原创 2017-12-01 19:13:23 · 269 阅读 · 0 评论 -
字符串加密,从资源文件、磁盘文件中加载小图
private String hashKeyFromUrl(String url) { String cacheKey; try { MessageDigest digest = MessageDigest.getInstance("MD5"); digest.update(url.getBytes());原创 2018-01-11 17:40:29 · 193 阅读 · 0 评论 -
Matrix图片变换处理
本篇博客主要讲解一下如何处理对一个Bitmap对象进行处理,包括:缩放、旋转、位移、倾斜等。在最后将以一个简单的Demo来演示图片特效的变换。Matrix 对于一个图片变换的处理,需要Matrix类的支持,它位于”android.graphics.Matrix”包下,是Android提供的一个矩阵工具类,它本身不能对图像或View进行变换,但它可与其他API结合来控制图形、View的变换,如Can转载 2017-02-22 10:06:53 · 580 阅读 · 0 评论 -
自定义控件之onLayout()
onLayout()方法的目的:将ViewGroup里的每一个子View放置在一定的位置。实现思路:在onLayout()方法里获取子View的实例,然后通过调用View.layout(int l, int t, int r, int b)实现子View在ViewGroup里的精确放置。自定义View首先调用onMeasure进行测量,然后调用onLayout方法,动态获取子View和子View的测原创 2016-12-28 17:23:36 · 929 阅读 · 0 评论 -
自定义View之onMeasure()
其实onMeasure()一般不需要重写,因为本来的宽高设值方式就很合理啊,除非你有一些特殊的、变态的要求,不过对其了解一些还是有必要的:一、关于“onMeasure(MeasureSpec width,MeasureSpec height)的参数”是从哪里传过来的:onMeasure()函数由包含这个View的具体的ViewGroup调用,因此值也是从这个ViewGroup中传入的。当控件的容器正原创 2016-12-28 14:53:12 · 318 阅读 · 0 评论 -
PullToRefreshExpandableListView的用法
分组列表上下拉刷新的实现原创 2016-08-10 18:44:22 · 4160 阅读 · 1 评论 -
HttpURLConnection的基本用法
代码如下: //开启子线程发起网络请求 new Thread(new Runnable() { @Override public void run() { try { //请求实体的内容转化为byte数组 final byte原创 2016-11-07 16:48:02 · 495 阅读 · 0 评论 -
制作带边框的圆形头像
效果如下: 它其实是由两部分组成,一个是带背景的RelativeLayout容器,如下图: 另一部分是放在RelativeLayout容器里的ImageView,“它的上下左右”必须都距离”RelativeLayout容器”有“红色边框的宽度”。而且ImageView里放的图片是经过剪裁的圆形图片。如下图: 裁剪后的圆形图片如下图,只需将这张圆形图片放入ImageView,就可以得出带边框原创 2016-11-08 14:37:18 · 6653 阅读 · 0 评论 -
媒体图库
一、拿取资源 当我们要拿取手机的图片时,怎么办? 安卓自带的程序会扫描SD卡,找出所有的图片,并用数据表来维护这些信息,所以我们只需要查这张表就能得到所有的图片信息。就是这个程序: 表中用到的字段: 注意:在安卓老版本之前(貌似是2.3.3),这张表里面是没有width和height的。要查这张表需要知道它的uri:MediaStore.Images.Media.EXTERNAL_CONTE原创 2016-12-12 10:23:29 · 620 阅读 · 0 评论 -
如何在内存中画出一张图片
三大元素:Bitmap、Canvas、Paint //准备一个新的bitmap Bitmap bm = Bitmap.createBitmap(200,200, Bitmap.Config.ARGB_8888); //准备Canvas Canvas canvas = new Canvas(bm); //将这个bitmap填原创 2016-12-12 14:14:26 · 2001 阅读 · 0 评论 -
动态添加控件
如上图,在添加材料时,可能需要添加不定数量的其他材料,此时就需动态添加材料栏。代码和注释如下: //添加其他 mTvAddOther.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {原创 2016-12-06 13:44:01 · 320 阅读 · 0 评论 -
ListView的Adapter
public class OrderListConfirmAdapter extends BaseAdapter { /** * 应用环境变量 **/ private Context mContext = null; private List mListOrder = null; private LayoutInflater listContain原创 2016-12-06 14:16:41 · 214 阅读 · 0 评论 -
ListView的headerView和footerView
如上图, 现在有一个需求,listview头部和尾部的内容不变,但它中间的内容是可变长的,整个区域都可滑动。这时就可运用headerView和footerView来解决此问题。首先要画出三块布局:1、headerView 2、footerView 3、itemView 主要代码和注释如下://初始化headerView和footerView LayoutInflater inf原创 2016-12-06 15:21:31 · 1374 阅读 · 0 评论 -
获取图片资源:相册选择、拍照、裁剪
1、从本地相册拿取图片路径: Intent intentPick = new Intent(Intent.ACTION_PICK); intentPick.setType("image/*"); activity.startActivityForResult(intentPick, CODE_ACTIVITY_REQUEST_GALLERY);publi原创 2016-12-07 10:15:54 · 420 阅读 · 0 评论 -
popupWindow的实际使用
/** * 弹出popupWindow */ private void showPopupWindown() { //新建popupWindow实例 View view = LayoutInflater.from(this).inflate(R.layout.view_popupwindow_choose_reason, null);原创 2016-12-15 10:33:34 · 325 阅读 · 0 评论 -
SQLiteOpenHelper
【SQLite使用流程】 1. 打开/创建数据库 2. 创建数据表(如果数据表不存在的话) 3. 操作数据表中的数据(增删改查) 4. 关闭数据库连接openOrCreateDatabase(“tedu.db”,MODE_PRIVATE,null)会拿到数据库对象,但是如果执行创建数据表操作的话,就会每次运行代码时都重复创建数据表。因此,需要对数据表进行管理,也就引入了SQLiteOpenH原创 2016-12-22 11:42:38 · 405 阅读 · 0 评论 -
DrawerLayout的简单用法
主要有三个方面:1、侧滑功能的实现。(写完xml文件即可实现)<?xml version="1.0" encoding="utf-8"?><!--抽屉布局必须得以DrawerLayout作为XML文件的根节点--><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/re原创 2016-12-23 14:59:24 · 389 阅读 · 0 评论 -
自定义View之onDraw()
自定义View时可能会重写三个方法: 1、onDraw():你的View里画些什么内容 2、onMeasure():你的View的宽高 3、onLayout():你的View放在什么位置这次写onDraw(),帮助自己总结记忆。思路如下: 1、自定义属性,获得绘制的素材。在View里画东西,你总要有素材,也就是画些什么。比如说要画一张图,就要知道是什么图;要画一段文字,就需要知道是什么文字,原创 2016-12-27 19:34:56 · 638 阅读 · 0 评论 -
消息处理机制
一、为什么有消息机制?主要是为了解决子线程中无法访问UI。为什么android的子线程无法访问UI?因为UI控件是线程不安全的,之所以不给它加入锁机制,是因为会降低UI的访问机制。所以设计为单线程模型处理UI,再引入Handler。通过ThreadLocal来管理不同线程的Looper。二、MessageQueue主要有两个操作:enqueueMessage:往Mess原创 2018-01-09 17:34:54 · 754 阅读 · 0 评论