生日剩余天数计算
Birthday.class
package com.example.sendmsg;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;
public class Birthday {
private Context context;
private Bitmap personIcon;
private String name;
private String datas;
private String phone_number;
private String day;
private long days = 0;
public Bitmap getPersonIcon() {
return personIcon;
}
public void setPersonIcon(Bitmap personIcon) {
this.personIcon = personIcon;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDatas() {
return datas;
}
public void setDatas(String datas) {
this.datas = datas;
}
public String getPhone_number() {
return phone_number;
}
public void setPhone_number(String phone_number) {
this.phone_number = phone_number;
}
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
//剩余天数计算:
public String getBirthday(String birthday) {
//String birthday = "2013-03-18";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
int yearNow = cal.get(Calendar.YEAR);// 获得当前年份
try {
Log.i("Birthday_time", formatter.parse(birthday) + "");
cal.setTime(formatter.parse(birthday));
} catch (Exception e) {
e.printStackTrace();
}
int birthyear = cal.get(Calendar.YEAR);
Log.i("Birthday_year", birthyear + "");
while (birthyear < yearNow) {
cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) + 1);
birthyear = cal.get(Calendar.YEAR);
Log.i("Birthday_year++", birthyear + "");
}
Date ed = new Date();
Log.i("Date_ed", ed + "");
Date sd = cal.getTime();
Log.i("Date_sd", ed + "");
days = 0;
if ((ed.getTime() - sd.getTime()) / (3600 * 24 * 1000) < 0) {
//>
days = -((ed.getTime() - sd.getTime()) / (3600 * 24 * 1000)) + 1;
System.out.println("距离你生日还有" + days + "天");
} else {
cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) + 1);
sd = cal.getTime();
days = -((ed.getTime() - sd.getTime()) / (3600 * 24 * 1000)) + 1;
System.out.println("距离你生日还有" + days + "天");
}
if(days == 366L) days = 1;
if(days == 365L) days = 0;
String days_ = Long.toString(days);
return days_;
}
}
这是我写得一个小的生日记录的demo:(这里面包含了添加,删除,多是在一个Activity内,通讯录获取的可以不用写,跟上个博客连在一起的。)
birthdayActivity.class
package com.example.sendmsg;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
@SuppressLint("NewApi") public class BirthListActivity extends Activity{
//1界面
private ListView festival_list1;
private ImageView image;
private ImageView back_image;
private TextView text_name;
private BirthdayAdapter adapter;
private ArrayList<Birthday> birth_lists = new ArrayList<Birthday>();
//2界面
private ListView person_list;
private LinearLayout secondActivity;
private TextView data;
private EditText person;
private Button search_btn;
private Button add_main;
private Button back;
private LinearLayout add_person;
private LinearLayout add_date;
private int year,month,day;
private String datas;
private String days;
private String number;
private String name;
private ArrayList<Birthday> personlist;
@SuppressLint("NewApi") @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.birth_list);
festival_list1 = (ListView) findViewById(R.id.birth_list);
image = (ImageView) findViewById(R.id.add_birthday);
image.setBackgroundResource(R.drawable.add);
back_image = (ImageView) findViewById(R.id.main_image);
secondActivity = (LinearLayout) findViewById(R.id.secondActivity);
back_image.setOnClickListener(new BackClick());
InsertSqlite insql = new InsertSqlite(BirthListActivity.this);
birth_lists = insql.selectAllBirth();
adapter = new BirthdayAdapter(this, birth_lists);
festival_list1.setAdapter(adapter);
ActionBar actionBar = getActionBar();
actionBar.hide();
festival_list1.setOnItemLongClickListener(new BirthListClick());
image.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
festival_list1.setVisibility(arg0.GONE);
secondActivity.setVisibility(arg0.VISIBLE);
init();
//初始化Calendar日历对象
Calendar mycalendar=Calendar.getInstance(Locale.CHINA);
Date mydate=new Date(); //获取当前日期Date对象
mycalendar.setTime(mydate);为Calendar对象设置时间为当前日期
year=mycalendar.get(Calendar.YEAR); //获取Calendar对象中的年
month=mycalendar.get(Calendar.MONTH);//获取Calendar对象中的月
day=mycalendar.get(Calendar.DAY_OF_MONTH);//获取这个月的第几天
data.setText(year+"-"+(month+1)+"-"+day); //显示当前的年月日
add_date.setOnClickListener(new Add_dataClick());
add_main.setOnClickListener(new AddPersonClick());
back.setOnClickListener(new BackOnclick());
//通讯录
search_btn.setOnClickListener(new PersonClick());
person_list.setOnItemClickListener(new PersonList());
}
});
}
public void init(){
data = (TextView) findViewById(R.id.data);
person = (EditText) findViewById(R.id.person);
search_btn = (Button) findViewById(R.id.search_btn);
add_person = (LinearLayout) findViewById(R.id.add_person);
add_date = (LinearLayout) findViewById(R.id.add_date);
add_main = (Button) findViewById(R.id.add_main);
back = (Button) findViewById(R.id.back);
person_list = (ListView) findViewById(R.id.person_list);
}
//search
class PersonClick implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
person_list.setVisibility(arg0.VISIBLE);
InsertSqlite insql = new InsertSqlite(BirthListActivity.this);
String name = person.getText().toString();
if(name.isEmpty()){
personlist = insql.getPhone();
PersonAdapter personadapter = new PersonAdapter(BirthListActivity.this, personlist);
person_list.setAdapter(personadapter);
}else{
personlist = insql.getPhone_num(name);
if(personlist.size()>0){
PersonAdapter personadapter = new PersonAdapter(BirthListActivity.this, personlist);
person_list.setAdapter(personadapter);
}else{
Toast.makeText(BirthListActivity.this, "查无此人", Toast.LENGTH_LONG).show();
}
}
}
}
//ListItem
class PersonList implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
TextView text1 = (TextView) arg1.findViewById(R.id.phone_name);
TextView text2 = (TextView) arg1.findViewById(R.id.phone_number);
name = text1.getText().toString();
number = text2.getText().toString();
person.setText(name);
}
}
class Add_dataClick implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
/**
* 构造函数原型:
* public DatePickerDialog (Context context, DatePickerDialog.OnDateSetListener callBack,
* int year, int monthOfYear, int dayOfMonth)
* content组件运行Activity,
* DatePickerDialog.OnDateSetListener:选择日期事件
* year:当前组件上显示的年,monthOfYear:当前组件上显示的月,dayOfMonth:当前组件上显示的第几天
*
*/
//创建DatePickerDialog对象
DatePickerDialog dpd=new DatePickerDialog(BirthListActivity.this,Datelistener,year,month,day);
dpd.show();//显示DatePickerDialog组件
}
private DatePickerDialog.OnDateSetListener Datelistener=new DatePickerDialog.OnDateSetListener()
{
/**params:view:该事件关联的组件
* params:myyear:当前选择的年
* params:monthOfYear:当前选择的月
* params:dayOfMonth:当前选择的日
*/
@Override
public void onDateSet(DatePicker view, int myyear, int monthOfYear,int dayOfMonth) {
//修改year、month、day的变量值,以便以后单击按钮时,DatePickerDialog上显示上一次修改后的值
year=myyear;
month=monthOfYear;
day=dayOfMonth;
//更新日期
updateDate();
}
//当DatePickerDialog关闭时,更新日期显示
private void updateDate()
{
//在TextView上显示日期
Birthday bir = new Birthday();
datas = year+"-"+(month+1)+"-"+day;
days = bir.getBirthday(datas);
data.setText(datas);
// Toast.makeText(DataRemind.this, "data:"+datas, Toast.LENGTH_LONG).show();
}
};
}
class AddPersonClick implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
InsertSqlite insql = new InsertSqlite(BirthListActivity.this);
String name = person.getText().toString();
Birthday bir = new Birthday();
datas = year+"-"+(month+1)+"-"+day;
days = bir.getBirthday(datas);
data.setText(datas);
datas = data.getText().toString();
if(name.isEmpty()){
Toast.makeText(BirthListActivity.this, "请检查名字或日期", Toast.LENGTH_LONG).show();
}else{
boolean bool = insql.insertBirthday(name, datas, days, number);
if(bool){
Toast.makeText(BirthListActivity.this, "添加成功!", Toast.LENGTH_LONG).show();
secondActivity.setVisibility(arg0.GONE);
festival_list1.setVisibility(arg0.VISIBLE);
}else{
Toast.makeText(BirthListActivity.this, "添加失败", Toast.LENGTH_LONG).show();
}
}
}
}
class BackOnclick implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
secondActivity.setVisibility(arg0.GONE);
festival_list1.setVisibility(arg0.VISIBLE);
}
}
class BirthListClick implements OnItemLongClickListener{
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
text_name = (TextView) findViewById(R.id.birth_name);
//设置对话框标题
new AlertDialog.Builder(BirthListActivity.this).setTitle("系统提示")
.setMessage("是否删除此人生日").setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
InsertSqlite insql = new InsertSqlite(BirthListActivity.this);
String name = text_name.getText().toString();
Boolean bool = insql.deleteBirth(name);
if(bool){
Toast.makeText(BirthListActivity.this, "删除成功", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(BirthListActivity.this, "删除失败", Toast.LENGTH_LONG).show();
}
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
}
}).show();
return false;
}
}
class BackClick implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
}
}
birthdayAdapter
package com.example.sendmsg;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class BirthdayAdapter extends BaseAdapter{
ArrayList<Birthday> birth_list = new ArrayList<Birthday>();
private LayoutInflater inflater = null;
private Context context;
public BirthdayAdapter(Context context,ArrayList<Birthday> birth_list){
this.inflater = LayoutInflater.from(context);
this.birth_list = birth_list;
this.context = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return birth_list.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
Viewholder holder = null;
if(arg1 == null){
holder = new Viewholder();
arg1 = inflater.inflate(R.layout.birth_listitem, null);
holder.birth_image = (ImageView) arg1.findViewById(R.id.birth_image);
holder.birth_person = (TextView) arg1.findViewById(R.id.birth_name);
holder.birth_data = (TextView) arg1.findViewById(R.id.birth_data);
holder.birth_sdata = (TextView) arg1.findViewById(R.id.birth_sdata);
arg1.setTag(holder);
}else{
holder = (Viewholder) arg1.getTag();
}
holder.birth_person.setText(birth_list.get(arg0).getName());
holder.birth_data.setText(birth_list.get(arg0).getDatas());
holder.birth_sdata.setText("剩余天数还有"+birth_list.get(arg0).getDay()+"天");
return arg1;
}
class Viewholder{
public ImageView birth_image;
public TextView birth_person,birth_data,birth_sdata;
}
}
birthday.xml
这里写代码片<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:background="#1f1c1c"
>
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:id="@+id/main_image"
android:background="@drawable/back_selector"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/title"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:text="生日提醒"
android:textSize="20dp"
android:textColor="#ffffff"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:gravity="right"
android:orientation="horizontal"
android:background="#1f1c1c"
>
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical|right"
android:layout_marginRight="10dp"
android:id="@+id/add_birthday"
android:background="@drawable/add"
/>
</LinearLayout>
</LinearLayout>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:id="@+id/birth_list"
android:visibility="visible"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:visibility="gone"
android:id="@+id/secondActivity">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:id="@+id/add_date"
>
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/date_image"
android:background="@drawable/date"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal|center_vertical"
android:id="@+id/data"
android:text="@null"
android:textSize="18dp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:id="@+id/add_person"
>
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:id="@+id/person_image"
android:background="@drawable/person"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="30dp"
android:orientation="horizontal"
>
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/person"
android:hint="@string/person"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:id="@+id/search_btn"
android:text="@string/search"
/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:id="@+id/person_list"
android:visibility="invisible"
></ListView>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="bottom"
android:id="@+id/add_main"
android:text="@string/add_person"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="bottom"
android:id="@+id/back"
android:text="@string/back"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
birthdayitem.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:descendantFocusability="afterDescendants"><!-- 给每个item增加background -->
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/birth_image"
android:background="@drawable/birthday"
android:layout_gravity="center_vertical|left"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="center_vertical"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:paddingLeft="10dp"
android:id="@+id/birth_name"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center_vertical|right"
android:id="@+id/birth_data"
/>
</LinearLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="10dp"
android:id="@+id/birth_sdata"
/>
</LinearLayout>
</LinearLayout>
http://blog.csdn.net/chindroid/article/details/8000713
这里的一个visibility的应用。
还没有评论,来说两句吧...