您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > android图片浏览器大作业
《Android开发技术基础》大作业报告题目:图片浏览器学院:电子与信息工程学院专业:软件1311班级学号:13200126132学生姓名:闫自立指导老师:张战成1实验日期:2016.3.22成绩评定:____________1.作业要求和评分:以滑动切换的方式浏览SD卡某个目录中的图片。基本功能要求:如题。(60分)涉及的知识点:1、如何从SD读取图片(仿照从Assets目录读取图片的过程);2、可能碰到的困难:读取SD卡需要设置程序权限,自己百度:Android设置访问SD卡权限;3、如何监听滑动事件,如何响应滑动事件?仿照Button的Click事件。加分项:1、PPT演示(+10)2、语言、仪表、不超时(3mins)(+5,超时没有加分)3、代码简介清晰(+5,变量命名、缩进)4、用户可以定制SD卡的目录(+10分)5、目录中增加图片后,不需要重启app,可以滑动到新的图片(+5分)6、浏览到首尾的时候,有相应的提示(可以用Toast)(+5分)2.设计思路和模块架构:1、注册触屏监听器和手势监控器2、从SD卡的某一目录下读取所有图片路径3、每一次根据路径加载设置图片视图4、图片是否更新的判断5、读取到第一张和最后一张的提示2.2模块架构:2.2.1、注册触屏监听器和手势监控器1.类结构:.PictureLoadActivityextendsActivityimplementsOnTouchListener,OnGestureListener2.在onTouch方法中加入当前手势监听对象:returnmGestureDetector.onTouchEvent(event)3.手势滑动事件:publicbooleanonFling(MotionEvente1,MotionEvente2,float2velocityX,floatvelocityY)e1手势起点的移动事e2当前手势点的移动事件velocity每秒x轴方向移动的像素XvelocityY每秒y轴方向移动的像素4.思想:每次滑动前先去用PictureLoadUtil工具类下的getPictures(StringstrPath)方法去和当前的路径数组判断是否相同,如果不同再重新加载。然后通过数组下标的变化去取图片2.2.2、根据传入的参数从SD卡的某一目录下读取所有图片路径思想:PictureLoadUtil工具类的publicstaticListStringgetPictures(StringstrPath)方法,根据传入的文件夹路径参数去读取其下的所有文件,再选出所有以jpg.jpeg.Png等格式结尾的图片将其全路径加入数组2.2.3、每一次根据路径加载设置图片视图方法:publicvoidsetImage(intindex)步骤:(1)Filefile=newFile(picturePaths.get(curIdx));得到图片文件(2)file.exists()&&Environment.getExternalStorageState()如果文件存在且SD卡的状态是挂载的就将读入的数据编码为位图Bitmapimg_local=BitmapFactory.decodeFile(picturePaths.get(curIdx));2.2.4、图片是否更新的判断方法:publicbooleanreLoad()思想:使用PictureLoadUtil工具类再次加载所有图片路径去和当前的所有路径用equals()判断是否一样,如果发生改变则先判断当前数组下标是否溢出,再将图片路径数组重新赋值2.2.5、读取到第一张和最后一张的提示思想:每次手势滑动后先判断数组下标,如果是第一张或者最后一张就用土司输出提示Toast.makeText(this,这是第一张,向前翻没有了,Toast.LENGTH_LONG).show();3.核心技术原理和实现1.注册触屏监听器和手势监控器:32.从SD卡的某一目录下读取所有图片路径:43.每一次根据路径加载设置图片视图:4.图片是否更新的判断:5.读取到第一张和最后一张的提示:6.查找图片按钮的监听Buttonsearch=(Button)findViewById(R.id.search);//查找editext路径下的图片search.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){editText1=(EditText)findViewById(R.id.editText1);para=editText1.getText().toString();if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){srcPath=Environment.getExternalStorageDirectory()+para;5//System.out.println(可以读取呀呀呀哎呀呀);}else{//System.out.println(不能读取问题就出在这里这里这里+Environment.getExternalStorageState());}picturePaths=PictureLoadUtil.getPictures(srcPath);curIdx=0;count=picturePaths.size();setImage(curIdx);}});4.测试和分析开始多次运行出现错误,最后找出的原因是SD卡配置错误。使用安卓设备模拟器运行程序,以上代码运行正常,基本达到设计目的。5.心得和体会编程中遇到的问题:1.sd卡只读无法向其中添加文件解决:mount-oremountrw/以及如何在sd卡下创建文件夹解决:有个小按钮可以手动创建2.每次关闭eclipse的时候,sd卡的内容被清空,权限也变回了原来的只读3.不能读取sd卡的内容Environment.getExternalStorageDirectory()此方法无效原因:sd卡配置问题无介质没有挂载sd卡重新配置以后以上遇到的问题都不存在了优点:每次只加载一张图片,所以不会出现内存溢出。不足:只能读取某一固定路径下的所有图片,因为SD卡的路径是硬编码传入方法中的,没有扩展实现用户目录的定制感觉到很遗憾,只要想去实现就可以扩展出这个功能。感想:这次的作业能顺利完成我要特别感谢度娘的帮助,说实话,我的所有结构挺简单的所有用到的都是android最基础的东西,没有什么高深的思想,如果能够扩展用户去翻到SD卡去任意路径下获取照片就要涉及的意图的生命周期以及意图之间的数据传递,这才是更有意义的。
本文标题:android图片浏览器大作业
链接地址:https://www.777doc.com/doc-2897239 .html