
手机软件开发实训报告
专 业 计算机应用技术
班 级 Z120551
学 号 Z********
姓 名 杨鹏
完成日期 2015-01-04
| 实 训/ 实 验 内 容 与 要 求 |
| 课程题目:手机软件开发实训 设计题目:图片浏览器设计与实现 设计内容与要求: 1、通过实现一个完整的软件,体验软件项目开发的工作流程,加深对相关理论知识的理解,提高实际分析设计能力。 2、根据提供的参考程序,学习其中的设计思路和编程技巧,在此基础上进行功能的扩展,完成一个有实用价值的软件。 指导教师:_______________ 2015年 1 月 6 日 |
| 指 导 教 师 评 语 |
成绩: 指导教师:_______________ 年 月 日 |
1.1设计的意义
随着时代的发展,社会的进步,移动开发应用越来越普及,其中Android移动开发应用因为方便、价格低廉等优势在市场中占有很大份额。而图片浏览器作为计算机使用者浏览各种格式图片的载体而存在,作为人们日常生活中的任何格式的图片文件都必须通过图片浏览器才能浏览。随着各种类型图片浏览器的不断更新换代,其功能也日益强大和完善,逐渐成为计算机使用者生活中不可或缺的一部分。
1.2设计的目的
图片浏览器支持流行格式图象,包括:BMP,JPEG,JPEG2000,GIF,PNG,PCX,TIFF,WMF,ICOandTGA.界面漂亮,使用特别方便。晶莹剔透的放大镜可以把图片的每个细节优美的表达出来。批量图片转换和更名允许您对图片进行大批量的转换,尺寸调整,其它特性还包括全屏幕浏览,拖拉放大,旋转,等等。图片浏览器一般具有打开图片文件并对图片文件夹中的图片进行顺序浏览的功能。为方便人们更好地浏览图片,为人们的生活带来便利,特设计实现了一个图片浏览器。本次图片浏览器的设计实现可以浏览等格式的图片,不仅可以浏览本地文件、SCDCARD和USBHOST存储的图片还可以浏览手机设备里的其他图片,确实为使用者带来了很大的便利。
第二章:程序设计与开发
2.1程序简单介绍
本次图片浏览器的设计可以读取本地文件、SCDCARD和USBHOST以及手机设备里的其他图片,其中可以对图片进行幻灯片播放、图片缩放、旋转照片(顺时针90度旋转、逆时针90度旋转、180度旋转)、图片详细信息、返回预览和删除图片等功能。其源程序的编写首先在eclipse里新建一个名为ImageView的项目,其中源程序的文件结构src下有两个名为com.worldship.apk和com.worldship.apk.gallery 的文件,如下图1和图2 所示;其res下的layout里的文件结构如下图3 所示:
图1 图2
图3
2.2界面设计
本次的图片浏览器共设计了一个主界面,可以选择图片的来源,可以是本地文件、SCDCARD和USBHOST以及手机设备里的其他图片,另外还有浏览图片布局的界面,这里仅截图一张图片说明意思。其主要界面展示如下图4所示:
图4
2.3程序模块
程序的主要功能有读取文件、对图片进行幻灯片播放、图片缩放、旋转照片(顺时针90度旋转、逆时针90度旋转、180度旋转)、图片详细信息、返回预览和删除图片等,各个模块的局部展示如下图所示:
功能1 功能2 功能3
功能4 功能5 功能6
2.4程序代码
因为其源程序需要实现对图片进行幻灯片播放、图片缩放、旋转照片(顺时针90度旋转、逆时针90度旋转、180度旋转)、图片详细信息、返回预览和删除图片等功能,其源程序包含文件较多,代码量较大且部分内容代码所用知识点重复,所以这里仅展示部分重要代码,其重要代码展示如下:
Main.Xml里的部分代码:
android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/a" > android:layout_width="fill_parent" android:layout_height="wrap_content" android:cacheColorHint="#00000000" android:longClickable="true" android:focusableInTouchMode="true" />
ImageMange.java里的部分代码:
public class ImageManager {
public static Uri addImage(ContentResolver cr, String title, long dateTaken,
Location location, String directory, String filename,
Bitmap source, byte[] jpegData, int[] degree) {
OutputStream outputStream = null;
String filePath = directory + "/" + filename;
try {
File dir = new File(directory);
if (!dir.exists()) dir.mkdirs();
File file = new File(directory, filename);
outputStream = new FileOutputStream(file);
if (source != null) {
source.compress(CompressFormat.JPEG, 75, outputStream);
degree[0] = 0;
} else {
outputStream.write(jpegData);
degree[0] = getExifOrientation(filePath);
}
} catch (FileNotFoundException ex) {
Log.w(TAG, ex);
return null;
} catch (IOException ex) {
Log.w(TAG, ex);
return null;
} finally {
Util.closeSilently(outputStream);
}
ContentValues values = new ContentValues(7);
values.put(Images.Media.TITLE, title);
BaseImage.java里的部分代码:
protected BaseImage(BaseImageList container, ContentResolver cr,
long id, int index, Uri uri, String dataPath, String mimeType,
long dateTaken, String title) {
mContainer = container;
mContentResolver = cr;
mId = id;
mIndex = index;
mUri = uri;
mDataPath = dataPath;
mMimeType = mimeType;
mDateTaken = dateTaken;
mTitle = title;
}
DBAdapter.java里的部分代码:
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
Log.i(TAG, "DatabaseHelper onCreated!");
db.execSQL(DATABASE_CREATE);
}
第三章:程序运行
3.1用手机连接数据线把程序安装手机里,运行程序时,可以浏览手机内的所有图片,然后这里我SDCARD里的图片来展示运行结果如下图5所示:
图5
这里我选择一张图片来演示图片浏览器的部分功能,其所有功能的运行结果如下图6所示,这里我只选择旋转照片、详细信息的功能进行展示,其旋转照片的运行结果如图7所示,详细信息的运行结果如图8所示:
图6 图7
图8
第四章:总结与体会
经过这次一个周的课程设计,的确让我学到了很多知识,同时我也清楚的认识到,我们平时所学的理论知识因为缺少实践练习没有发挥什么作用,让同学们感觉枯燥乏味,学无所用,从而导致上课不听讲、逃课甚至不喜欢计算机专业打算换行。同学们在平时学习专业课理论知识的时候,总是感觉所学的东西没有用,因为我们没有用所学的知识上机练习,没有自己做出来一个实际的东西并看到运行后的效果。而这次的课程设计大大增加了我的参与感、动手能力、发现问题并解决问题的能力,还给了我一些小小的成就感,让我愿意主动去学习并感觉到有意思、很实用。从而更好地学好专业课和专业知识,更好地就业找工作。
通过本次实习我不仅认识到了自己的很多不足还了解了未来IT行业的发展趋势。为了更好地学习专业知识,增加自己就业的砝码,我会在努力学好学校要求的专业课的同时,查阅并学习相关方面的书籍并请教老师,课下有时间多加动手练习,做到理论与实践相结合,巩固专业知识,具有从事相关专业工作的能力。
