`
crazysumer
  • 浏览: 50345 次
社区版块
存档分类
最新评论

【2013.07.17】自定义相机对焦框等

 
阅读更多

1.

好开心,自定义相机的对焦框出来了,虽然感觉有点蛋筒。之前也想用画图画的 ,可是因为蛋筒的数据传递问题抛弃了自定义SurfaceView,在Acivity中不能override onDraw方法,暂时不知道可行性。

 

所以采取的方式是,在相机预览的界面的点击位置显示一个对焦框的图片。这个图片位置的设定,没有直接的通过中心点坐标设置的方法,只能绕道,获得触摸点坐标后,设置图片的Margin。

 

ViewGroup.MarginLayoutParams 中有setMargins(int left, int top, int right, int bottom)方法

 

可以设置控件在界面上的上下左右margin。

 

我要动态显示的ImageView在一个LinearLayout中的FrameLayout中,所以给ImageView设置Parameters的时候用到

FrameLayout.LayoutParams

 

关键的代码

	/**
	 * @描述 自动对焦
	 * */
	AutoFocusCallback autoFocus = new AutoFocusCallback() {
		

		@Override
		public void onAutoFocus(boolean success, Camera camera) {

			if (success) {
				ViewGroup.MarginLayoutParams margin = new ViewGroup.MarginLayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
				margin.setMargins((int)(x-46.5), (int)(y-46.5), 0, 0);
				FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
						margin);
				focus.setLayoutParams(params);
				System.out.println(focus.getLayoutParams().getClass());
				focus.setVisibility(ImageView.VISIBLE);
				/*
				 * 2秒后,自动对焦框消失
				 * */ 
				Handler timeHandler = new Handler();
				timeHandler.post(new Runnable() {

					@Override
					public void run() {
						try {
							Thread.sleep(2000);
							if (0 == focus.getVisibility()) {
								focus.setVisibility(ImageView.GONE);
							}
						} catch (InterruptedException e) {
							e.printStackTrace();
						}

					}
				});
			}
		}

	};

 

 

2. 拍完照后,在当前界面有一个ScrollView对已经拍摄的照片的缩略图的展示,怎样让那个ScrollView每次滚动到当前拍摄的界面呢。当然用到ScrollView的smoothScrollTo(int x, int y)方法,把它放到一个Runnable中去执行。

每个ImageView都有自己的高度,记录ImageView的个数,x=0,y=ImageView的高度×ImageView的个数。

感谢eoe某用户 吻

 

关键代码

	Handler smoothHandler = new Handler();
				smoothHandler.post(new Runnable() {

					@Override
					public void run() {
						int offset = iv.getMeasuredHeight()
								* photoPromts.length;
						if (offset < 0) {
							offset = 0;
						}
						scrollView.smoothScrollTo(0, offset);
					}
				});

 

 

3.在ScrollView中有一个LinearLayout,在这个LinearLayout中才是多个ImageView,怎样给这些ImageView设置监听,能够在点击他们时可以预览大图呢。直接给它setOnclickListener就可以了,只不过我这里的ImageView是final类型,会报

The final local variable iv cannot be assigned, since it is defined in an enclosing type 编译错。

就再定义一个ImageView去代表它

分享到:
评论

相关推荐

    Android实现自定义照相机

    在Android平台上,自定义相机是一项常见的功能,它允许开发者根据特定需求定制相机界面和功能,以提供更加个性化和丰富的用户体验。下面将详细讲解如何在Android中实现自定义相机。 首先,你需要创建一个新的`...

    FastReport.Net 4.0+V2013.2.5_附安装_破解_个人测试程序

    FastReport.Net+V2013.2.5+For+.Net4.0_附安装与破解_个人测试程序 1.首先安装FastReport.Net+V2013.2.5 For Net 4.0 的原始安装文件[FRNetDemo2010.msi] 2.将FastReport.Net+V2013.2.5+For+.Net4.0文件夹中的...

    SW2010-2013.Activator.SSQ

    SW2010-2013.Activator.SSQ

    Android代码-Android自定义相机实现身份证拍照,并加入自动对焦与图片不规则裁剪

    Android自定义身份证相机-IDCardCamera 效果图: 功能特点 自定义相机界面 支持开启闪光灯 支持手动触摸屏幕对焦 支持自动对焦 支持图片自动裁剪 支持图片手动不规则裁剪 2 使用 Step 1. 添加JitPack仓库 在...

    W3School离线手册(2015.07.17)

    W3School离线手册(2015.07.17) W3School离线手册更新: 该文档为本人于2015年7月17日下午从W3School官网下载整理制作的CHM电子书文档。 1)要是有些人碰到chm打开空白的(因为chm未解锁,通常可以打开chm但显示无法...

    ICSharpCode.TextEditor如何自定义代码折叠和高亮

    2. **折叠策略**:通过编写自定义折叠策略,可以分析代码的语法结构,识别出函数、类、块等结构,并设置为可折叠。这需要对解析器和编辑器API有深入的理解。 3. **API调用**:使用`ICSharpCode.TextEditor.Document...

    Intel Visual Fortran Composer XE 2013.lic

    《Intel Visual Fortran Composer XE 2013许可证书详解及Fortran 2013编程基础》 Intel Visual Fortran Composer XE 2013是一款由Intel公司推出的高性能计算开发工具,专为科学计算和工程应用设计。这款编译器提供...

    fastReport 2013.2.5 for netframework 4

    【fastReport 2013.2.5 for .NET Framework 4】是适用于Microsoft .NET Framework 4.0环境的报表开发工具。FastReport是一款功能强大的报表引擎,旨在简化和加速应用程序中的报告生成过程。它允许开发者在Windows ...

    pfyyi.rar_beyonduph_自定义控件_进程与线程

    在Windows编程中,自定义控件是开发者根据需求创建的独特用户界面元素,它们通常由基本的系统控件(如按钮、编辑框等)进行扩展或完全自定义绘制。在这个项目中,`V85CustomTabCtrlDemo`可能是一个示例应用程序,...

    Android自定义相机实现自动对焦和手动对焦

    总之,Android自定义相机功能的实现涉及多个步骤,包括初始化相机、设置参数、处理对焦、拍照和释放资源。自动对焦相对简单,而手动对焦则需要更巧妙的处理。务必测试不同设备上的表现,因为相机硬件和实现可能会...

    FastReport.Net V2013.2.5 For .Net4.0(绿色破解版)

    FastReport.Net V2013.2.5 For .Net4.0 绿色版本,不需要安装 已去除导出与打印5页限制,去除导出与打印所带的DEMOVERSION水印.

    Qml自定义复选框QmlCheckBox.7z

    通过学习这个示例,你不仅可以学会如何自定义复选框,还能进一步提升对QML的理解,包括组件的扩展、样式设计、交互逻辑以及性能优化等。这对于任何想要在Qt平台上开发美观且功能丰富的用户界面的开发者来说都是宝贵...

    intel_2013.lic

    intel fortran 2013 破解文件

    webpack.config.js 自定义

    webpack.config.js 自定义

    Android照相机移动对焦例子

    在传统的数码相机中,移动对焦通过调整镜头位置来实现。而在智能手机中,由于空间限制,通常采用对比度检测自动对焦(Contrast Detection AF)或相位检测自动对焦(Phase Detection AF)。Android系统提供了API支持...

    android相机圆形框拍照,自定义拍照界面

    在Android平台上,开发一款应用,实现自定义相机功能并让拍照界面呈现出圆形拍摄框,是一项技术挑战。这个功能常用于创建类似Instagram或某些社交应用的个性化拍摄体验,让用户拍摄的照片中心区域聚焦为圆形,增强...

    Telerik OpenAccess ORM 2013 Q1 2013.1.219

    ☆ 资料说明: ☆ Telerik OpenAccess ORM 2013 Q1 2013.1.219 此版本为开发版(零售版),无需序列号、无需破解;

    37.(leaflet篇)leaflet叠加自定义tooltip展示.zip

    在本教程中,我们将深入探讨如何使用Leaflet库在地图上叠加自定义的tooltip,以增强用户交互体验。Leaflet是一个轻量级的JavaScript库,专门用于创建交互式地图,适用于各种Web应用。通过自定义tooltip,我们可以为...

    camera2_对焦与zoom

    同时,考虑到性能和用户体验,缩放操作应当在不影响其他相机功能(如对焦、曝光等)的前提下进行。 在CameraDemo-master这个项目中,开发者可能已经实现了对焦和缩放功能的示例代码。通过对源码的学习,你可以了解...

    自定义信息框模块.e.rar

    1. **可配置性**:一个好的自定义信息框模块应该提供多种配置选项,如调整尺寸、设置背景色、选择字体等,以便适应不同的使用场景。 2. **多语言支持**:对于多语言应用,信息框需支持文本的国际化,方便根据不同...

Global site tag (gtag.js) - Google Analytics