android手把手开发一个图片浏览器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一Android是什么 Android是基于Linux内核的软件平台和操作系统早期由Google开发后由开放手机联
盟Open Handset Alliance开发。它采用了软件堆层software stack又名以软件叠层
的架构主要分为三部分。低层以Linux内核工作为基础只提供基本功能其他的应用软
件则由各公司自行开发以Java作为编写程序的一部分。另外为了推广此技术Google
和其它几十个手机公司建立了开放手机联盟。Android在未公开之前常被传闻为Google电
话或gPhone。大多传闻认为Google开发的是自己的手机电话产品而不是一套软件平台。
到了2010年1月Google开始发表自家品牌手机电话的Nexus One。目前最新版本为
Android2.1。 下图是它的结构
简单来讲Android就是一个开源的手机软件开发工具。
我主要给大家讲应用方面大家如果有兴趣可以了解相关基本知识。
要开发一个Android应用首先得搭建Android开发环境下载并安装Android sdkSoftware
Development Kit, 即软件开发工具包 。由于Android开发是集成在Eclipse中需下载并安装ADT Eclipse集成Android sdk插件。搭建环境会用一个专门的章节为大家详细讲
解这里我就不再赘述。 二Android程序的创建 开发环境搭好后我们先启动Eclipse创建一个Android的应用程序 然后在左上角单击FileNewAndroid Project如下图所示
如果在图中Java Project找不到Android Project
在左上角单击FileNewOther
在弹出框中Android文件件中选中Android Project然后单击Next进入下一步
弹出一个列表框
下面对这个列表的一些重要属性进行讲解
1应用程序名称以及内容栏
2工具栏采用的编译工具即Android模拟器
3属性栏即应用程序中的相关属性
三第一个Android应用程序 这就是我们刚才创建的一个Android应用程序如下图
在这里面我们最关心的是界面(main.xml)与后台(Test1.java)
单击main.xml
我们先看看中间视图
这是一个页面编辑器模式
在左下角点击main.xml切换到界面编码模式
这就是刚才页面视图的源码
下面让我们看看后台(Test1.java)源码单击Test1.java
以下将此类程序称之为activity活动该activity运行时会自动调用onCreate方法而上
图中onCreate方法是启动res文件夹下的layout下的main.xml界面。
我们在看看配置文件AndroidManifest.xml点击AndroidManifest.xml
再点击最下方最右边的AndroidManifest.xml进入配置文件的源码模式
这里有几个关键属性即活动包名活动名称。该应用程序一运行便会启动src目录下的
test.app包下的Te
st1.java。
好现在让我们启动这个Android程序
选中该应用程序目录点击鼠标右键在弹出框里点击Run AsAndroid Application
在Console控制台上会显示如下信息
说明Android模拟器启动成功以及该应用程序启动成功
选中弹出的Android模拟器点击menu便可在该模拟器中启动该应用程序
效果如下图
一个Android应用程序运行过程
配置文件Test1.java(后台的activity)main.xml(界面)。
1配置文件AndroidManifest.xml源码
2后台活动Test1.java源码
3界面main.xml源码
四主界面 分析如何做一个图片浏览器
首先我们得做一个应用主界面如下图是一个简单的主界面
要完成这个主界面
1在main.xml中源码
效果如图
接下来我们要完成的工作是去标题改字体设置背景图片。
首先我们要引进一些资源文件如图片外部颜色属性将themepage1.jpg粘贴在drawable
文件夹下再在values文件夹下建两个名为color.xml和style.xml的文件选中values文件
夹点击鼠标右键在弹出框中点击NewFile
在接下来的弹出框中
在File name:给文件命名为color.xml点击右下角的Finishcolor.xml文件就创建成功了
效果如图
color.xml文件报错的原因
1. 因为color.mxl是mxl文件必须设置其版本号以及编码方式
2. color.mxl是res文件夹下的资源文件必须设置
同理可建立style.xml文件我们需要的资源文件如下图所示
界面主题
在values下面的sytle.xml文件
背景图片的设置res资源文件目录drawable文件夹下的themepage1.jpg
字体颜色的设置
在values下面color.xml定义一些16进制颜色属性
取@drawable/pink可得到对应的#FFC8FF这个16进制的颜色值从而取到该颜色。
如此便完成一个主题的建立但如何应用该主题了
下面就因该回到Test1.java这个后台活动
在活动中设置主题
以R.style.Theme_1的模式取到该主题。
然后运行该程序效果就出来了。
五后台代码以及事件的处理 以上我们所应用的只是实现UI界面层的显示。但UI层如何与后台activity(活动)进行交
互了我们先看看整个应用程序的结构
首先我们应该学会在后台取得UI层控件。这就要涉及资源文件R.java。
res中的所有文件以及文件标签都在R资源文件中自动生成R.java
R中layout类中对应是界面文件id对应是界面层控件的id。这就是界面文件main.xml:
其它对应的是res文件夹下的资源文件它们的声明方式为strings.xml文件
colo
r.xml文件
style.xml文件
drawable文件夹下的图片文件
后台与界面的交互要通过资源文件R.java示例代码如下Test1.java
效果如图
扩展界面控件或容器的任意属性都能在后台做修改。而且后台也可以动态生成界面控件
或容器。
如下后台代码动态生成LinearLayout容器以及TextView标签
效果如图 六定义事件以及事件处理 定义事件以及事件处理是每一个应用所必须具备的根据事件可以做到人机交互。比如你
的需求可以通过触发事件传递给程序而程序根据对相应事件的处理达到用户所需的效果。
下面是一个标签点击事件的定义以及处理
实现抽象方法
1.点击左边的X
2.在弹出框中点击Add unimplemented methods
3.效果如下:
如果大家觉得设定监听事件复杂那我们可以将它分开来写
1. 将监听事件实例化
2. 设置mtxtPeri的监听事件为上面的实例listener1
设置事件处理为改变mtxtPeri控件的文本值
我们在看看触发事件以及事件结果
1.触发事件点击名为‘美女图片’的TextView控件
事件结果改变该控件的文本值 七界面之间的跳转 以前我们的操作都是在单个页面中进行如何实现页面中的跳转了
1. 页面层界面的简单切换
在layout文件夹中建一个名为scan.xml的文件,并写入下图代码
这是一个空界面为了标记它在其中添加一个TextView标签
后台代码如下
通过点击mtxtPeri(美女图片)实现页面切换
效果如下图
由于两者应用了同一个主题样式其背景图片与字体都是相同的。
2. 后台活动activity之间的切换
因为前一种页面切换的模式只是简单的将手机视图设为另一个界面并不涉及数据的传输与
交互所以我们着重讲第二种界面跳转即通过后台活动的切换达到页面跳转的目的
(1) 首先让我们创建一个后台活动
就像创建java类那样选中test.app包单击鼠标右键在弹出框中点击NewClass。
在接下来的弹出框中定义活动的文件名以及继承的抽象类Activity在单击右下角的Finish
按钮
该activity活动创建完成如下
实现活动的onCreate()抽象方法
鼠标选中闪烁的点点击鼠标右键在弹出框中点击SourceOverride/Implement Methods…
在弹出框中选中Activity下的onCreate(Bundle)选项
点击OK产生onCreate抽象方法效果如图
再设置界面为scan一个简单的活动界面就完成了
最后注意一点也是最重要的一点所有的活动都必须在配置文件中注册
打开配置文件AndroidManifest.xml
编写的
应用程序装载在模拟器中是这个样子的选中的就是我们一直编写的应用程序
应用程序的皮肤打开res/drawable/icon.png
应用程序的名称打开res/values/strings.xmlstring标签中name=”app_name”对应的属性为
“标题”
关于drawable,layout,values这三个文件夹
drawable放的是图片、图标等资源文件
layout放的是界面文件
values放的是像strings.xml那样标志字符串属性的资源文件如color.xml,style.xml
下面在配置文件中给我们新建的Scan.java活动注册
至此一个新的活动创建完毕。让我们再来回顾一下创建后台活动的过程
1. 创建一个前台界面
2. 创建一个后台活动并重写Activity下的onCreate()抽象方法并设置其前台界面
3. 在配置文件中给新建的活动注册。
2Activity的置换程序主控权的移交在Android中可在主程序里使用startActivity()这个方法来调用另一个Activiy主程序本身即是一个Activity使用Intent对象实现控制
权的移交
同上面代码点击txtPeri实现后台活动的置换效果如下
点击“美女图片”标签产生如下界面
在Scan活动中没有设置主题样式即去标题改字体设背景图片。
3Activity置换中的数据交互
Activity置换与单纯页面切换的最大区别是前者可以实现数据传输这就要涉及一个Bundle
对象的实现。
下面代码是在Test1活动中设置要传输的参数mtxtPeri的文本值关键字为label:
接着是在Scan活动中根据关键字取得传输的参数
运行程序点击“美女图片”触发事件后
效果如图该界面的正中的TextView的文本值发生改变说明数据传输成功。
八浏览图片 既然是图片浏览器其主要功能就是浏览图片这就涉及一个ImageView标签的使用。这
个很简单与使用TextView标签相似首先我们先引入一个图片文件center.jpg
然后将scan.xml中的TextView标签替换为ImageView标签并设置其图片资源
此界面效果如图
在后台程序实现图片的切换
现在我们已经学会引入图片要实现浏览图片的功能还要学会切换图片
在下图的代码中定义了一个TextView控件用于控制切换图片注意如何定义它的位置和字
体属性。
再在后台设置TextView的触发事件改变ImageView的图片源文件
新引进的图片文件如图
运行效果点击下一张
产生图片切换的效果 九资源的存储手机sdcard的应用 如果要浏览大量的图片会将图片全部放在应用程序里面吗答案当然是否定的因为应用
程序的可移植性,不方便携带大量的资源文件。而在手机应用中产生的大量资源文件
都是存
储在手机的sdcard中。
这一章节我们主要讲述对手机sdcard的读写即IO输入输出流的操作。
首先我们先学习如何查看手机sdcard
首先启动andoird模拟器然后在Eclipse中点击右上角的DDMS切换成DDMS视图
在DDMS视图中点击左下角的下图图标
在其后的弹出框中点击File Explorer文件资源管理器
在File Explorer中可查看sdcard文件夹如图现在sdcard文件夹是空的。
现在我们要在sdcard中建立一个名为catalog文件夹作为这个应用程序的资源主目录再在主目录下建立一个名为img的文件夹以用于存放图片代码如下
这段代码的意思很简单判断/sdcard/MyAndroid/img/这个路径的文件夹是否存在如果不存
在则新建一个文件夹。运行这段代码后在sdcard目录下产生了相应的文件夹
十网络资源的下载 图片资源文件虽然存储在sdcard中但追踪其来源是源于网络android支持互联网操作。
如何在android中连接互联网首先要在资源文件中设置权限如下面的代码获得internet
操作的权限。
然后根据网页上的图片地址下载该图片并设置显示在ImageView中将下载并显示图片
写在文本值为”下一张”的TextView的点击事件中
我们对此事例中用到的URLInputStreamBitmapBitmapFactory对象进行简单说明URL
对象用于获取网络资源文件的地址。InputStream对象用于获得URL的资源文件的文件流。
接着将InputStream流通过BitmapFactory对象转换成Bitmap对象。Bitmap与BitmapFactory
对象是Android API提供用于读取图片文件。最后通过ImageView对象的setImageBitmap()
的方法显示该图片
我们在Android模拟器中根据图片地址查看该图片
点击右上角的放大镜标志就可浏览该图片
下面是在程序中运行的效果点击下一张
ImageView的图片切换
接着我们可以将此图片存储在sdcard中
上面存储图片的代码是对Bitmap对象进行存储除了FileOutputStream(文件输出流)的应用
指明文件存储的路径最主要的是运用了Bitmap对象的compress方法。compress方法中的
三个参数第一个参数pressFormat.JPEG指的是图片格式为jpg第二个参数80
指的是存储图片的质量最高为100第三个参数对应是FileOutputStream文件输出流。
运行程序后可查看结果
为了验证这个结果我们在sdcard中读取这个图片
通过Bitmap对象的使用我们很容易的取到这个图片
效果如图
Android图片浏览器的原理就是
1. 将网上的图片资源下载到sdcard中
2. 在sdcard中读取图片并浏览 十二图片切换动态效果 让图片切换的时候产生移动
效果使图片浏览更具动态 Animation对象的使用首先再res(资源文件夹中)建立动画资源文件夹anim再在anim
中建立一个名为nextshow.xml的文件
nextshow.xml得内容如下
动画在后台的调用
点击下一张启动动画效果
这个程序运行原理是先将ImageView的图片进行切换然后将切换后的ImageView进行
动画效果注产生动画效果是ImageView会在原位置消失直到动画效果消失ImageView
又在原位置重新呈现由于这个动画效果动画消失的位置与图片呈现得位置重叠使人感觉好
像是图片从屏幕外移动到屏幕中间一样。
扩展学习
Animation主要有两种动态方式一种是tweened animation(渐变动画)另一种是frame by
frame animation(画面转换动画)。tweened animation则有以下四种基本转换方式
1. AlphaAnimation(transparency changes)透明度转换。
2. RotateAnimationrotations旋转转换。
3. ScaleAnimationgrowing or shrinking缩放转换。
4. TranslateAnimationposition changes位置转换。
定义好你想要得动画xml后用AnimationUtils.loadAnimation将动画加载在想要加上动态
效果得组件中使用startAnimation方法。 十三MENU菜单按钮的使用以及将图片设
为壁纸 在手机模拟器中有个菜单按钮若不做任何声明在应用程序运行时点击这个按钮是无效的。
如何声明这个按钮的使用正是这一章我们要讲的知识。MENU菜单按钮如下图
要实现MENU菜单得使用得重写Activity的抽象方法类似onCreate(Bundle)方法的声明
在activity(必须在activity中且不在任何方法中如onCreate(Bundle))中单击鼠标右键在弹出框
中点击SourceOverride/Implement Methods…
再在弹出框中勾上Activity中onCreateOptionsMenu(Menu)抽象方法点击OK
就产生了如下的抽象方法
在onCreateOptionsMenu(Menu)方法中定义菜单选项
再运行程序点击MENU出现如下效果
点击设为壁纸这个按钮是不会产生任何效果的因为还没有设置点击事件。
设置MENU菜单的点击事件需要实现activity下的onOptionsItemSelected(MenuItem)方法
判断MenuItem的id如果id=1及MENU第一个菜单项被点击执行设置壁纸Scan.this
指当前活动的名称.setWallpaper(bm)bm对应要设为壁纸的图片。
bm是一个Bitmap对象的实例它源于
设置手机壁纸要涉及权限的问题在配置文件AndroidManifest.xml中赋权限
接着点击设为壁纸回到手机主界面效果如图