android手把手开发一个图片浏览器这次我给大家讲解一个Android图片浏览器的应用。
一:Android是什么
Android是基于Linux内核的软件平台和操作系统,早期由Google开发,后由开放手机联盟Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟。Android在未公开之前...
这次我给大家讲解一个Android图片浏览器的应用。
一: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 sdk(Software Development Kit, 即软件开发工具包 )。由于Android开发是集成在Eclipse中,需下载并安装ADT (Eclipse集成Android sdk插件)。搭建环境会用一个专门的章节为大家详细讲解,这里我就不再赘述。
二:Android程序的创建
开发环境搭好后,我们先启动Eclipse创建一个Android的应用程序,
然后在左上角单击File(New(Android Project,如下图所示:
如果在图中Java Project找不到Android Project:
在左上角单击File(New(Other:
在弹出框中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包下的Test1.java。
好,现在让我们启动这个Android程序:
选中该应用程序目录点击鼠标右键:在弹出框里点击Run As(Android 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文件夹点击鼠标右键,在弹出框中点击New(File,
在接下来的弹出框中:
在File name:给文件命名为color.xml,点击右下角的Finish,color.xml文件就创建成功了:效果如图
color.xml文件报错的原因:
1. 因为color.mxl是mxl文件必须设置其版本号以及编码方式
2. color.mxl是res文件夹下的资源文件,必须设置
标签如下图:
同理可建立style.xml文件,我们需要的资源文件如下图所示:
界面主题:
在values下面的sytle.xml文件:
背景图片的设置:res资源文件目录drawable文件夹下的themepage1.jpg
字体颜色的设置:
在values下面color.xml定义一些16进制颜色属性:
#FFC8FF
取@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文件
color.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包单击鼠标右键,在弹出框中点击:New(Class。
在接下来的弹出框中定义活动的文件名,以及继承的抽象类Activity,在单击右下角的Finish按钮:
该activity(活动)创建完成如下:
实现活动的onCreate()抽象方法:
鼠标选中闪烁的点,点击鼠标右键:在弹出框中点击Source(Override/Implement Methods…
在弹出框中选中Activity下的onCreate(Bundle)选项:
点击OK:产生onCreate抽象方法效果如图:
再设置界面为scan,一个简单的活动界面就完成了:
最后注意一点也是最重要的一点:所有的活动都必须在配置文件中注册:
打开配置文件AndroidManifest.xml:
编写的应用程序装载在模拟器中是这个样子的,选中的就是我们一直编写的应用程序:
应用程序的皮肤:打开res/drawable/icon.png
应用程序的名称:打开res/values/strings.xml,string标签中name=”app_name”对应的属性为“标题”:
关于drawable,layout,values这三个文件夹:
drawable放的是图片、图标等资源文件
layout放的是界面文件
values放的是像strings.xml那样标志字符串属性的资源文件如color.xml,style.xml
下面在配置文件中给我们新建的Scan.java活动注册:
至此一个新的活动创建完毕。让我们再来回顾一下创建后台活动的过程:
1. 创建一个前台界面
2. 创建一个后台活动并重写Activity下的onCreate()抽象方法,并设置其前台界面
3. 在配置文件中给新建的活动注册。
(2)Activity的置换,程序主控权的移交:在Android中可在主程序里使用startActivity()这个方法来调用另一个Activiy(主程序本身即是一个Activity),使用Intent对象实现控制权的移交:
同上面代码:点击txtPeri实现后台活动的置换:效果如下
点击“美女图片”标签:产生如下界面
在Scan活动中没有设置主题(样式):即去标题,改字体,设背景图片。
(3)Activity置换中的数据交互:
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的点击事件中
我们对此事例中用到的URL,InputStream,Bitmap,BitmapFactory对象进行简单说明:URL对象用于获取网络资源文件的地址。InputStream对象用于获得URL的资源文件的文件流。接着将InputStream流通过BitmapFactory对象转换成Bitmap对象。Bitmap与BitmapFactory对象是Android API提供用于读取图片文件。最后通过ImageView对象的setImageBitmap()的方法显示该图片:
我们在Android模拟器中根据图片地址查看该图片:
点击右上角的放大镜标志:就可浏览该图片
下面是在程序中运行的效果,点击下一张:
ImageView的图片切换:
接着我们可以将此图片存储在sdcard中:
上面存储图片的代码是对Bitmap对象进行存储,除了FileOutputStream(文件输出流)的应用:指明文件存储的路径,最主要的是运用了Bitmap对象的compress方法。compress方法中的三个参数,第一个参数Bitmap.CompressFormat.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. RotateAnimation(rotations):旋转转换。
3. ScaleAnimation(growing or shrinking):缩放转换。
4. TranslateAnimation(position changes):位置转换。
定义好你想要得动画xml后,用AnimationUtils.loadAnimation将动画加载,在想要加上动态效果得组件中使用startAnimation方法。
十三:MENU菜单按钮的使用以及将图片设为壁纸
在手机模拟器中有个菜单按钮:若不做任何声明在应用程序运行时点击这个按钮是无效的。如何声明这个按钮的使用正是这一章我们要讲的知识。MENU菜单按钮如下图:
要实现MENU菜单得使用得重写Activity的抽象方法:类似onCreate(Bundle)方法的声明,
在activity(必须在activity中且不在任何方法中如onCreate(Bundle))中单击鼠标右键在弹出框中点击:Source(Override/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中赋权限
接着点击设为壁纸,回到手机主界面效果如图:
本文档为【android手把手开发一个图片浏览器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。