六. 图片预览与整体布局分析
来源:互联网 发布:监控网络键盘 编辑:程序博客网 时间:2024/04/30 10:52
一、相关类图
二、相关类的说明
1、FilmStripView类
它继承ViewGroup,作为预览图片的容器类。在这里类里,两个关键的对象。
mController是MyController实例。
mZoomView 是ZoomView实例。
接口:
ImageData:保存预览图的所需的通用接口
DataAdapter:处理预览图片的适配器接口。在FilmStripView类中,声明了它的对象。通过setDataAdapter方法给它赋值。
Listener :此接口在CameraActivity类里面通过内部类实现。
Controller:对FilmStripView进行控制,具体实现的类MyController。控制滚动,切换等。
ViewItem:每一个存入FilmStripView的相片View的一些属性辅助类。包括View,动作监听器,还有area。
2、FixedFirstDataAdapter
将照相预览界面放在第一个位置。其他以CameraDataAdapter类的对象形势放入。CameraDataAdapter是给camera 文件夹提供数据。
3、FilmStripGestureRecognizer
这个类是用来处理手势识别的。它包含GestureDetector和ScaleGestureDetector。
GestureDetector用来处理多种手势,通过GestureDetector.OnGestureListener来获取当前被触发的操作手势(SingleTap Up、Show Press、Long Press、Scroll、Down、Fling)等。在FilmStripGestureRecognizer类里,MyGestureListener内部类就是继承GestureDetector.OnGestureListener的类。
ScaleGestureDetector这个类是专门用来检测两个手指在屏幕上做缩放的手势用的。通过
ScaleGestureDetector.SimpleOnScaleGestureListener来获取缩放手势。MyScaleListener内部类就是继承它的类。MyGestureReceiver继承FilmStripGestureRecognizer.Listener,在FilmStripGestureRecognizer类中,处理手势识别相关动作后,通过mListener对象,调用MyGestureReceiver类里面的相关方法。来返回到FilmStripView 类里面进行动作处理。
4、ZoomView
针对预览的图片放大超过屏幕的大小的时候,就会将预览的图片放在ZoomView的区域内。
5、MyController
这个类实际上是通过MyGestureReceiver类来调用里面的方法的。针对不同的响应,做出不同的动作。三、拍照后相片如何存储到FilmStripView相关的View
按键拍照后,调用PhotoModule类里面的mOnMediaSavedListener监听器的onMediaSaved方法。然后调用CameraActivity类的notifyNewMedia方法。然后调用mDataAdapter.addNewPhoto(cr,uri);方法。然后就到了CameraDataAdapter类里面的addNewPhoto方法。然后再调用insertData方法。再就调用到了FilmStripView类里面的setDataAdapter方法里面的下面语句的方法里。
mDataAdapter.setListener(new DataAdapter.Listener() {
@Override
public void onDataLoaded() {
reload();
}
@Override
public void onDataUpdated(DataAdapter.UpdateReporter reporter) {
update(reporter);
}
@Override
public void onDataInserted(int dataID, ImageData data) {
if (mViewItem[mCurrentItem] ==null) {
// empty now, simply do areload.
reload();
return;
}
updateInsertion(dataID);
}
@Override
public void onDataRemoved(int dataID, ImageData data) {
animateItemRemoval(dataID,data);
}
});
调用onDataInserted方法。在这个方法里,将最新的照片信息存储在mViewItem数组里。
四、相机拍照预览界面滑动进入照片预览界面的过程分析
1、时序图
2、分析说明
我们在拍照预览界面滑动的的时候,通过手势监听类MyGestureListener的onScroll 方法调用MyGestureReceiver类的onScroll方法。再次调用MyController的scroll方法。执行invalidate方法,然后调用onDraw方法,再次调用layoutViewItems方法。
scaleTo 方法作用是将预览的照片的大小,缩放成屏幕的50%。
layoutViewItems 方法作用是滑动后,滑动的下一张图片到屏幕中间。
- 六. 图片预览与整体布局分析
- 上传与预览图片
- 图片预览与兼容
- html+css 实现图片整体布局效果
- 网狐框架分析六--整体框架
- 【GamingAnywhere源码分析之知识补充六】Windows多线程信号通信与GA整体框架修改
- php图片上传与预览
- MVC3 整体架构预览
- MyBatis整体预览
- 网狐框架分析六--整体框架 20150623
- ThinkPHP的使用(六)图片上传及预览插件
- Flume架构与源码分析-整体架构
- JavaScript 动画之图片表格布局预览放大
- 图片上传前的预览与检测
- 图片上传前的预览与检测
- html5图片上传与预览实现
- 图片上传与预览及压缩
- Div+CSS布局入门教程--写入整体层结构与CSS
- Jboss无法通过IP地址访问,只能用localhost\127.0.0.1访问
- MyEclipse6.5中运行Tomcat7
- cublas矩阵乘
- 公有云与私有云优劣势调研
- iOS - 项目/应用中打电话功能
- 六. 图片预览与整体布局分析
- android中打印函数调用栈
- openwrt自动挂载U盘
- AndroidStudio
- memcache telnet 操作 维护 小结
- Hibernate 的5大核心接口
- SimpleTrigger和CronTrigger配置说明和cornExpression表达式
- 美图秀秀插件上传若干问题
- textView autolink 和onclick 点击事件冲突