android--超级手电筒的开发记录
作为新手,我认为做小东西是学习一门语言最快的方法,目前在跟着教程制作超级手电筒,每天记录一些,直到做完这个手电筒
主要思路
关于手电筒,两个imageview带有相应的开关图片,一个空白的imageview作为热区,代码控制其大小,用来让用户点击
框架布局—上下依次继承关系
BaseActivety 主文件,初始化一些按键
FlashLight 控制手电筒的java类
mainActivity 暂时未用到
下面学习到的一些操作记录
获取屏幕大小,并动态设置imageview的大小
/** 下面手动获取屏幕尺寸,调节热区大小*/Point point = new Point();getWindowManager().getDefaultDisplay().getSize(point);LayoutParams Params = flashlightcontroller.getLayoutParams();Params.height = point.y*3/4;Params.width = point.x/3;flashlightcontroller.setLayoutParams(Params);}
在一个activity_main.xml文件引用其他的xml文件
<include layout="@layout/ui_flashlight"/>
空白热区的建立
<!-- 空白的热区建立,在最底层,中间,并且添加点击事件 --><ImageView
android:id="@+id/imageView_flashlight_controller"android:layout_width="100dp"android:layout_height="320dp"android:layout_gravity="bottom|center_horizontal" android:onClick="onclick_flashlight"/>
styles.xml文件样式的设置
<!-- 不同的values文件夹对应安卓不同版本的styles. -->
<!-- Application theme. --><style name="AppTheme" parent="AppBaseTheme"><item name ="android:windowNoTitle">true</item><item name="android:windowFullscreen">true</item><item name="android:windowBackground">@drawable/bg</item> </style>
设置软件使用照相机闪光灯快捷方式权限
<!-- 这里设置使用照相机和闪光灯的权限 --><uses-permission android:name="android.permission.CAMERA"/><uses-permission android:name="android.permission.FLASHLIGHT"/><!-- 这里设置使用快捷方式创建的权限 --><uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/><uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/><uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>
闪光灯开启
/** 控制闪光灯的开*/protected void startflashlight() {//使用transitiondrawable来控制动画,也就是flashlight.xml这个文件TransitionDrawable drawable = (TransitionDrawable) flashlight.getDrawable(); //控制转变时间200毫秒drawable.startTransition(200);//设置标识,如果被打开,则tag为trueflashlight.setTag(true);/** 下面开始打开照相机,然后处理图像到后台,然后设置闪光灯打开*/try {/** camera和其组件之间的交流,通过参数parmeters来进行关联,camera可以获取当前的状态参数* 再通过setparameters来进行设置新的参数*/mcamera = Camera.open();//打开照相机int texttrueid = 0;//?暂时不知道是啥mcamera.setPreviewTexture(new SurfaceTexture(texttrueid));mcamera.startPreview();mparaters = mcamera.getParameters();//设置打开闪光的,并点亮mparaters.setFlashMode(Parameters.FLASH_MODE_TORCH);mcamera.setParameters(mparaters);} catch (Exception e) {}}
闪光灯关闭
/** 控制闪光的的关闭*/protected void stopflashlight() {TransitionDrawable drawable = (TransitionDrawable) flashlight.getDrawable();if((Boolean) flashlight.getTag()){drawable.reverseTransition(200);flashlight.setTag(false);if(mcamera != null){mparaters = mcamera.getParameters();mparaters.setFlashMode(Parameters.FLASH_MODE_OFF);mcamera.setParameters(mparaters);mcamera.stopPreview();//停止预览mcamera.release();//释放掉资源,不然下次打不开mcamera = null;//设置为null为了垃圾回收机制尽快回收}}}/** 当程序失去焦点的时候自动暂停闪光的*/@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();stopflashlight();}
利用xml文件设置imageview切换动画
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/off" /><item android:drawable="@drawable/on" />
</transition>
关于xml中onclick的注意事项
这样定义
<ImageView
android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:layout_weight="1"android:onClick="onclick_toflashlight"android:src="@drawable/main_flashlight" />
这样使用
/** 点击手电筒图片实现的方法* view不能省略,第二类要是public类型*/public void onclick_toflashlight(View view) {Uihideall();ui_flashlight.setVisibility(View.VISIBLE);currentUItype = UIType.UI_TYPE_FLASHLIGHT;previousUItype = UIType.UI_TYPE_FLASHLIGHT;}
枚举类型可用来表示当前状态,当有多个功能的时候
protected enum UIType {UI_TYPE_MAIN, UI_TYPE_FLASHLIGHT, UI_TYPE_WARNINGLIGHT, UI_TYPE_MORSE, UI_TYPE_BLUB, UI_TYPE_COLOR, UI_TYPE_POLICE, UI_TYPE_SETTINGS}
版权声明:本文为博主原创文章,未经博主允许不得转载。
转载于:https://www.cnblogs.com/-niuli/p/4856447.html
android--超级手电筒的开发记录相关推荐
- java手电筒_android--超级手电筒的开发记录
作为新手,我认为做小东西是学习一门语言最快的方法,目前在跟着教程制作超级手电筒,每天记录一些,直到做完这个手电筒 主要思路 关于手电筒,两个imageview带有相应的开关图片,一个空白的imagev ...
- android ril wifi,Android WIFI Ralink RT3070开发记录
一.wifi基本架构 1.开源代码移植部分(external目录下) wireless_tools.wpa_supplicant.wpa_supplicant_6(后两项已经移植过) 生成库libwp ...
- Android学Jni/Ndk 开发记录(一)
治疗拖延症的唯一办法就是:一想起些什么 / 要做些什么就 TM 立马去做! 是的,突然想起我不会 JNI.NDK 开发.解决办法:立马去学! 一:配置 NDK 环境 下载 NDK 写入到配置文件 二: ...
- Android爱读app开发记录之一---Splash界面
一.简单介绍 该APP是一款简单易用.界面美观且功能强大的语音阅读器,实现本地导入阅读(支持大文件).在线阅读.书签.跳转.日夜间模式.设置字体大小.设置书架/阅读界面背景等功能 ...
- android平台手电筒开发源代码
android平台手电筒开发源代码,AndroidManifest.xml文件的入口是startapp,这个文件没上传上来,大家可以自己写. 1. [代码]android jQuery特效 / ...
- Android开发记录(转)
一.Android模拟器相关 1. Android模拟器安装 Market 模拟器默认没有安装 Market,看到网上有较为复杂的安装方法,也有1个简单的,试了简单的,在 Android2.2 模拟器 ...
- MTK6735 android开发记录 编译配置(一)
MTK6735 android开发记录 编译配置(一) 指导文件:环境建立,编译,配置GPIO等: :YYW_M_6735相关文档\YYW-M-6735-Support.pdf 里面有什么不懂的,比如 ...
- 原创:Android应用开发记录-Andorid歌词秀(4)完成,含源码
最新版软件请参照: Android应用开发记录-字幕播放器(5)完善 功能简介: 1.自动读取与音乐相同位置的歌词文件 2.根据播放进度,表示当前的歌词 3.按歌词语句快进,快退. 可以用来记歌词,学 ...
- 原创:Android应用开发记录-Andorid歌词秀(3)使用的Service的音频播放器
在下文中我们实现的简单的音乐播放功能. 原创:Android应用开发记录-Andorid歌词秀(2)先来一个音频播放器 但是这样的方式在程序退出后播放也会停止,为了解决这个问题,使用的Service类 ...
最新文章
- Asp.NetCore1.1版本没了project.json,这样来生成跨平台包
- ASPxGridView之PreviewRow
- C# Settings使用小结
- Java数据结构和算法:哈希表
- 软件开发中的一些感想
- 无法加载登录用户界面DLL MyGina.dll 解决
- Vue — 第五天(路由)
- Hibernate的generator属性
- 在已有数据的linkedList和arrayList集合中在中间位置新插入一条数据谁更快
- Java web后台插入数据库中文乱码问题解决
- VMware ESX虚拟磁盘性能测试
- 信息发布系统 Jquery+MVC架构开发(3) 解决方案创建
- centos刻录工具_CentOS7.0 U盘刻录工具正式版
- MT2503模块价格,MT2503基带芯片,MT2503核心板资料介绍
- webservice接口开发学习笔记(一)
- RiceQuant开源框架RQAlpha阅读笔记(转)
- 一键设置 DeviceAdmin/ProfileOwner/DeviceOwner 应用
- linux系统新增2t以上硬盘,在linux下新增一块硬盘的操作。(包含大于2T的硬盘在linux下挂载操作)...
- 学一点Wi-Fi:WEP
- 基于STM32单片机的远程智能浇花花盆GSM短信浇水补光方案原理图程序设计