Android学习
yang_zhi_xiang
这个作者很懒,什么都没留下…
展开
-
Android中5大布局方式详解
本文章转载自:http://liangruijun.blog.51cto.com/3061169/632532Android中常用的5大布局方式有以下几种:线性布局(LinearLayout):按照垂直或者水平方向布局的组件。帧布局(FrameLayout):组件从屏幕左上方布局组件。表格布局(TableLayout):按照行列方式布局组件。相对布局(RelativeLayout):相对其转载 2016-04-04 20:03:09 · 501 阅读 · 0 评论 -
【Android UI】自定义TextView实现动态的文字闪动效果
这段时间一直在看自定义View感觉很有意思,今天刚刚看到了一个实现动态的文字闪动效果的自定义TextView,其原理是利用LinearGradient和Matrix来实现的,运行效果如下:要想实现这一个效果,可以充分利用Android中Paint对象的Shader渲染器。通过设置一个不断变化的LinearGradient,并使用带有该属性的Paint对象来绘制要显示的文字。首先,在onSizeCha原创 2016-04-15 10:16:00 · 3509 阅读 · 0 评论 -
【Android UI】ListView使用ViewHolder模式提高效率
ViewHolder模式是提高ListView效率的一个很重要的方法。ViewHolder模式充分利用了ListView的视图缓存机制,避免了每次在调用getView()的时候都去通过findViewById()实例化控件。根据测试,使用ViewHolder将提高50%以上的效率。使用方式是在Adapter中定义一个内部类ViewHolder,并将布局中的控件作为成员变量。public final原创 2016-05-03 10:20:55 · 517 阅读 · 0 评论 -
【Android UI】自动显示、隐藏布局的ListView
先描述一下要实现的效果:当我们在ListView上滑动的时候顶部的ActionBar或者ToolBar就会相应的隐藏或显示。滚动前的界面滚动后的界面要实现此效果,关键就在于如何获得ListView的各种滑动事件,所以要借助View的OnTouchListener接口监听ListView的滑动,以判断显示或隐藏ToolBar。首先,需要给ListView添加一个HeaderView,避免第一个Item原创 2016-05-03 10:52:05 · 1057 阅读 · 0 评论 -
【Android UI】具有弹性的ListView
要实现的效果就是,滑动ListView到顶部或者底部时会继续向上或者向下滑动一段距离。效果如下: 通过查看ListView源码,ListView中有一个控制滑动到边缘的处理方法,如下所示:protected boolean overScrollBy(int deltaX, int deltaY,原创 2016-05-03 11:20:00 · 348 阅读 · 0 评论 -
【Android UI】动态改变ListView布局
当点击了Item时,其布局文件发生改变来达到一个Focus的效果。一般有两种方法。一种是将两种布局文件写在一起,通过控制布局的显示。隐藏,来达到切换布局的效果;另一种则是在getView()的时候,通过判断来选择加载不同的布局,这样就要在每次点击操作后刷新布局,重写调用getView(),使用notifyDataSetChanged()方法来实现。运行效果:原创 2016-05-03 11:34:18 · 2360 阅读 · 0 评论 -
创建复合控件
创建复合控件可以很好地创建出具备重要功能的控件集合。这种方式通常需要继承一个适合的ViewGroup,再给它添加指定功能的控件,从而组合成新的复合控件。下面我们就来看看改如何创建一个这样的UI模板。模板应该具有通用性与可定制性。定义属性在values目录下创建一个attrs.xml:<?xml version="1.0" encoding="utf-8"?><resources> <dec原创 2016-04-20 22:56:11 · 849 阅读 · 0 评论 -
onCreate()方法中获取View的宽高为0的原因及解决方法
如果需要开发一些需要依赖UI控件的宽度和高度的功能,很多人可能会用到View的getHeight()和getWidth()方法。对于新手来说这里会有一个小小的陷阱需要注意。如果你试图在onCreate()方法里获取控件的宽高时,发现返回值是0。为什么会是这样的呢。因为当onCreate()方法被调用的时候会通过LayoutInflater将xml文件填充到ContentView。填充过程中只包括创建转载 2016-05-05 17:53:48 · 1149 阅读 · 0 评论 -
【Android UI】音频条形图
这次来实现一个类似在PC上某些音乐播放器上根据音频音量大小显示的音频条形图。运行效果如下:其实现原理就是自定义View,这里就不去真实的监听音频输入,只是随模拟一些数字。如上图所示的静态音频条形图,要实现这样的效果其实就是绘制一个个的矩形,每个矩形之间稍微偏移一点距离即可。我们可以通过循环创建小矩形,再随机产生矩形的高度。下面是具体的实现代码:@Overrideprotected void onD原创 2016-04-22 23:10:48 · 2419 阅读 · 0 评论 -
eclipse 和 android studio 快捷键对比
操作studioeclipse debug/run计算变量值alt+F8ctrl+shift+I跳到下一步F8F6跳到下一个断点shift+F8F8进入到代码F7F5停止运行Ctrl+F2转载 2016-07-01 09:39:08 · 1249 阅读 · 0 评论 -
【Android UI】ListView的使用和简单优化
ListView是每个app中都要使用的,所以今天我来总结下ListView的使用和一些简单的优化。 先看下运行效果: 一、创建数据库为了模拟数据,这里将数据保存数据库中,顺便复习一下SQLite的知识,将数据保存到数据库的好处就是很容易模拟网络请求的延迟。1.创建数据库打开帮助类BlackNumberDBOpenHelper,它继承自SQLiteOpenHelperpackage com.yz原创 2016-07-05 21:51:43 · 2161 阅读 · 1 评论 -
【Android UI】自定义圆形SeekBar和自定义Dialog的结合使用
最近要做一个比较有趣的效果,就是将android手机设置的条形的SeekBar换成圆形的SeekBar,这里我不讲怎么将定制系统的设置rom,但如果有人想了解设置里面的显示可以看看这篇博客,只讲怎么自定义圆形SeekBar和自定义Dialog,虽然网上有很多这方面的资料,但不系统,所以在这里总结下,方面以后观看。自定义圆形SeekBar关于圆形SeekBar我是在GitHub上下载的一个开源项目,项原创 2016-04-14 16:05:33 · 4540 阅读 · 0 评论 -
【Android基础】消息处理机制原理
所有使用UI界面的操作系统,后台都运行着一个死循环,在不停的监听和接收用户发出的指令,一旦接收指令就立即执行。Looper Message Handler三者之间的关系:当我们的Android应用程序的进程一创建的时候,系统就给这个进程提供了一个Looper,Looper是一个死循环, 它内部维护这个一个消息队列,Loop不停地从消息队列中取消息(Message),取到消息就发送给了Handler,原创 2016-04-10 20:43:30 · 283 阅读 · 0 评论 -
【Android基础】网络图片查看器
网络图片查看器流程从网络上获取数据: 1. 发送请求:GET 2. 接收服务器端返回的响应数据使用代码实现的步骤: 1. 创建URL,打开一个HTTP的连接; 2. 设置请求头信息:GET(GET、POST) 3. 接收服务器端返回的响应数据,响应码:200 ok,404没有找到资源 ,503服务器端内部错误 4. 把接收的二进制数据转换成图片模版代码//1.原创 2016-04-10 20:08:05 · 365 阅读 · 0 评论 -
View的测量
关于几点说明Android中每个Activity包含一个Window对象,这个Window对象就是PhoneWindowPhoneWindow将DecorView设为根View所有View的监听事件都是通过WindowManagerService来进行接收的在显示上屏幕是分两部分的,TitleView和ContentViewsetContentView就是设置ContentView,req原创 2016-04-04 22:52:13 · 533 阅读 · 0 评论 -
【AndroidManifest.xml详解】Manifest属性之sharedUserId、sharedUserLabel
android:sharedUserId当APK安装的时候,userid这个标志就会产生。APK在设备上的整个生命周期中,这个ID不再改变。不同设备上同一个应用包可能有不同的userid,重要的是在给定的设备上,每个应用包有自己独立的userid。userid的特点:作为APK身份的标识userid对应一个Linux用户,所以不同APK(用户)间互相访问数据默认是禁止的.那么不同APK之间想要转载 2016-04-05 14:45:38 · 1540 阅读 · 0 评论 -
Activity的四种launchMode
launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。这里简单介绍一下task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的task。Activity一共有以下四种launchMo转载 2016-04-05 18:31:15 · 267 阅读 · 0 评论 -
Android中Styles、Themes、attrs介绍和他们之间的关系
一、Styles和Themes在Android中,style被用来指定窗体或视图的样式,比如视图的宽高、补白(padding)、背景,字体颜色等。style不需我们在代码中进行设置,可以在xml文件中按照DTD格式进行配置。Android中的style其实跟css的思想一样,允许我们把功能实现和外观设计分离开,View配置也提供了html中如id、name属性一样的功能标签style,让我们有能力把转载 2016-04-06 23:07:23 · 547 阅读 · 0 评论 -
【Android基础】电话拨号器
1,到清单文件配置权限: android.permission.CALL_PHONE 2,配置布局文件EditText节点接收输入的电话号码 3,MainActivity中的核心代码:EditText et = (EditText)findViewById(R.id.et_num);String num = et.getText().toString().trim();//创建拨打电话的意图原创 2016-04-09 15:48:34 · 375 阅读 · 0 评论 -
【Android基础】四种点击事件
android里面的点击事件有多种实现方式,下面我着重来讲解常用的四种点击事件。 以短信发送器为例 发送短信的核心代码如下,先添加权限:android.permission.SEND_SMS//发送短信的核心代码private void sendMessage() { //1,获取SmsManager SmsManager manager = SmsManager.getDef原创 2016-04-09 16:14:29 · 647 阅读 · 0 评论 -
【Android基础】常用的布局和单位的简介
五大布局LayoutLinearLayout 线性布局下面列出的部分常用的属性android:orientation="horizontal" 制定线性布局的排列方式 水平 horizontal 垂直 verticalgravity 控制当前控件内容显示区域layout_gravity 当前控件在父元素的位置Layout_weightSumLayo原创 2016-04-09 16:39:37 · 406 阅读 · 0 评论 -
【Android基础】利用布局来拼图
这次我们来讲一个拼图的例子,主要讲解下相对布局。使用布局将下面的碎片排列成一张完整的图片: 完成效果图:原创 2016-04-09 17:03:05 · 3814 阅读 · 1 评论 -
【Android基础】文件操作
任何一个项目都少不了对文件的操作,因为项目说到底就是数据的传递和展示,而文件作为数据传递的一种媒介就显示出其重要的地位,下面我们就来讲一下Android中对文件的操作。 文件操作分为: 1. 保存文件到手机内存 2. 读取手机中的文件 3. 把文件存放在SDCard##保存文件到手机内存 1,在上下文中有一个方法叫openFileOutput()方法可以用于把数据输出到文件中原创 2016-04-10 15:43:14 · 314 阅读 · 0 评论 -
【Android基础】通过流将文件写入手机data目录
我们通过一个模拟用户登录的界面来将用户的数据写到文件中,之后在用户打开应用时用过读取文件中的信息将数据回显在登录界面。用户登录界面设计代码如下:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"原创 2016-04-10 15:59:24 · 7435 阅读 · 0 评论 -
【Android基础】通过SharedPreferences来保存数据
概述:很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存。如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPref原创 2016-04-10 16:20:04 · 411 阅读 · 0 评论 -
【Android基础】学生管理系统
用户可以输入姓名、性别、年龄三个字段,通过点击添加学生按钮,将学生信息展示到开始为空的ScrollView控件中,ScrollView控件只能包裹一个控件,我这里包裹的是LinearLayout。点击保存数据按钮将数据通过XmlSerializer对象将数据保存到sd卡中,当点击恢复数据按钮时将sd卡文件中的数据读取出来回显到ScrollView中。大概功能就是这样的,下面我们来看看具体的代码吧。因原创 2016-04-10 19:32:15 · 5872 阅读 · 3 评论 -
像素翻转
题目描述有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。 测试样例: [[1,2,3],[4,5,6],[7,8,9]],3 返回:[[7,4,1],[8,5,2],[9,6原创 2016-08-11 16:25:45 · 898 阅读 · 0 评论