`

Android相册及小小秒表震动(17)

阅读更多

                      说到相册不得不介绍Android中一种重要的视图,网格视图:GridView是以网格形式显示所有的组件的,例如制作相册,所有的图片以相同大小显示在格子里

  • 网格视图制作相册

两种方法,一种定义simpleAdapter这一种与前面ListView封装十分相似

那么一样要用到模板grid_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#000000"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="3px"   
        android:scaleType="center" />

</LinearLayout>

 

我们只需要放图片,接着我们在drawable文件夹中保存几张图片,均以l开头格式

定义Main组件

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

    <GridView
        android:id="@+id/gridView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        
        android:stretchMode="columnWidth"
       
        android:numColumns="3" >
    </GridView>

</LinearLayout>

 

在面代码中我们仍会定义一个initAdapter()方法,此方法通过反射机制取出定义的全部图片,这一节前一节课讲过。

定义Activity程序:

public class MainActivity extends Activity {
	private List<Map<String,Integer>> list=new ArrayList<Map<String,Integer>>();
	private SimpleAdapter simpleadapter=null;
	private GridView gridview=null;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		this.gridview=(GridView)super.findViewById(R.id.gridView);
		this.initAdapter();//初始化适配器
		this.gridview.setAdapter(simpleadapter);//设置图片,将封装好的图片放入
		this.gridview.setOnItemClickListener(new ItemListener());//设置组件监听器
	}


	private class ItemListener implements OnItemClickListener{

		@Override
		public void onItemClick(AdapterView<?> arg0, View arg1, int position,
				long id) {
			// TODO Auto-generated method stub
			//相当于之前的转换工厂,不使用将会报错
			ImageView imageview=new ImageView(MainActivity.this);
			imageview.setBackgroundColor(0xFFFFFFFF);//设置背景
			imageview.setScaleType(ImageView.ScaleType.CENTER);//居中
			//自适应图片
			imageview.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
			
			//取出初始化适配器装入的map
			Map<String,Integer> map=(Map<String,Integer>)MainActivity.this.simpleadapter.getItem(position);
			//开始放图
			imageview.setImageResource(map.get("img"));
			Dialog dialog=new AlertDialog.Builder(MainActivity.this)
			.setIcon(R.drawable.check).setTitle("查看图片").setView(imageview)
			.setNegativeButton("关闭", null).create();
			dialog.show();
				
			
		}
		
	}
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	private void initAdapter() {
		// TODO Auto-generated method stub
		Field[] field=R.drawable.class.getDeclaredFields();//取得全部属性,反射机制动态取图
		for(int i=0;i<field.length;i++){
			if(field[i].getName().startsWith("h")){
				Map<String,Integer> map=new HashMap<String,Integer>();
				try {
					map.put("img", field[i].getInt(R.drawable.class));//图片资源放入map
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalArgumentException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				this.list.add(map);    //保存map
			}
		}
		//使用参见listview博客
		this.simpleadapter=new SimpleAdapter(this,this.list,R.layout.grid_layout,//模板
				new String[]{"img"},//将要装入的键
				new int[]{R.id.img});//装的值
		
	}

}

 

实现一个每当用户选择一张图片,就会弹出一个对话框显示用户选择的图片。程序运行效果如下:


点击某一图片后:


 
 第二种方法是定义一个适配器类,继承BaseAdapter

这里不再对第二种方法多做阐述,为了以后设计方便建议采用第一种方法,1符合MVC设计模式

  • 时钟组件

直接布局文件中设置时钟组件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <AnalogClock
        android:id="@+id/analogClock1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

 然后效果图就出来了,可以再加上DIgitalClock



 

  • 计时器:Chronometer  本节我们来做个秒表小小闹钟到点会震动提示

首先定义布局文件

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

    <Chronometer
        android:id="@+id/chronometer1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Chronometer" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="开始" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="停止" />

        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="复位" />

        <Button
            android:id="@+id/button4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="格式化显示" />

    </LinearLayout>

</LinearLayout>

 然后定义acticity代码

public class MainActivity extends Activity {

	private Chronometer clock=null;
	private Button start=null;//开始计时
	private Button stop=null;//停止计时
	private Button base=null;//设置基准时间
	private Button format=null;//设置格式
	private Vibrator vibrator=null;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		this.clock=(Chronometer)super.findViewById(R.id.chronometer1);
		this.start=(Button)super.findViewById(R.id.button1);
		this.stop=(Button)super.findViewById(R.id.button2);
		this.base=(Button)super.findViewById(R.id.button3);
		this.format=(Button)super.findViewById(R.id.button4);
		this.vibrator=(Vibrator)super.getApplication().getSystemService(Service.VIBRATOR_SERVICE);
		this.start.setOnClickListener(new StartListener());
		this.stop.setOnClickListener(new StopListener());
		this.base.setOnClickListener(new BaseListener());
		this.format.setOnClickListener(new FormatListener());
		this.clock.setOnChronometerTickListener(new OnChronometer());
		
	}
	private class OnChronometer implements OnChronometerTickListener{

		@Override
		public void onChronometerTick(Chronometer arg0) {
			// TODO Auto-generated method stub
			String time=clock.getText().toString().replaceAll("[^(\\d{2}:\\d{2})]", "");
			if("01:00".equals(time)){
				MainActivity.this.vibrator.vibrate(new long[]{1000, 10,1000,100},0);//设置震动周期以及循环震动
			}
			
		}
		
	}
	private class StartListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			MainActivity.this.clock.start();//开始计时
			
			
		}
		
	}
	private class StopListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			MainActivity.this.clock.stop();//停止计时
			MainActivity.this.vibrator.cancel();//取消震动
			
		}
		
	}
	private class BaseListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			
			MainActivity.this.clock.setBase(SystemClock.elapsedRealtime());//复位
		}
		
	}
	private class FormatListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			
			MainActivity.this.clock.setFormat("新显示格式:%s。");
		}
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

 最后记得配置权限

<uses-permission 
       android:name="android.permission.VIBRATE" 
        
        />

 最后运行效果如下:

设置满一分钟震动



 
 

  • 大小: 342.5 KB
  • 大小: 193.1 KB
  • 大小: 23.2 KB
  • 大小: 15.6 KB
1
0
分享到:
评论

相关推荐

    android秒表倒时器源码

    在Android平台上开发一款秒表和倒计时应用是一项常见的任务,尤其对于初学者而言,这样的项目可以帮助他们深入理解Android编程的基础以及时间管理相关的API。本文将深入探讨标题为"android秒表倒时器源码"的项目,...

    一个超小型纯绿色的小小秒表

    一个超小型纯绿色的小小秒表,给你带来方便,不妨试试。最新的1.5版增加了定时、倒计时、微缩窗口及毫秒60进位功能。 如果你需要改变提醒音乐,请将音乐文件复制到程序所在目录,并且命名为beep.wav

    Android应用源码之秒表源码.zip

    在Android应用开发中,秒表功能是一个常见的需求,比如用于计时、运动或者游戏场景。这份"Android应用源码之秒表源码.zip"提供的就是一个简单的秒表应用的源代码示例,它可以帮助开发者理解如何在Android平台上实现...

    android实现秒表功能

    在Android平台上实现秒表功能是一项常见的任务,它涉及到对时间的精确控制以及用户界面的交互设计。本篇文章将深入探讨如何使用Android SDK来构建这样一个功能,包括设置计时时间、开始、暂停和停止操作。 首先,...

    简单的android秒表

    在Android平台上开发一个简单的秒表应用,涉及到许多关键知识点,包括UI设计、事件处理、计时器机制以及数据存储。下面将对这些方面进行详细解释。 首先,UI设计是用户与应用交互的基础。一个基本的秒表应用通常...

    Android 秒表源码.rar

    在Android平台上开发一款秒表应用是一项常见的任务,它可以帮助用户计时、跟踪活动时间等。这份"Android秒表源码.rar"文件很可能包含了实现这样一个功能的完整代码。下面,我们将详细探讨Android秒表应用开发涉及的...

    Android代码-秒表源码.zip

    在Android平台上开发秒表应用,通常涉及到计时器(Timer)、线程(Threads)、UI更新以及用户交互等方面的知识点。这里我们将深入探讨如何在Android环境中实现一个秒表功能。 1. **计时器原理**: - 在Android中,...

    Android 课设 韩国风格的秒表源码(含apk)

    这篇内容将深入解析“Android 课设 韩国风格的秒表源码”,这是一个针对Android平台开发的项目,旨在教授学生如何构建一个具有韩国文化特色的秒表应用。该源码包含了实现秒表功能的所有必要组件,同时也提供了一个可...

    简易秒表Android源代码

    【简易秒表Android源代码】是一个适合初学者的Android应用项目,主要目的是教授如何在Android平台上实现一个功能简单的秒表程序。这个项目的核心是利用Android SDK提供的相关API来创建一个直观、易于理解的用户界面...

    Android 韩国风格的秒表源码.zip

    【Android 秒表应用开发详解】 在Android平台上开发一款韩国风格的秒表应用,涉及到的知识点广泛而深入,包括UI设计、事件处理、线程管理、时间计算等多个方面。下面将详细阐述这些关键领域的技术要点。 1. **UI...

    android秒表 计时器

    在Android平台上,开发一个秒表或计时器应用是一项常见的任务,这涉及到对用户界面(UI)设计、事件处理以及时间管理的理解。本项目聚焦于创建一个基础的Android秒表功能,下面将详细介绍相关的知识点。 1. **...

    android秒表

    秒表在Android开发中的实现涉及到了多个方面的技术,包括用户界面设计、事件处理、线程同步和时间管理等。下面将详细阐述这些知识点。 首先,Android应用的基础是Activity,它是用户界面的基本单元。在设计秒表应用...

    android studio实现简易秒表

    在Android Studio中实现一个简易的秒表应用,主要涉及到Android应用开发的基础知识,包括UI设计、事件监听、计时器的使用以及应用的打包与部署。以下是对这些知识点的详细说明: 1. **UI设计**:秒表界面通常包含...

    Android 秒表源码.zip

    在Android平台上,开发一个秒表应用是一个常见的任务,它可以帮助用户测量时间间隔,适用于各种活动,如运动训练、烹饪计时等。这个"Android 秒表源码.zip"包含了一个简单秒表应用的源代码,我们可以从中学到如何在...

    Android 秒表源代码

    在Android平台上,开发一个秒表应用涉及到多个关键知识点,包括用户界面设计、计时器功能实现、事件处理以及性能优化。下面将详细讲解这些方面。 首先,秒表应用的用户界面(UI)通常由几个核心组件构成:开始/停止...

    Android秒表app_安卓源码.zip

    7. **权限管理**:尽管秒表应用通常不需要特殊权限,但根据Android的最新版本(如Android 10及以上),如果应用需要访问非默认资源或服务,可能需要请求相应的权限。 8. **测试与调试**:源码中可能还包括测试用例...

    Android项目源码支持闹钟秒表倒计时的小明闹钟

    《Android项目源码实现闹钟、秒表与倒计时:小明闹钟》 在Android开发领域,创建一个功能完善的闹钟应用是一项常见的任务。本文将深入探讨一个名为“小明闹钟”的项目源码,它集成了闹钟、倒计时和秒表功能,不仅...

Global site tag (gtag.js) - Google Analytics