【Android】MyTool 工具界面:手电筒


文章目录

  • MyTool 工具界面:
    • ♦ 回顾
    • ♦ 设置 activity_my_tool.xml 界面
    • ♦ 编写 MyToolActivity 实现功能界面跳转
    • ♦ 创建 activity_flash_light.xml 手电筒界面
    • ♦ 编写 FlashLightActivity 实现功能
    • ♦ 修改AndroidManifest.xml文件授权
    • ♦ 测试


MyTool 工具界面:

♦ 回顾

通过上一节的学习,我们实现了工具界面百度、拨号功能的实现,如下图所示。今天,要在这个界面中实现一个新的功能手电筒。

在这里插入图片描述
返回顶部


♦ 设置 activity_my_tool.xml 界面

  • 添加一个新的按钮组件:手电筒
 <Buttonandroid:id="@+id/flashlight"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentStart="true"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:layout_marginStart="39dp"android:layout_marginLeft="39dp"android:layout_marginTop="250dp"android:text="手电筒"android:textSize="16dp"/>

返回顶部


♦ 编写 MyToolActivity 实现功能界面跳转

public class MyToolActivity extends AppCompatActivity {TextView welcome;Button net, call, quick_call,flashlight;//权限请求:载入界面、特定情况触发//定义权限 --- 动态权限,申请哪一个就启动哪一个,通常为常量private static String[] PERMISSIONS_STORAGE = {Manifest.permission.CALL_PHONE};//请求状态码private static int REQUEST_PERMISSION_CODE = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_my_tool);.........................// 获取工具组件net = findViewById(R.id.net);call = findViewById(R.id.call);quick_call = findViewById(R.id.quick_call);flashlight = findViewById(R.id.flashlight);.........................// 手电筒界面跳转flashlight.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 创建页面跳转Intent intent = new Intent();intent.setClass(MyToolActivity.this,FlashLightActivity.class);startActivity(intent);}});}
}

返回顶部


♦ 创建 activity_flash_light.xml 手电筒界面

  • 基本布局、背景
    在这里插入图片描述

  • 添加 ImageButton 组件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.myapplication.FlashLightActivity"android:background="@drawable/main_page"><TextViewandroid:id="@+id/textView9"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_marginTop="76dp"android:text="欢迎使用手电筒!"android:textStyle="bold"android:textColor="@android:color/white"android:textSize="20dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.511"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><ImageButtonandroid:id="@+id/imageButton"android:layout_width="255dp"android:layout_height="247dp"android:layout_alignParentTop="true"android:layout_centerInParent="true"android:layout_marginTop="218dp"android:scaleType="centerInside"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.644"app:srcCompat="@drawable/off" /><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="195dp"android:text="已关闭!"android:textSize="20dp"android:textStyle="bold"android:textColor="@android:color/white"/><SurfaceViewandroid:id="@+id/surfaceView"android:layout_width="149dp"android:layout_height="109dp"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginTop="124dp"android:layout_marginBottom="7dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />
</RelativeLayout>
  • 由于手电筒(闪光灯)常与照相机放在一起使用,不妨这里我们添加一个SurfaceView用于模拟照相功能

在这里插入图片描述

返回顶部


♦ 编写 FlashLightActivity 实现功能

package com.example.myapplication;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.os.Build;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import java.io.IOException;public class FlashLightActivity extends AppCompatActivity {// 定义对象ImageButton flashlight;TextView showNow;boolean isFlag = false;// 创建相机对象Camera cc;Camera.Parameters pp;SurfaceView sv;SurfaceHolder sh;//权限请求:载入界面、特定情况触发//定义权限 --- 动态权限,申请哪一个就启动哪一个,通常为常量private static String[] PERMISSIONS_STORAGE = {Manifest.permission.CAMERA};//请求状态码private static int REQUEST_PERMISSION_CODE = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_flash_light);if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP){// 检查当前的权限if (ActivityCompat.checkSelfPermission(FlashLightActivity.this, Manifest.permission.CAMERA) !=PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(FlashLightActivity.this,PERMISSIONS_STORAGE,REQUEST_PERMISSION_CODE);}}flashlight = findViewById(R.id.imageButton);showNow = findViewById(R.id.textView8);sv = findViewById(R.id.surfaceView);cc = Camera.open();pp = cc.getParameters();sh = sv.getHolder();sh.addCallback(new SurfaceHolder.Callback() {@Overridepublic void surfaceCreated(@NonNull SurfaceHolder holder) {try {cc.setPreviewDisplay(sh);cc.startPreview();} catch (IOException e) {e.printStackTrace();cc.release();}}@Overridepublic void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {}@Overridepublic void surfaceDestroyed(@NonNull SurfaceHolder holder) {}});flashlight.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(isFlag==false){flashlight.setImageDrawable(getResources().getDrawable(R.drawable.on));showNow.setText("已开启!");pp.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);cc.setParameters(pp);isFlag = true;} else {flashlight.setImageDrawable(getResources().getDrawable(R.drawable.off));showNow.setText("已关闭!");pp.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);cc.setParameters(pp);isFlag = false;}}});}
}

返回顶部


♦ 修改AndroidManifest.xml文件授权

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapplication_test"><uses-permission android:name="android.permission.CALL_PHONE" /><uses-permission android:name="android.permission.CAMERA" /> 添加摄像权限<uses-permission android:name="android.permission.FLASHLIGHT" /> 添加电筒权限<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name="com.example.myapplication.MyToolActivity"></activity><activity android:name="com.example.myapplication.MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>
</manifest>

返回顶部


♦ 测试

在这里插入图片描述

返回顶部


上一篇:MyTool工具界面百度、拨号、一键拨号                                  下一篇:MyTool 工具界面:秒表计时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1621050.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

定时器中断学习和简单应用

定时器中断&简单应用 定时器中断基本介绍清楚明白工作原理定时器结构 主要内容两个寄存器初始化程序 简单应用-秒表基本功能代码详解 彩蛋&#xff1a;对于独立按键的使用没啥硬核内容&#xff0c;就是初学者萌新入门&#xff0c;学长大佬请移步 定时器中断 基本介绍 清…

自学HarmonyOS应用开发(62)- 使用对象关系映射数据库保存设定信息

除了地图数据&#xff0c;秒表应用还有一些其他希望保存的数据&#xff0c;例如上次定位的位置&#xff0c;地图画面的缩放比例等。本文介绍通过对象关系映射数据库技术保存这些信息的方法。 通用的设定信息表 下面的代码定义了用于保存设定信息的通用的表结构&#xff1a; E…

Git企业开发控制理论和实操-从入门到深入(七)|企业级开发模型

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

模2运算规则

模2加法 模2加法没有进位&#xff0c;等同于异或运算。一位数的模2加法规则如下&#xff1a; 0 0 0 0 1 1 1 0 1 1 1 0 多位数的模2加法中&#xff0c;每一位都按照上面的规则进行&#xff0c;例如: 当多个数相加&#xff0c;对应位置上如果有偶数个1&#xff0c;…

知识图谱实战应用25-基于py2neo的超市商品的图谱构建与商品推荐系统的实现

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用25-基于py2neo的超市商品的图谱构建与商品推荐系统的实现,本篇文章,我将指导大家如何使用py2neo和Neo4j构建一个实用的超市商品知识图谱和推荐系统。该系统可以帮助用户快速找到感兴趣的商品,并提供个性化的推荐服务…

pygame实现物体运动拖尾尾迹

文章目录 前言主要内容讲解&#xff1a;代码 总结更多宝藏 前言 &#x1f60e;&#x1f973;&#x1f60e;&#x1f920;&#x1f916;&#x1f648;&#x1f4ad;&#x1f373;&#x1f371; 本文我们来讲一下如何使用pygame实现一个拖尾特效。 主要内容 &#x1f99e;&am…

pe_xscan 增加 O31 项

O31项 对应的项目&#xff1a; 开机、关机脚本 用户登录、注销脚本

LeetCode第1~5题解

CONTENTS LeetCode 1. 两数之和LeetCode 2. 两数相加LeetCode 3. 无重复字符的最长子串 LeetCode 1. 两数之和 【题目描述】 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出和为目标值 target 的那两个整数&#xff0c;并返回它们的数组下标。…

linux下运行win10效果好不好,Win10不好用?继续坚守Win7的人依然巨多

前不久&#xff0c;微软发布消息称Windows 10操作系统市场占有率终于突破50%。而近日&#xff0c;安全厂商卡巴斯基发布的8月下旬最新研究报告也印证了这一点&#xff0c;并且从数据来看&#xff0c;Windows 10系统的占有率还有小幅度的增长&#xff0c;达到了53%左右。 退休时…

其实win10要比win7的安全性强很多

随着win10系统的一步步更新&#xff0c;用户体验度也越来越好&#xff0c;更多的用户也换了win10的系统&#xff0c;但还是有一部分用户依然雷打不动的信任着win7。下面小编来分析一下win7和win10到底有着怎样的差别&#xff0c;相信看完下文&#xff0c;你也会想升级win10系统…

W7-2495X参数 至强W72495X功耗

W7-2495X采用10纳米工艺二十核心四十线程CPU主频 2.6GHz动态加速频率 4.8GHz 热设计功耗(TDP) 225W支持最大内存容量 2TB内存类型 DDR5 4800MHz W7-2495X性能怎么样这些点很重要 http://www.adiannao.cn/du

电脑装了w10没有w7流畅怎么办?

如果我们对自己的电脑进行了系统的重装&#xff0c;在电脑装了win10系统之后发现没有win7流畅的话&#xff0c;很多小伙伴不知道是什么情况应该怎么解决。 那么据微点阅读小编所知可能是我们电脑硬件设施的不兼容所导致的。我们可以在官网上查看win10系统的配置要求是否符合自…

W7-2475X参数 至强W72475X功耗

W7-2475X采用10纳米制作工艺二十核心四十线程CPU主频 2.6GHz动态加速频率 4.8GHz 热设计功耗(TDP) 225W支持最大内存容量 2TB内存类型 DDR5 4800MHz W7-2475X性能怎么样这些点很重要 http://www.adiannao.cn/du

Intel 至强 W7-3465X参数 W73465X功耗

至强 W7-3465X采用10纳米 制作工艺 二十八核心五十六线程CPU主频 2.5GHz动态加速频率 4.8GHz热设计功耗(TDP) 300W支持最大内存容量 4TB 内存类型 DDR5 4800MHz W7-3465X性能怎么样这些点很重要 http://www.adiannao.cn/du

五类造成Windows 7假死的原因及处理

Windows 7虽好&#xff0c;可是小问题不断。从Beta版本至今&#xff0c;很多朋友遇到最严重的问题就是资源管理器偶尔或者经常失去响应&#xff0c;虽然不是什么非重装的问题&#xff0c;但是时不时电脑卡上一段时间&#xff0c;谁都觉得很烦。那么到底Windows 7在哪些情况下会…

高傲的win7

高傲的win7 首先为win7证明&#xff1a;本文内容和本人下载的系统版本以及硬件细节有关&#xff0c;并不能代表所有的win7种族。 好久没有写博客了&#xff0c;主要是因为把很多东西都记录在笔记里边了&#xff0c;但是感觉写博客和笔记还是不太一样&#xff0c;笔记就是随时…

我对windows7简单评论

10月25日受朋友的邀请参加了弘博软件教育学院成功举办的windows 7发布会 发现不止是我一个对windows 7偏爱有加。这里这里在座师生也是windows7 的粉丝。 windows 7发布会一次又一次的成举办功也源于它独特的性能&#xff0c;带给我们的方便、快捷。 经过我近一个月的使用&…

09年IT界最愚蠢的九件事 Windows7精简版UAC上榜(转)

据国外媒体报道&#xff0c;临近岁末&#xff0c;资讯网站eWeek于上周评出了《九款年度重磅产品》。无独有偶&#xff0c;该网站此番又评选出2009年度最不受用户欢迎的九大事件&#xff1a; 1、亚马逊删书门 今年七月份&#xff0c;在线销售巨人亚马逊&#xff08;Amazon&…

历经十年,还有一个月,Windows 7 生命周期将结束,相信很多人还是觉得win7不错的

距离 Microsoft 终止对 Windows 7 的支持只剩一个月的时间了,到 2020 年 1 月 14 日,这款经典的操作系统就要和大家 say goodbye 了。 2009 年 7 月 4 日,Windows 7 正式开发完成,到现在已经整整 10 岁。它在 Vista 前辈的基础上发展而来,界面友好,功能强大,使用高效,因…

服务器装系统步骤图解win7,w7系统重装步骤是怎样的|w7重装系统教程图解

w7系统是当前最稳定&#xff0c;也是最主流的系统&#xff0c;不过w7系统在使用过程也会出现系统故障&#xff0c;有些甚至出现系统崩溃不能启动的问题&#xff0c;这时候就需要重装系统&#xff0c;那么w7系统重装步骤是怎样的呢&#xff1f;w7重装系统一般有三种方式&#xf…