当前位置:  编程技术>移动开发
本页文章导读:
    ▪台历控件开发详解0        日历控件开发详解0从今天开始,我们将一步步学习如何实现一个Android的日历控件,今天是第一天! 一、准备工作之配置参数 制作一个日历控件,我们首先要配置一些参数 1.尺寸 dimension.xml .........
    ▪ jquerymobile-5 back button跟footer        jquerymobile-5 back button和footer使用jquerymobile的时候,我们新进入一个页面可能需要添加一个返回按钮,用户返回到上一个页面,我们可以使用上一篇文章中的方法,在Header中添加返回上一个页面.........
    ▪ 年历控件开发详解1       日历控件开发详解1在前一篇日志中我们已经做好了日历控件的准备工作,今天我们将继续完成这个日历控件。 三、日历元素之Border 在Border类中,我们主要完成日历边框的绘制 package com.xys.myc.........

[1]台历控件开发详解0
    来源: 互联网  发布时间: 2014-02-18
日历控件开发详解0

从今天开始,我们将一步步学习如何实现一个Android的日历控件,今天是第一天!

一、准备工作之配置参数

制作一个日历控件,我们首先要配置一些参数

1.尺寸

dimension.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <!-- 日历边框间距 -->
   <dimen name="margin">10dp</dimen>
   <dimen name="logo_size">48dp</dimen>
   
   <!-- 日历边框 -->
   <dimen name="border_margin">10dp</dimen>
   
   <!-- 日历周名 -->
   <dimen name="weekname_size">18dp</dimen>
   <!-- 日历周名之间间距 -->
   <dimen name="weekname_margin">5dp</dimen>  
   
   <!-- 日期 -->
   <dimen name="day_size">15dp</dimen>
   <dimen name="day_top_offset">11dp</dimen>
   <dimen name="current_day_size">15dp</dimen>  
</resources>
    
2.颜色

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="calendar_background">#000000</color> 
    <color name="recordremind_background">#FFFFFF</color> 
    

    <color name="border_color">#FFFFFF</color>
    <color name="weekname_color">#FFFFFF</color>
    <color name="day_color">#FFFFFF</color>
    <color name="inner_grid_color">#FFFFFF</color>
    <color name="prev_next_month_day_color">#999999</color>
    
    <color name="text_color">#FFFF00</color>
    <color name="recordremindtext_color">#000000</color>
    
    <color name="current_day_color">#FF0000</color>
    <color name="today_background_color">#FF0000</color>
    <color name="today_color">#FFFFFF</color>
    <color name="weekendColor">#FF0000</color>
    <color name="sunday_saturday_prev_next_month_day_color">#990000</color>
</resources>
  

二、准备工作之架构设计

1.一个日历控件的绘制可以分解为几个部分,如边框的绘制,周名称的绘制,中间Grid的绘制等。

因此,每种日历的元素都需要能实现onDraw方法,所以我们新建一个interface

package com.xys.mycalender.interfaces;

import android.graphics.Canvas;
/*
 * 提供日历元素绘制图形的方法onDraw,使每一个实现该接口的日历元素类都有一个draw方法
 */
public interface CalendarElement {
	public void onDraw(Canvas canvas);
}

2.然后,我们新建一个Base类去实现这个接口,同时在Base类中去获取这些公共参数的值。

package com.xys.mycalender.base;

import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;

import com.xys.mycalender.R;
import com.xys.mycalender.interfaces.CalendarElement;
/*
 * 从资源文件中获取该项目的一些公共数据,并使其子类实现onDraw方法
 */
public class CalendarBase implements CalendarElement{

	protected Activity activity;
	protected View view;
	//画笔
	protected Paint paint=new Paint();
	//边距
	protected float boderMargin;
	//周名称边距
	protected float weekNameMargin;
	//周名称大小
	protected float weekNameSize;
	//周末名称颜色
	protected int weekendColor;
	
	public CalendarBase(Activity activity,View view){
		this.activity=activity;
		this.view=view;
		//从资源文件中获取公共数据
		boderMargin=activity.getResources().getDimension(R.dimen.border_margin);
		weekNameMargin=activity.getResources().getDimension(R.dimen.weekname_margin);
		weekNameSize=activity.getResources().getDimension(R.dimen.weekname_size);
		weekendColor=activity.getResources().getColor(R.color.weekendColor);
	}
	
	public void onDraw(Canvas canvas) {
		// TODO Auto-generated method stub
		
	}

}

到此为止,我们的准备工作就结束了,此时,我们已经配置好了参数,并为每种日历元素实现了Base类,接下来,就是具体绘制每种日历元素了。


    
[2] jquerymobile-5 back button跟footer
    来源: 互联网  发布时间: 2014-02-18
jquerymobile-5 back button和footer

使用jquerymobile的时候,我们新进入一个页面可能需要添加一个返回按钮,用户返回到上一个页面,我们可以使用上一篇文章中的方法,在Header中添加返回上一个页面的链接,但是这样有一点不好,如果这个页面有多个入口(即可以从多个页面跳入本页面),那么我们这个返回就得做判断了。在这种情况下我们可以使用jquerymobile的data-add-back-btn属性,并将其值设为true。这样jquerymobile会自动为我们记住该返回哪个页面。下面看一个例子代码:

<!DOCTYPE html>
<html>
<head>
<title>Back Examples</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/latest/jquery.mobile.min.css" />
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/latest/jquery.mobile.min.js"></script>
</head>

<body>
<div data-role="page">
	<div data-role="header"><h1>My Header</h1></div>	
	<div data-role="content">
	<p>
		<a href="#subpage">Go to the sub page...</a>
	</p>
	</div>		
</div>

<div data-role="page" id="subpage" data-add-back-btn="true">
	<div data-role="header"><h1>Sub Page</h1></div>	
	<div data-role="content">
	<p>
		<a href="" data-rel="back">Go back...</a>
	</p>
	</div>		
</div>
</body>
</html>

我们做手机应用的时候,一般会在下面添加一些按钮,这时候我们就可以在footer上添加按钮了。这里我们不使用真正的按钮,而是使用CSS来将A标签,做成按钮一下,在上面的程序中添加如下的代码:

<div data-role="footer" >
  <a href="/blog_article/credits.html">Credits</a>
  <a href="/blog_article/contact.html">Contact</a>
</div>

会有如下的效果:



这里使用了一个ui-bar的样式,这个会使a标签增强为按钮的样式。
本人也刚开始学习,如果哪里写错了,还请指出。


    
[3] 年历控件开发详解1
    来源: 互联网  发布时间: 2014-02-18
日历控件开发详解1

在前一篇日志中我们已经做好了日历控件的准备工作,今天我们将继续完成这个日历控件。

三、日历元素之Border

在Border类中,我们主要完成日历边框的绘制

package com.xys.mycalender.element;

import android.app.Activity;
import android.graphics.Canvas;
import android.view.View;

import com.xys.mycalender.R;
import com.xys.mycalender.base.CalendarBase;
/*
 * 绘制日历边框
 */
public class Border extends CalendarBase {
	
	//日历边框的位置大小
	float left;
	float right;
	float top;
	float bottom;
	
	public Border(Activity activity, View view) {
		super(activity, view);
		// 获取日历边框的颜色
		paint.setColor(activity.getResources().getColor(R.color.border_color));
	}

	@Override
	public void onDraw(Canvas canvas) {
		left=boderMargin;
		right=view.getMeasuredWidth()-boderMargin;
		top=boderMargin;
		bottom=view.getMeasuredHeight()-boderMargin;
		
		// 绘制日历边框
		canvas.drawLine(left, top, right, top, paint);
		canvas.drawLine(left, top, left, bottom, paint);
		canvas.drawLine(left, bottom, right, bottom, paint);
		canvas.drawLine(right, top, right, bottom, paint);
	}
	
	
}

四、日历元素之Week名称

在Week类中我们主要完成一周名称的绘制

package com.xys.mycalender.element;

import android.app.Activity;
import android.graphics.Canvas;
import android.view.View;

import com.xys.mycalender.R;
import com.xys.mycalender.base.CalendarBase;
/*
 * 绘制一周的名称
 */
public class Week extends CalendarBase {
	//参数
	private float left;
	private float top;
	private float eachWeekWidth;
	private float eachWeekHeight;
	
	//一周的名称
	private String[] weeknames;
	//一周名称的颜色1-5
	private int weekdayColor;
	
	public Week(Activity activity, View view) {
		super(activity, view);
		//获取一周名称颜色1-5
		weekdayColor=activity.getResources().getColor(R.color.weekname_color);
		//获取一周名称
		weeknames=activity.getResources().getStringArray(R.array.week_name);
		//设置一周名称大小
		paint.setTextSize(weekNameSize);
		paint.setFakeBoldText(true);
	}

	@Override
	public void onDraw(Canvas canvas) {
		// TODO Auto-generated method stub
		left=boderMargin;
		top=boderMargin;
		eachWeekWidth=(view.getMeasuredWidth()-boderMargin*2)/7;
		eachWeekHeight=eachWeekWidth;
		for (int i = 0; i < weeknames.length; i++) {
			//周六日
			if (i==0||i==weeknames.length-1) {
				paint.setColor(weekendColor);
			}else {
				//平日
				paint.setColor(weekdayColor);
			}
			//文字绘制在每一格的中间 measureText返回文字的长度
			left=boderMargin+eachWeekWidth*i+(eachWeekWidth-paint.measureText(weeknames[i]))/2;
			top=boderMargin+weekNameMargin+paint.getTextSize();
			//开始绘制
			canvas.drawText(weeknames[i], left, top, paint);
		}
	}
	
}

绘制一周名称的关键在于要将文字绘制在格子的中间,这点的实现见程序倒数2、3行。

    
最新技术文章:
▪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提高之多方向抽屉实现方法
▪根据USER-AGENT判断手机类型并跳转到相应的app... iis7站长之家
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

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

浙ICP备11055608号-3