作为新手,我认为做小东西是学习一门语言最快的方法,目前在跟着教程制作超级手电筒,每天记录一些,直到做完这个手电筒

主要思路

关于手电筒,两个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--超级手电筒的开发记录相关推荐

  1. java手电筒_android--超级手电筒的开发记录

    作为新手,我认为做小东西是学习一门语言最快的方法,目前在跟着教程制作超级手电筒,每天记录一些,直到做完这个手电筒 主要思路 关于手电筒,两个imageview带有相应的开关图片,一个空白的imagev ...

  2. android ril wifi,Android WIFI Ralink RT3070开发记录

    一.wifi基本架构 1.开源代码移植部分(external目录下) wireless_tools.wpa_supplicant.wpa_supplicant_6(后两项已经移植过) 生成库libwp ...

  3. Android学Jni/Ndk 开发记录(一)

    治疗拖延症的唯一办法就是:一想起些什么 / 要做些什么就 TM 立马去做! 是的,突然想起我不会 JNI.NDK 开发.解决办法:立马去学! 一:配置 NDK 环境 下载 NDK 写入到配置文件 二: ...

  4. Android爱读app开发记录之一---Splash界面

    一.简单介绍        该APP是一款简单易用.界面美观且功能强大的语音阅读器,实现本地导入阅读(支持大文件).在线阅读.书签.跳转.日夜间模式.设置字体大小.设置书架/阅读界面背景等功能     ...

  5. android平台手电筒开发源代码

    android平台手电筒开发源代码,AndroidManifest.xml文件的入口是startapp,这个文件没上传上来,大家可以自己写. 1. [代码]android     jQuery特效 / ...

  6. Android开发记录(转)

    一.Android模拟器相关 1. Android模拟器安装 Market 模拟器默认没有安装 Market,看到网上有较为复杂的安装方法,也有1个简单的,试了简单的,在 Android2.2 模拟器 ...

  7. MTK6735 android开发记录 编译配置(一)

    MTK6735 android开发记录 编译配置(一) 指导文件:环境建立,编译,配置GPIO等: :YYW_M_6735相关文档\YYW-M-6735-Support.pdf 里面有什么不懂的,比如 ...

  8. 原创:Android应用开发记录-Andorid歌词秀(4)完成,含源码

    最新版软件请参照: Android应用开发记录-字幕播放器(5)完善 功能简介: 1.自动读取与音乐相同位置的歌词文件 2.根据播放进度,表示当前的歌词 3.按歌词语句快进,快退. 可以用来记歌词,学 ...

  9. 原创:Android应用开发记录-Andorid歌词秀(3)使用的Service的音频播放器

    在下文中我们实现的简单的音乐播放功能. 原创:Android应用开发记录-Andorid歌词秀(2)先来一个音频播放器 但是这样的方式在程序退出后播放也会停止,为了解决这个问题,使用的Service类 ...

最新文章

  1. Asp.NetCore1.1版本没了project.json,这样来生成跨平台包
  2. ASPxGridView之PreviewRow
  3. C# Settings使用小结
  4. Java数据结构和算法:哈希表
  5. 软件开发中的一些感想
  6. 无法加载登录用户界面DLL MyGina.dll 解决
  7. Vue — 第五天(路由)
  8. Hibernate的generator属性
  9. 在已有数据的linkedList和arrayList集合中在中间位置新插入一条数据谁更快
  10. Java web后台插入数据库中文乱码问题解决
  11. VMware ESX虚拟磁盘性能测试
  12. 信息发布系统 Jquery+MVC架构开发(3) 解决方案创建
  13. centos刻录工具_CentOS7.0 U盘刻录工具正式版
  14. MT2503模块价格,MT2503基带芯片,MT2503核心板资料介绍
  15. webservice接口开发学习笔记(一)
  16. RiceQuant开源框架RQAlpha阅读笔记(转)
  17. 一键设置 DeviceAdmin/ProfileOwner/DeviceOwner 应用
  18. linux系统新增2t以上硬盘,在linux下新增一块硬盘的操作。(包含大于2T的硬盘在linux下挂载操作)...
  19. 学一点Wi-Fi:WEP
  20. 基于STM32单片机的远程智能浇花花盆GSM短信浇水补光方案原理图程序设计

热门文章

  1. 给大家几个不花钱看书的办法【人人都是产品经理】
  2. 小程序未来将有广阔的发展前景
  3. ZooKeeper available but no active master location found
  4. 修改admin的Django站点管理标题
  5. django报错500排查方法
  6. 关于网上cython书籍的调研
  7. secureCrT夜间模式
  8. 根据数据集获取概率密度图像和概率分布图像
  9. 利用Certbot工具快速给网站部署Let's Encrypt免费SSL证书
  10. xdpyinfo命令找不到_无法使用命令 /usr/bin/xdpyinfo 自动检查显示器颜色。