当前位置:  编程技术>移动开发
本页文章导读:
    ▪widget经验        widget心得  生命周期: onEnable(第一次添加时调用)---onUpdate(每添加一个都会调用)-----onDeleted(每删除一个都会调用,包括最后一个)-----onDisabled(全部删除时才会调用)   //onReceive 来自广播,因为wid.........
    ▪ Java中Date各种相干用法        Java中Date各种相关用法 Java中Date各种相关用法(一) 1.计算某一月份的最大天数   Java代码   Calendar time=Calendar.getInstance();   time.clear();   time.set(Calendar.YEAR,year);   time.set(Calendar.MONTH.........
    ▪ java一部分位操作       java部分位操作 最近要用java位操作运算故做了部分准备工作,由于工作过程中用到的操作不多,在此以作备忘:位移操作:   >>  右移操作,高位补0;每移一位相当于做一次除2操作.........

[1]widget经验
    来源: 互联网  发布时间: 2014-02-18
widget心得

 生命周期:

onEnable(第一次添加时调用)---onUpdate(每添加一个都会调用)-----onDeleted(每删除一个都会调用,包括最后一个)-----onDisabled(全部删除时才会调用)

 

//onReceive 来自广播,因为widget本身就是使用的广播机制

在生命周期开始前,都会向系统发送以下对应的广播。

 action:  android.appwidget.action.APPWIDGET_ENABLED

 action:  android.appwidget.action.APPWIDGET_UPDATE

 android.appwidget.action.APPWIDGET_DELETED

 android.appwidget.action.APPWIDGET_DISABLED

 

 

!!! FAILED BINDER TRANSACTION !!!问题:

1.让美工将图片做小

2.设置图片时,可以换做setURL/setInt

3.BitmapFactory.Options opts = new BitmapFactory.Options();
   opts.inSampleSize = 2;

   //

If set to a value > 1, requests the decoder to subsample the original image, returning a smaller image to save memory. The sample size is the number of pixels in either dimension that correspond to a single pixel in the decoded bitmap. For example, inSampleSize == 4 returns an image that is 1/4 the width/height of the original, and 1/16 the number of pixels. Any value <= 1 is treated the same as 1. Note: the decoder will try to fulfill this request, but the resulting bitmap may have different dimensions that precisely what has been requested. Also, powers of 2 are often faster/easier for the decoder to honor.

4. 每次更新的时候 都需要new RemoteViews。 (ComponentName  AppWidgetManager不需要每次都new)

 

 

widget居中的问题,

屏幕一般都是4x4的, 一个格子的大小为72dpx72dp


    
[2] Java中Date各种相干用法
    来源: 互联网  发布时间: 2014-02-18
Java中Date各种相关用法

Java中Date各种相关用法(一)

1.计算某一月份的最大天数

  Java代码

  Calendar time=Calendar.getInstance();

  time.clear();

  time.set(Calendar.YEAR,year);

  time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0

  int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数

  注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间

  2.Calendar和Date的转化

  (1) Calendar转化为Date

  Java代码

  Calendar cal=Calendar.getInstance();

  Date date=cal.getTime();

  (2) Date转化为Calendar

  Java代码

  Date date=new Date();

  Calendar cal=Calendar.getInstance();

  cal.setTime(date);

  3.格式化输出日期时间

  Java代码

  Date date=new Date();

  SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

  System.out.println(df.format(date));

  4.计算一年中的第几星期

  (1)计算某一天是一年中的第几星期

  Java代码

  Calendar cal=Calendar.getInstance();

  cal.set(Calendar.YEAR, 2006);

  cal.set(Calendar.MONTH, 8);

  cal.set(Calendar.DAY_OF_MONTH, 3);

  int weekno=cal.get(Calendar.WEEK_OF_YEAR);

  (2)计算一年中的第几星期是几号

  Java代码

  SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");

  Calendar cal=Calendar.getInstance();

  cal.set(Calendar.YEAR, 2006);

  cal.set(Calendar.WEEK_OF_YEAR, 1);

  cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

  System.out.println(df.format(cal.getTime()));

  输出:

  2006-01-02

  5.add()和roll()的用法

  (1)add()方法

  Java代码

  SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");

  Calendar cal=Calendar.getInstance();

  cal.set(Calendar.YEAR, 2006);

  cal.set(Calendar.MONTH, 8);

  cal.set(Calendar.DAY_OF_MONTH, 3);

  cal.add(Calendar.DATE, -4);

  Date date=cal.getTime();

  System.out.println(df.format(date));

  cal.add(Calendar.DATE, 4);

  date=cal.getTime();

  System.out.println(df.format(date));

  输出:

  2006-08-30

  2006-09-03

  (2)roll方法

  Java代码

  cal.set(Calendar.YEAR, 2006);

  cal.set(Calendar.MONTH, 8);

  cal.set(Calendar.DAY_OF_MONTH, 3);

  cal.roll(Calendar.DATE, -4);

  date=cal.getTime();

  System.out.println(df.format(date));

  cal.roll(Calendar.DATE, 4);

  date=cal.getTime();

  System.out.println(df.format(date));

  输出:

  2006-09-29

  2006-09-03

  可见,roll()方法在本月内循环,一般使用add()方法;

Java中Date各种相关用法(二)

 6.计算两个任意时间中间的间隔天数

  (1)传进Calendar对象

  Java代码

  /** *//**计算两个时间之间相隔天数

  * @param startday 开始时间

  * @param endday 结束时间

  * @return

  */

  public int getIntervalDays(Calendar startday,Calendar endday)...{

  //确保startday在endday之前

  if(startday.after(endday))...{

  Calendar cal=startday;

  startday=endday;

  endday=cal;

  }

  //分别得到两个时间的毫秒数

  long sl=startday.getTimeInMillis();

  long el=endday.getTimeInMillis();

  long ei=el-sl;

  //根据毫秒数计算间隔天数

  return (int)(ei/(1000*60*60*24));

  }

  (2)传进Date对象

  Java代码

  /** *//**计算两个时间之间相隔天数

  * @param startday 开始时间

  * @param endday 结束时间

  * @return

  */

  public int getIntervalDays(Date startday,Date endday)...{

  //确保startday在endday之前

  if(startday.after(endday))...{

  Date cal=startday;

  startday=endday;

  endday=cal;

  }

  //分别得到两个时间的毫秒数

  long sl=startday.getTime();

  long el=endday.getTime();

  long ei=el-sl;

  //根据毫秒数计算间隔天数

  return (int)(ei/(1000*60*60*24));

  }

  同理,可以用相同的方法计算出任意两个时间相隔的小时数,分钟数,秒钟数等

  注:以上方法是完全按时间计算,有时并不能令人满意,如:

  startday="2006-10-11 20:00:00"

  endday="2006-10-12 8:00:00"

  计算结果为0,但是我们也许相让计算结果变为1,此时可以用如下方法实现:

  在传参之前,先设定endday的时间,如:

  Java代码

  endday.set(Calendar.HOUR_OF_DAY, 23);

  endday.set(Calendar.MINUTE, 59);

  endday.set(Calendar.SECOND, 59);

  endday.set(Calendar.MILLISECOND, 59);

  这样再传进去startday,endday,则结果就如我们所愿了。不过,如果嫌以上方法麻烦,可以参考以下方法:

  (3)改进精确计算相隔天数的方法

  Java代码

  public int getDaysBetween (Calendar d1, Calendar d2) ...{

  if (d1.after(d2)) ...{ // swap dates so that d1 is start and d2 is end

  java.util.Calendar swap = d1;

  d1 = d2;

  d2 = swap;

  }

  int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);

  int y2 = d2.get(Calendar.YEAR);

  if (d1.get(Calendar.YEAR) != y2) ...{

  d1 = (Calendar) d1.clone();

  do ...{

  days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数

  d1.add(Calendar.YEAR, 1);

  } while (d1.get(Calendar.YEAR) != y2);

  }

  return days;

  }

Java中Date各种相关用法(三)

获取系统当前时间:

  Java代码

  public static String getSystemTime(){

  Date date=new Date();

  SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  return df.format(date);

  }

  //字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格式一致即可)

  java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);

  java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM");

  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  String mDateTime1=formatter.format(d);

  //当前时间

  Calendar cal = Calendar.getInstance();

  // SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss G E D F w W a E F");

  String mDateTime=formatter.format(cal.getTime());

  //1年前日期

  java.util.Date myDate=new java.util.Date();

  long myTime=(myDate.getTime()/1000)-60*60*24*365;

  myDate.setTime(myTime*1000);

  String mDate=formatter.format(myDate);

  //明天日期

  myDate=new java.util.Date();

  myTime=(myDate.getTime()/1000)+60*60*24;

  myDate.setTime(myTime*1000);

  mDate=formatter.format(myDate);

  //两个时间之间的天数

  SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");

  java.util.Date date= myFormatter.parse("2003-05-1");

  java.util.Date mydate= myFormatter.parse("1899-12-30");

  long day=(date.getTime()-mydate.getTime())/(24*60*60*1000);

  //加半小时

  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

  java.util.Date date1 = format.parse("2002-02-28 23:16:00");

  long Time=(date1.getTime()/1000)+60*30;

  date1.setTime(Time*1000);

  String mydate1=formatter.format(date1);

  //年月周求日期

  SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");

  java.util.Date date2= formatter2.parse("2003-05 5 星期五");

  SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");

  String mydate2=formatter3.format(date2);

  //求是星期几

  mydate= myFormatter.parse("2001-1-1");

  SimpleDateFormat formatter4 = new SimpleDateFormat("E");

  String mydate3=formatter4.format(mydate);

  }

  在 开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date类型,即只 需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver数据库的DateTime类型,即需要年月日时分秒的,选 择java.sql.Timestamp类型

  你可以使用dateFormat定义时间日期的格式,转一个字符串即可

  Java代码

  package personal.jessica;

  import java.util.Date;

  import java.util.Calendar;

  import java.sql.Timestamp;

  import java.text.DateFormat;

  import java.text.SimpleDateFormat;

  import java.util.Locale;

  class Datetest{

  /**

  *method 将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)

  *@param dateString 需要转换为timestamp的字符串

  *@return dataTime timestamp

  */

  public final static java.sql.Timestamp string2Time(String dateString)

  throws java.text.ParseException {

  DateFormat dateFormat;

  dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS", Locale.ENGLISH);//设定格式

  //dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH);

  dateFormat.setLenient(false);

  java.util.Date timeDate = dateFormat.parse(dateString);//util类型

  java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型

  return dateTime;

  }

Java中Date各种相关用法(四)

/**

  *method 将字符串类型的日期转换为一个Date(java.sql.Date)

  *@param dateString 需要转换为Date的字符串

  *@return dataTime Date

  */

  public final static java.sql.Date string2Date(String dateString)

  throws java.lang.Exception {

  DateFormat dateFormat;

  dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);

  dateFormat.setLenient(false);

  java.util.Date timeDate = dateFormat.parse(dateString);//util类型

  java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型

  return dateTime;

  }

  public static void main(String[] args){

  Date da = new Date();

  //注意:这个地方da.getTime()得到的是一个long型的值

  System.out.println(da.getTime());

  //由日期date转换为timestamp

  //第一种方法:使用new Timestamp(long)

  Timestamp t = new Timestamp(new Date().getTime());

  System.out.println(t);

  //第二种方法:使用Timestamp(int year,int month,int date,int hour,int minute,int second,int nano)

  Timestamp tt = new Timestamp(Calendar.getInstance().get(

  Calendar.YEAR) - 1900, Calendar.getInstance().get(

  Calendar.MONTH), Calendar.getInstance().get(

  Calendar.DATE), Calendar.getInstance().get(

  Calendar.HOUR), Calendar.getInstance().get(

  Calendar.MINUTE), Calendar.getInstance().get(

  Calendar.SECOND), 0);

  System.out.println(tt);

  try {

  String sToDate = "2005-8-18";//用于转换成java.sql.Date的字符串

  String sToTimestamp = "2005-8-18 14:21:12.123";//用于转换成java.sql.Timestamp的字符串

  Date date1 = string2Date(sToDate);

  Timestamp date2 = string2Time(sToTimestamp);

  System.out.println("Date:"+date1.toString());//结果显示

  System.out.println("Timestamp:"+date2.toString());//结果显示

  }catch(Exception e) {

  e.printStackTrace();

  }

  }

  }

  Java获取系统时间的年份

  Java代码

  public static String getYear(){

  Calendar ca = Calendar.getInstance();

  ca.setTime(new java.util.Date());

  String year = ""+ca.get(Calendar.YEAR);

  return year;

  }

  public void getYear(){

  Calendar ca = Calendar.getInstance();

  ca.setTime(new java.util.Date());

  SimpleDateFormat simpledate = new SimpleDateFormat("yyyyMMdd");

  String date = simpledate.format(ca.getTime());

  int year = ca.get(Calendar.YEAR);

  int month = ca.get(Calendar.MONTH);

  int day = ca.get(Calendar.DAY_OF_MONTH);

  System.out.println(date+"||"+year+"||"+month+"||"+day);

  }

 


    
[3] java一部分位操作
    来源: 互联网  发布时间: 2014-02-18
java部分位操作
最近要用java位操作运算故做了部分准备工作,由于工作过程中用到的操作不多,在此以作备忘:
位移操作:
   >>  右移操作,高位补0;每移一位相当于做一次除2操作
   <<  左移操作,低位补0;每移一位相当于做一次乘2操作
    &  按位与,一0则0;
    |  按位或,一1则1;
    取字节的末3位      & 7 
    取字节的第5、6位(从0开始由右至左计算)    >> 5 & 3
示例代码:
public class Binary {
	
	public static void main(String[] args) {
		int ii = 205 ;
		byte a = (byte) 0x6a ;
		System.out.println( "byte a 的二进制数据:" +Integer.toBinaryString(a));
		System.out.println("byte a 右移5位  a>>5:" + Integer.toBinaryString(a>>5));  //右移除2
		System.out.println("byte a 左移1位  a<<1:" + Integer.toBinaryString(5<<1)); //左移乘2
		System.out.println("ii的二进制数据为:" + Integer.toBinaryString(ii));
		System.out.println("取ii的末3位(按位与 & 7):" + Integer.toBinaryString(ii&7));
		System.out.println("取ii的第5、6位   ii>>5 & 3:" + Integer.toBinaryString(ii>>5 & 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提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

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

浙ICP备11055608号-3