![Android智能电视APP开发笔记三图片加载和显示_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/0fded793-70e9-4aaf-9202-6d0ce3c98dec/0fded793-70e9-4aaf-9202-6d0ce3c98dec1.gif)
![Android智能电视APP开发笔记三图片加载和显示_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/0fded793-70e9-4aaf-9202-6d0ce3c98dec/0fded793-70e9-4aaf-9202-6d0ce3c98dec2.gif)
![Android智能电视APP开发笔记三图片加载和显示_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/0fded793-70e9-4aaf-9202-6d0ce3c98dec/0fded793-70e9-4aaf-9202-6d0ce3c98dec3.gif)
![Android智能电视APP开发笔记三图片加载和显示_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/0fded793-70e9-4aaf-9202-6d0ce3c98dec/0fded793-70e9-4aaf-9202-6d0ce3c98dec4.gif)
![Android智能电视APP开发笔记三图片加载和显示_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/0fded793-70e9-4aaf-9202-6d0ce3c98dec/0fded793-70e9-4aaf-9202-6d0ce3c98dec5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、TVAPP开发笔记(三)图像加载和显示1 概述更新有点慢了,主要最近事情比较多给耽搁了。先要对计划开发的APP作个简单的描述:这是一个小学英语学习的APP,主要提供课文的浏览和英文内容朗读的功能,相对来说功能比较简单。应用场景简单描述如下:进入APP1、 进入APP,自动装载对应年级(比如三年级上,三年级下,四年级上,四年级下等)的小学英语课文封面(参见下图1)。(说明:先按照目前应用商店上的APP的做法,不同年级的课文做成不同的APP,未来可以改为一个APP中包含小学所有年级段英文课文的版本) 翻页2、 通过手机划屏,或者按界面的“上一页”,“下一页”等按钮可以进行翻页操作,浏览整个英语课文
2、,翻到对应页面,显示对应的页码(如图2,4所示)。3、 点击“页码”可以快捷选择希望进入的页面(如图3所示)。朗读4、 点击“播放”按钮可以播放当前页面的英文内容,根据APP的设置,可以自动只播放当前页面,或者播放所选页面所在Unit,或者播放整篇课文。5、 在朗读状态下,当前页播放完成后,如果是自动朗读下一页的选项,在朗读下一页的同时,页面自动切换到下一页。6、 在朗读状态下,进行翻页操作,自动朗读对应页面的内容;7、 在朗读状态下,如果选择“停止”,自动关闭朗读功能;设置8、 用户点击“设置”按钮,可以进行朗读模式的设置;退出9、 用户选择退出APP,如果在朗读状态,自动停止朗读;主要UI
3、界面如下图所示: 图1 图2 图3 图4简单对流程进行梳理,界面流程图如下:其中红色部分是针对TV需要优化的内容,主要对键值响应。2 图像加载和显示技术通过上述分析,首先要实现英语课本的阅读和翻页功能;英语课本最简单的实现方法是每一页用一个图片来显示,具有图文并茂的好处。图片的存储方法可以分为两种,一种方法是存在本地,另外一种方法是存在网络,这两种方法各有利弊:1) 存在本地:优点是显示效率高,缺点是本地资源占有较大,而且容易被Copy,不利于版权保护;2) 存在网络:本地资源占用较少,而且可以进行防Copy,但是缺点是受网络带宽影响较大,如果手机端网络环境不好,就无法显示;本文中的APP的图
4、片用来显示英语课本,理论上存在版本问题,存在本地其实不是非常合适,采用网络的方式比较合适,在实际操作中还需要考虑版权保护问题,防止被非法窃取。因为网络方式涉及到Web网站的搭建,环境搭建相对复杂,所以这个阶段先采用文件的方式实现,在后续产品演进中再论述网络版本的开发。在Android中显示图片常用的控件是ImageView,在本地通过ImageView显示图片主要有四种办法:1. 图片在项目的res文件夹下面/得到application对象ApplicationInfo appInfo = getApplicationInfo();/得到该图片的id(name 是该图片的名字,"dr
5、awable" 是该图片存放的目录,appInfo.packageName是应用程序的包)int resID = getResources().getIdentifier(name, "drawable", appInfo.packageName);/代码如下public Bitmap getRes(String name) ApplicationInfo appInfo = getApplicationInfo();int resID = getResources().getIdentifier(name, "drawable", appIn
6、fo.packageName);return BitmapFactory.decodeResource(getResources(), resID); (存放的大部分是一些图片资源和界面的布局文件。drawable和drawable-*目录存放的是各种不同分辨率的图片资源。layout、menu、xml目录存放的是软件界面的布局文件,包括菜单、窗口、主界面和设置界面等;放在这里的图像资源可能会被aapt工具自动地进行无损压缩优化。比如,一个真彩色但并不需要256色的PNG可能会被转换为一个带调色板的8位PNG。这使得同等质量的图片占用更少的资源。所以我们得意识到这些放在该目录下的二进
7、制图像在生成时可能会发生变化。如果你想读取一个图像位流并转换成一个位图(bitmap),请把图像文件放在 res/raw/目录下,这样可以避免被自动优化,要使用这些资源,可以调用Resources.openRawResource()。)2.android中有个Assets目录,这里可以存放只读文件资源获取的方式为InputStream is = getResources().getAssets().open(name);(assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。 1. 先在Activity里面调用g
8、etAssets()来获取AssetManager引用。 2. 再用AssetManager的open(String fileName, int accessMode)方法则指定读取的文件以及访问模式就能得到输入流InputStream。 3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close()。 4.调用AssetManager.close()关闭AssetMan
9、ager。需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作)3. 图片放在src目录下String path = "com/xiangmu/test.png" /图片存放的路径InputStream is = getClassLoader().getResourceAsStream(path); /得到图片流(不推荐,在src目录中主要存放源代码文件和配置文件,这个方法也是读取配置文件的方法,虽然也可以用于读取图片文件,但是终究不算好的办法)4. 图片放在sdcard中,通过文件方式读取Bitmap imageBitmap = Bit
10、mapFactory.decodeFile(path) (path 是图片的路径,跟目录是/sdcard)(文件读取方式,图片打包在安装包中的,在安装的时候安装到某个目录下,这个目录必定是和APP安装目录相关的位置,程序中可以先获得APP的安装目录,然后获得图片目录,然后在通过这个方法读取文件装载图片)3 Android程序发布为了验证各种图像加载和显示技术在最终发布apk程序上的不同,还需要对Android程序的发布有所了解,为了简单起见,目前这个版本先在手机上发布,在未来的部分再来讨论在Android智能电视上的发布,看看两者有啥不同。Android程序发布分为两个步骤,第一个步骤生成ap
11、k工具,第二步是进行签名,第一步可以直接通过ADT的工具完成,第二步可以通过命令的的方式可以用JDK的ketool生专用密钥文件,然后用jarsigner命令进行签名)或者ADT工具完成。在这里简单操作方法,当然是ADT工具完成啦,详细的操作步骤在下面进行详细描述。4 课文读取和翻页功能实现在这里我采用的是放到res目录的方案:(一) 创建项目按照HelloWorld项目中说描述的方法创建一个新的项目AndroidTest01;(二) 准备图片将英语课文图片复制到resdrawable目录下,如果res目录下没有drawable目录,那就创建一个,在这里为了简化,在英语课文图片的命名上定义了一
12、个小规则,前面封面目录之类不需要朗读的部分统一以“img”作为前缀,需要朗读的课文都以“page”为前缀,后面的数字就是页码。如下图所示:(三) 画界面在res目录下,打开layout目录下的mail.xml,就是系统的主界面啦,拖一个imageView,几个Button进入,然后设置对应的一些属性,如下图所示的初步界面就搞成了,这里为了简单,对ImageView的width和height作了定义。 右键点击按钮,选择“Other Properties”,再选择“All by Name”,最后选择“Onclick”,然后输入Click事件的响应函数名称,指定事件响应程序。 (假设你已经有IDE
13、环境下的的面向对象编程经验哦,如果没有请先恶补下)(四) 写代码看看最终生成的代码:package chencl.androidtest.uitest;import android.app.Activity;import android.os.Bundle;import android.view.*;import ;import android.widget.ImageView;public class AndroidTest01Activity extends Activity private int CurrPage; /* Called when the activity is firs
14、t created. */ Overridepublic void onCreate(Bundle savedInstanceState) /启动程序 super.onCreate(savedInstanceState); /显示主界面 setContentView(R.layout.main); /取第一个课文页面的索引号 int i =this.getResources().getIdentifier(this.getPackageName()+":drawable/page2",null,null); /找到界面中的ImageView ImageView MyImag
15、eView=(ImageView)this.findViewById(R.id.imageView1); /在ImageView中显示第一个课文页面 MyImageView.setImageResource(i); CurrPage=2; /上一页 public void onPrevButtonClick(View view) CurrPage-; int i =this.getResources().getIdentifier(this.getPackageName()+":drawable/page"+String.valueOf(CurrPage),null,nul
16、l); ImageView MyImageView=(ImageView)this.findViewById(R.id.imageView1); MyImageView.setImageResource(i); / Toast.makeText(this, "Button clicked!", Toast.LENGTH_SHORT).show(); /下一页 public void onNextButtonClick(View view) CurrPage+; int i =this.getResources().getIdentifier(this.getPackageN
17、ame()+":drawable/page"+String.valueOf(CurrPage),null,null); ImageView MyImageView=(ImageView)this.findViewById(R.id.imageView1); MyImageView.setImageResource(i); /Toast.makeText(this, "Button clicked!", Toast.LENGTH_SHORT).show(); /测试的时候写的,可去掉 public void onTestButtonClick(View v
18、iew) int i =this.getResources().getIdentifier(this.getPackageName()+":drawable/page2",null,null); ImageView MyImageView=(ImageView)this.findViewById(R.id.imageView1); MyImageView.setImageResource(i); (五) 测试正常点一下绿色的箭头运行就可以了,不过有的时候会出错,可以采用下述方法解决:选择“windowsshow view others”,在下述对话框中选择“androiddevices”选择完后,再选择“reset adb”然后再运行,一般情况下就OK.(六) 发布选中项目,右键点击,选择“Android toolsexport signed application package”:先进行项目检查:然后创建签名文件:输入相关签名信息:最后指定输出文件目录和文件名就OK了:拿这个apk放到手机下安装下就可以喽。(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45243-2025保健食品中硫胺素、核黄素、吡哆醇、烟酸、烟酰胺和咖啡因的测定
- 【正版授权】 IEC 60335-2-78:2021/AMD1:2025 EN-FR Amendment 1 - Household and similar electrical appliances - Safety - Part 2-78: Particular requirements for outdoor barbecues
- 劳动合同简易
- 路灯买卖合同协议书
- 教育培训机构场地租赁合同
- 地下室出租协议书
- 施工工程承包合同
- 企业运输合同个人运输合同
- 经销商销售合同协议
- 铁路货物的运输合同
- 综采工作面自动化控制系统培训课件2024
- 充电器电路安装与调试
- 分布式光伏高处作业专项施工方案
- 《冠心病的介入治疗》课件
- 浙江省建设工程钱江杯奖(工程)评审细则
- 膀胱损伤病人护理课件
- 中医防感冒健康知识讲座
- 《土壤与土壤改良》课件
- ISO9001ISO14001ISO45001外部审核资料清单
- 张岱年:《中国文化概论》
- 绘本成语故事:四面楚歌
评论
0/150
提交评论