android之简单手电筒

本文介绍了一个简单的小电筒项目,通过此项目可以学习到Android开发的基础知识,包括界面设计、事件处理、资源管理及屏幕亮度和颜色设置。项目包含详细代码解析和操作流程,适合初学者入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时间弄个小电筒来学习,该小项目比较简单,但个人觉得该小项目可以学到很多知识,希望对大家用,如果有什么好的android教程,请分享谢谢

java源码:

 

package color.test;


import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.Toast;

public class ColorTestActivity extends Activity {
	  
		private LinearLayout mylayout;//布局对象
		private Resources myColor;//资源对对象
		int li;
	    public void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        //设置界面为全屏
	        SetStatusWindows();
	        setContentView(R.layout.main);
	        
	        //获取实例
	        mylayout = (LinearLayout)findViewById(R.id.mylayout);
	       SetColor(R.color.white);
	       //改变屏幕亮度
	        li=0;
	        SetBright(1.0f);
	    }
	    
	    /**
	     * 捕抓事件
	     */
		public boolean onOptionsItemSelected(MenuItem item) {
			
			switch(item.getItemId())
			{
			case R.id.about:
				about();
				return true;
			case R.id.setcolor:
				selectColor();
				return true;
			case R.id.setbright:
				selectBright();
				return true;
			case R.id.seteffer:
				finish();
				return true;
			}
			return super.onOptionsItemSelected(item);
		}

		/**
		 * 设置亮度
		 */
		private void selectBright() {
			final String[] items ={"100%","75%","50%","25%","10%"};
			new AlertDialog.Builder(this)
			.setTitle("选择亮度")
			.setSingleChoiceItems(items, li, new DialogInterface.OnClickListener() {
				///此处数字为选项的下标,从0开始, 表示默认哪项被选中 
				public void onClick(DialogInterface dialog, int item) {
					
					Toast.makeText(getApplicationContext(),items[item],Toast.LENGTH_LONG).show();
					li = item;
					switch(li){
					case 0:
						SetBright(1.0F);
						break;
					case 1:
						SetBright(0.75F);
						break;
					case 2:
						SetBright(0.5F);
						break;
					case 3:
						SetBright(0.25F);
						break;
					case 4:
						SetBright(0.1F);
						default:
							SetBright(1.0F);
							break;					
					}		
					dialog.cancel();
				}
			}).show();
			
		}
		   /**
		    * 设置亮度
		    * @param light
		    */
		    private void SetBright(float light)
		    {
		    	WindowManager.LayoutParams lp=getWindow().getAttributes();
		    	lp.screenBrightness=light;
		    	getWindow().setAttributes(lp);
		    	
		    }


		/**
		 * 设置颜色
		 */
       private void selectColor() {
			final String[] items ={"白色","红色","黑色","黄色","粉色"};
			new AlertDialog.Builder(this)
			.setTitle("选择背景颜色")
		    .setItems(items, new DialogInterface.OnClickListener() {
				/**
				 * getApplicationContext() 得到的也是当前的Activity对象
				 * 可用当前Activity对象的名字.this代替(Activity.this) 
				 */
				public void onClick(DialogInterface dialog, int item) {
					Toast.makeText(getApplicationContext(),items[item],Toast.LENGTH_LONG).show();
					switch(item)
					{
					case 0:
						SetColor(R.color.white);
						break;
					case 1:
					SetColor(R.color.red);
						break;
					case 2:
						SetColor(R.color.black);
						break;
					case 3:
						SetColor(R.color.yellow);
						break;
					case 4:
						SetColor(R.color.fs);
					}
				}
			}).show();
			
		}

	/**
        * 关于
        */
		private void about() {
			new AlertDialog.Builder(ColorTestActivity.this).setTitle("关于人生")
			.setMessage("人生需要奋斗")
			.setIcon(R.drawable.ic_launcher)
			.setPositiveButton("确定",
					new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int whichButton) 
					{
					}
		    	}).setNegativeButton("返回",
					new DialogInterface.OnClickListener() {
						
					public void onClick(DialogInterface dialog,int which) {
						}

					}).show();

		}

		/**
	     * 监听屏幕点击事件显示菜单
	     */
		public boolean onTouchEvent(MotionEvent event) {
			
			openOptionsMenu();
			return false;
			 
		}

		/**
	     * 关联菜单
	     */
	    
		public boolean onCreateOptionsMenu(Menu menu) {
			super.onCreateOptionsMenu(menu);
			getMenuInflater().inflate(R.menu.menu, menu);
			return true;
		}
   
		/**
	     * 设置背景颜色
	     * @param white
	     */
	    private void SetColor(int white) {
	    	//根据上下文获取对象
			myColor = getBaseContext().getResources();
			//获取颜色对象
			Drawable colorview = myColor.getDrawable(white);
			//显示
			mylayout.setBackgroundDrawable(colorview);		
		}
	/**
	 * 全屏设置
	 */
		private void SetStatusWindows() {
			//设置没有标题
			requestWindowFeature(Window.FEATURE_NO_TITLE);
			//设置充满
			int flag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
			Window myWindow = this.getWindow();
			myWindow.setFlags(flag, flag);
		}
	}

布局文件

main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:id="@+id/mylayout">
 
</LinearLayout>

string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">多功能手电筒</string>
    <string name="app_name">多功能手电筒</string>
    <string name ="setcolor">更换颜色</string>
    <string name="setbright">更换亮度</string>
    <string name ="seteffer">退出软件</string>
    <string name="about">关于</string>

</resources>


 

menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu
  xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/setcolor"
android:title="@string/setcolor"
/>
 <item android:id="@+id/setbright"
android:title="@string/setbright"
 />
<item android:id="@+id/seteffer"
android:title="@string/seteffer"
 />
 <item android:id="@+id/about"
android:title="@string/about"
 />
</menu>

 

color.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<color name="white">#FFFFFF</color>
	<color name="yellow">#FFD700</color>
	<color name="red">#FF0000</color>
	<color name="fs">#FF34B3</color>
	<color name="black">#000000</color>
</resources>


结果:


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值