当前位置:  编程技术>移动开发
本页文章导读:
    ▪简略闹钟程序        简单闹钟程序 这个应用实现了简单的闹钟功能,关闭程序的状态中也可以进行闹钟的提醒.遗留了一个问题:如果我通过应用本身关闭程序,是可以实现我上述所说的功能,但是如果我在手机进.........
    ▪ 格局管理器(一)        布局管理器(一)   1.线性布局      线性布局由LinearLayout类来代表,它们将容器里的组件一个挨着一个地排列起来。不仅可以控制个组件横向排列,也可控制各组件纵向排列。   LinearLayout.........
    ▪ Merge标签应用       Merge标签使用 今天看了下<merge />标签的使用,总结如下:1.merge标签中的子集是直接加到Activity的FrameLayout根节点下,(Activity视图的根节点都是frameLayout).如果你所创建的Layout并不是用framLayout.........

[1]简略闹钟程序
    来源: 互联网  发布时间: 2014-02-18
简单闹钟程序
这个应用实现了简单的闹钟功能,关闭程序的状态中也可以进行闹钟的提醒.
遗留了一个问题:
如果我通过应用本身关闭程序,是可以实现我上述所说的功能,但是如果我在手机进程管理中实现应用程序的关闭操作,这个提醒就不起作用了,我很疑惑的是,我通过应用程序本身关闭了后,在进程中也是查看不到这个应用了的.所以哪位知道的帮留个言指点下,谢谢!!!!

ClockDemo.java:
package com.example.clock;

import java.util.Calendar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.TimePickerDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TimePicker;

public class ClockDemo extends Activity {

	private Button mSet;
	Calendar mCalendar = Calendar.getInstance();

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		ObjectPool.mAlarmHelper = new AlarmHelper(this);
		mSet = (Button) findViewById(R.id.mSet);
		setListener();
	}

	public void setListener() {
		mSet.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				mCalendar.setTimeInMillis(System.currentTimeMillis());
				int mHour = mCalendar.get(Calendar.HOUR_OF_DAY);
				int mMinute = mCalendar.get(Calendar.MINUTE);
				new TimePickerDialog(ClockDemo.this,
						new TimePickerDialog.OnTimeSetListener() {
							public void onTimeSet(TimePicker view,
									int hourOfDay, int minute) {
								mCalendar.setTimeInMillis(System
										.currentTimeMillis());
								mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
								mCalendar.set(Calendar.MINUTE, minute);
								mCalendar.set(Calendar.SECOND, 0);
								mCalendar.set(Calendar.MILLISECOND, 0);
								ObjectPool.mAlarmHelper.openAlarm(32, "ddd",
										"ffff", mCalendar.getTimeInMillis());
							}
						}, mHour, mMinute, true).show();
			}
		});
	}
	
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			showBackDialog();
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
	
	/** Give the tip when exit the application. */
	public void showBackDialog() {
		final AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("提示")
				.setIcon(R.drawable.icon)
				.setMessage("是否退出?")
				.setPositiveButton("sure",
						new DialogInterface.OnClickListener() {
							public void onClick(DialogInterface dialog,
									int which) {
								System.exit(0);
								android.os.Process
										.killProcess(android.os.Process
												.myPid());

								dialog.dismiss();
							}
						})
				.setNegativeButton("cancel",
						new DialogInterface.OnClickListener() {
							public void onClick(DialogInterface dialog,
									int which) {
								dialog.dismiss();
							}
						});
		AlertDialog ad = builder.create();
		ad.show();
	}

}


AlarmHelper.java:
package com.example.clock;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;

public class AlarmHelper {

	private Context c;
	private AlarmManager mAlarmManager;

	public AlarmHelper(Context c) {
		this.c = c;
		mAlarmManager = (AlarmManager) c
				.getSystemService(Context.ALARM_SERVICE);
	}

	public void openAlarm(int id, String title, String content, long time) {
		Intent intent = new Intent();
		intent.putExtra("_id", id);
		intent.putExtra("title", title);
		intent.putExtra("content", content);
		intent.setClass(c, CallAlarm.class);
		PendingIntent pi = PendingIntent.getBroadcast(c, id, intent,
				PendingIntent.FLAG_UPDATE_CURRENT);
		mAlarmManager.set(AlarmManager.RTC_WAKEUP, time, pi);
	}

	public void closeAlarm(int id, String title, String content) {
		Intent intent = new Intent();
		intent.putExtra("_id", id);
		intent.putExtra("title", title);
		intent.putExtra("content", content);
		intent.setClass(c, CallAlarm.class);
		PendingIntent pi = PendingIntent.getBroadcast(c, id, intent, 0);
		mAlarmManager.cancel(pi);
	}
}



CallAlarm.java:
package com.example.clock;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class CallAlarm extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
		intent.setClass(context, AlarmAlert.class);
		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		context.startActivity(intent);
	}
}



AlarmAlert.java:
package com.example.clock;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;

public class AlarmAlert extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		new AlertDialog.Builder(AlarmAlert.this)
				.setIcon(R.drawable.clock)
				.setTitle("ddd")
				.setMessage("fff")
				.setPositiveButton("ddd",
						new DialogInterface.OnClickListener() {
							public void onClick(DialogInterface dialog,
									int whichButton) {
								System.exit(0);
								android.os.Process
										.killProcess(android.os.Process
												.myPid());
							}
						}).show();
	}

}



ObjectPool.java:

public class ObjectPool {


	/** The alarm object. */
	public static AlarmHelper mAlarmHelper;

}


main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<DigitalClock android:id="@+id/dClock"
		android:layout_width="wrap_content" android:layout_height="wrap_content"
		android:textSize="40sp" android:textColor="@drawable/blue" />
	<Button android:id="@+id/mSet" android:layout_width="100dp"
		android:layout_height="wrap_content" android:text="@string/str_button1"
		android:textColor="@drawable/red" android:textSize="18sp" />
</LinearLayout>


最后贴个配置文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.example.clock" android:versionCode="1"
	android:versionName="1.0">
	<uses-sdk android:minSdkVersion="7" />
	<application android:icon="@drawable/icon" android:label="@string/app_name">
		<activity android:name=".ClockDemo" android:label="@string/app_name">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>
		<receiver android:name=".CallAlarm" />
		<activity android:name=".AlarmAlert" android:label="@string/app_name" />
	</application>
</manifest>

看了那么多,估计某些人又嫌烦了,我只贴上代码的目的是希望大家能看代码,而不是电脑上下了一个又一个的源文件,只知道用而不关心其中的技术点,这样就不能举一番三了,O(∩_∩)O哈哈~
为了不同的同学,我还是贴上源文件吧在.....

    
[2] 格局管理器(一)
    来源: 互联网  发布时间: 2014-02-18
布局管理器(一)

 

1.线性布局

 

   线性布局由LinearLayout类来代表,它们将容器里的组件一个挨着一个地排列起来。不仅可以控制个组件横向排列,也可控制各组件纵向排列。

 

LinearLayout的常用XML属性及相关方法的说明

 

XML属性 相关方法 说明 android:gravity setGravity(int)

设置布局管理器内组件的对齐方式。该属性支持top,bottom,left,right,center_certical,

center_horizontal,fill_horizontal,center,

fill,clip_vertical,clip_horizontal。也可以同时制定多种堆砌方式的组合,例如left|center_horizontal 代表出现在屏幕左边,而且垂直居中。竖线前后千万不能出现空格

android:orientation setOrientation(int)

设置布局管理器内组件的排列方式,可以设置为

horizontal(水平排列)、vertical(垂直排列、默认值)两个值的其中之一

 

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 
	android:layout_width="fill_parent"
	android:layout_height="fill_parent" 
	android:gravity="right|center_horizontal">
	<Button android:layout_height="wrap_content" 
			android:text="@string/btl1"
			android:id="@+id/btl1" android:layout_width="94dp">
	</Button>
	<Button android:layout_height="wrap_content" 
			android:text="@string/btl2"
			android:id="@+id/btl2" android:layout_width="94dp">
	</Button>
	<Button android:layout_height="wrap_content" 
			android:text="@string/btl3"
			android:id="@+id/btl3" android:layout_width="94dp">
	</Button>
	<Button android:layout_height="wrap_content"
			android:text="@string/btl4"
			android:id="@+id/btl4" android:layout_width="94dp">
	</Button>
	<Button android:layout_height="wrap_content" 
			android:text="@string/btl5"
			android:id="@+id/btl5" android:layout_width="94dp">
	</Button>
	<Button android:layout_height="wrap_content" 
			android:text="@string/btl6"
			android:id="@+id/btl6" android:layout_width="94dp">
	</Button>
</LinearLayout>
 

 

 

2.表格布局

 

    表格布局由TableLayout所代表,表格布局采用行,列的形式来管理UI组件,TableLayout并不需要明确地声明包含多少行,列,而是通过添加TableRow,其他组件来控制表格的行数和列数。

    每次想TableLayout中添加一个TableRow,该TableRow就是一个表格行,TableRow也是容器,因此它可以不断地添加其他组件,每添加一个子组件该表格就增加一列。


TableLayout的常用XML属性及相关方法的说明

 

XML属性 相关方法 说明 android:collapseColumns setColumnCollapsed(int,boolean) 设置需要被隐藏的列的列序号,多个列序号之间用逗号隔开 android:shrinkColumns setShrinkAkllColumns(boolean) 设置允许被收缩的列的列序号,多个列序号之间用逗号隔开 android:stretchColumns setStretchAllColumns(boolean) 设置允许被拉伸的列的列序号,多个列序号之间用逗号隔开

 

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 
	android:layout_width="fill_parent"
	android:layout_height="fill_parent" 
	>
	<!-- 第一个表格布局,指定第2列允许收缩,第3列允许拉伸 -->
	<TableLayout android:id="@+id/tl1"
			     android:layout_width="fill_parent"
			     android:layout_height="wrap_content"
			     android:shrinkColumns="1"
			     android:stretchColumns="2"
	>
	    <!-- 独占一行 -->
		<Button android:layout_height="wrap_content" 
				android:layout_width="wrap_content"
				android:text="独自一行的按钮"
				android:id="@+id/btt1">
		</Button>
	<TableRow >
		<Button android:layout_height="wrap_content" 
				android:layout_width="wrap_content"
				android:text="普通按钮"
				android:id="@+id/btt2" >
		</Button>
		<Button android:layout_height="wrap_content"  
				android:layout_width="wrap_content"
				android:text="允许收缩按钮"
				android:id="@+id/btt3">
		</Button>
		<Button android:layout_height="wrap_content"  
				android:layout_width="wrap_content"
				android:text="可以被允许拉伸按钮"
				android:id="@+id/btt4">
		</Button>
	</TableRow>
	</TableLayout>
	
	<!-- 第二个表格布局,指定第2列隐藏 -->
	<TableLayout android:id="@+id/tl2"
			     android:layout_width="fill_parent"
			     android:layout_height="wrap_content"
			     android:collapseColumns="1"
	>
	   <!-- 独占一行 -->
		<Button android:layout_height="wrap_content" 
				android:layout_width="wrap_content"
				android:text="独自一行的按钮"
				android:id="@+id/btt5">
		</Button>
		<TableRow >
		<Button android:layout_height="wrap_content" 
				android:layout_width="wrap_content"
				android:text="普通按钮1"
				android:id="@+id/btt6" >
		</Button>
		<Button android:layout_height="wrap_content"  
				android:layout_width="wrap_content"
				android:text="普通按钮3"
				android:id="@+id/btt7">
		</Button>
		<Button android:layout_height="wrap_content"  
				android:layout_width="wrap_content"
				android:text="普通按钮3"
				android:id="@+id/btt8">
		</Button>
	</TableRow>
	</TableLayout>
	<!-- 第三个表格布局,指定第2列和第3列允许拉伸 -->
	<TableLayout android:id="@+id/tl3"
			     android:layout_width="fill_parent"
			     android:layout_height="wrap_content"
			     android:stretchColumns="1,2"
	>
		   <!-- 独占一行 -->
		<Button android:layout_height="wrap_content" 
				android:layout_width="wrap_content"
				android:text="独自一行的按钮"
				android:id="@+id/btt9">
		</Button>
		<TableRow >
		<Button android:layout_height="wrap_content" 
				android:layout_width="wrap_content"
				android:text="普通按钮1"
				android:id="@+id/btt10" >
		</Button>
		<Button android:layout_height="wrap_content"  
				android:layout_width="wrap_content"
				android:text="允许拉伸按钮"
				android:id="@+id/btt11">
		</Button>
		<Button android:layout_height="wrap_content"  
				android:layout_width="wrap_content"
				android:text="普通按钮3"
				android:id="@+id/btt12">
		</Button>
	</TableRow>
		<TableRow >
		<Button android:layout_height="wrap_content" 
				android:layout_width="wrap_content"
				android:text="允许拉伸按钮"
				android:id="@+id/btt13" >
		</Button>
		<Button android:layout_height="wrap_content"  
				android:layout_width="wrap_content"
				android:text="允许拉伸按钮"
				android:id="@+id/btt14">
		</Button>
	</TableRow>
	</TableLayout>
</LinearLayout>
  效果图:


 

3.帧布局

 

    帧布局由FrameLayout所代表,帧布局容器为每个加入其中的组件创建一个空白的区域(成为一帧),所有每个子组件占据一帧,这些帧都会根据gravity属性执行自动对齐。也就是说,把组件一个一个的叠加在一起。

 

  FrameLayout的常用XML属性及相关方法的说明 XML属性 相关方法 说明 android:foreground setForeground(Drawable)

设置该帧布局容器的前景图像

android:foregroundGravity setForegroundGravity(int)

定义绘制前景图像的gravity属性

 

渐进效果

 

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
<!-- 一次定义7个Textview,先定义的TextView位于底层,后定义的TextView位于上层 -->
<TextView android:id="@+id/view01"
		  android:layout_width="wrap_content"
		  android:layout_height="wrap_content"
		  android:width="210px"
		  android:height="50px"	
		  android:background="#ff0000"/>
		  
<TextView android:id="@+id/view02"
		  android:layout_width="wrap_content"
		  android:layout_height="wrap_content"
		  android:width="180px"
		  android:height="50px"	
		  android:background="#dd0000"/>
		  		  
<TextView android:id="@+id/view03"
		  android:layout_width="wrap_content"
		  android:layout_height="wrap_content"
		  android:width="150px"
		  android:height="50px"	
		  android:background="#bb0000"/>	
		  
<TextView android:id="@+id/view04"
		  android:layout_width="wrap_content"
		  android:layout_height="wrap_content"
		  android:width="120px"
		  android:height="50px"	
		  android:background="#990000"/>

		  
<TextView android:id="@+id/view05"
		  android:layout_width="wrap_content"
		  android:layout_height="wrap_content"
		  android:width="90px"
		  android:height="50px"	
		  android:background="#770000"/>	
		  		  
<TextView android:id="@+id/view06"
		  android:layout_width="wrap_content"
		  android:layout_height="wrap_content"
		  android:width="60px"
		  android:height="50px"	
		  android:background="#550000"/>

<TextView android:id="@+id/view07"
		  android:layout_width="wrap_content"
		  android:layout_height="wrap_content"
		  android:width="30px"
		  android:height="50px"	
		  android:background="#330000"/>
</FrameLayout>
 

效果图:

 



 

本人开了个充值淘宝网店。有需要的朋友请访问的店铺并拍下所充值的话费,

本店已加入消费保障服务计划,货源来源于淘宝充值平台,安全可靠便捷,

支付过后立即到账

http://xiaowen168.taobao.com

 

 

 

 


    
[3] Merge标签应用
    来源: 互联网  发布时间: 2014-02-18
Merge标签使用
今天看了下<merge />标签的使用,总结如下:
1.merge标签中的子集是直接加到Activity的FrameLayout根节点下,(Activity视图的根节点都是frameLayout).如果你所创建的Layout并不是用framLayout作为根节点(而是应用LinerLayout等定义root标签),就不能通过merge来优化UI结构.

2.当应用Include或者ViewStub标签从外部导入xml结构时,可以将被导入的xml用merge作为根节点表示,这样当被嵌入父级结构中后可以很好的将它所包含的子集融合到父级结构中,而不会出现冗余的节点.


<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent" android:layout_height="fill_parent">
	<ImageView android:layout_width="fill_parent"
		android:layout_height="fill_parent" android:scaleType="center"
		android:background="@drawable/bg" />
	<TextView android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:layout_marginBottom="20dip"
		android:layout_gravity="center_horizontal|bottom" android:padding="12dip"
		android:background="#AA000000" android:textColor="#ffffffff"
		android:text="Golden Gate" />
</FrameLayout>


大家可以将根节点FrameLayout更改成merge标签进行测试,显示效果是一样,但是我们通过sdk中的tools> hierarchyviewer.bat进行视图查看,我们可以看到区别.

另外需要注意的是:
1.<merge />只可以作为xml layout的根节点.

2.当需要扩充的xml layout本身是由merge作为根节点的话,需要将被导入的xml layout置于 viewGroup中,同时需要设置attachToRoot为True.

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3