11.3学习内容

本文介绍了一种计算任意日期是星期几的方法——基姆拉尔森计算公式,并提供了具体的代码实现。此外,还详细展示了如何在Android ListView中实现多种类型的动画效果。

计算星期几

基姆拉尔森计算公式

W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

在公式中d表示日期中的日数,m表示月份数,y表示年数。

注意:在公式中有个与其他公式不同的地方:

把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。

代码如下:
//y-年,m-月,d-日期
string CaculateWeekDay(int y,int m, int d)
{
if(m==1) m=13;
if(m==2) m=14;
int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; 
string weekstr="";
switch(week)
{
case 1: weekstr="星期一"; break;
case 2: weekstr="星期二"; break;
case 3: weekstr="星期三"; break;
case 4: weekstr="星期四"; break;
case 5: weekstr="星期五"; break;
case 6: weekstr="星期六"; break;
case 7: weekstr="星期日"; break;
}

return weekstr; 

}



隐喻:指用已知的清晰清楚的事物比较或类别未知模糊的时候,对比后会得到较为深刻的理解。



ListView动画实现方法


  1. @Override  
  2. public void onClick(View arg0) {  
  3.     // LayoutAnimationController.ORDER_NORMAL; 顺序显示  
  4.     // LayoutAnimationController.ORDER_REVERSE;反显示  
  5.     // LayoutAnimationController.ORDER_RANDOM; 随机显示  
  6.     switch (arg0.getId()) {  
  7.     case R.id.btn_tran:  
  8.         animation = new TranslateAnimation(-50f, 0f, 0f, 0f);  
  9.         animation.setDuration(500);  
  10.         //1f为延时  
  11.         controller = new LayoutAnimationController(animation, 1f);  
  12.         controller.setOrder(LayoutAnimationController.ORDER_NORMAL);  
  13.         mListView.setLayoutAnimation(controller);  
  14.         adapter.notifyDataSetInvalidated();  
  15.         break;  
  16.     case R.id.btn_alpha:  
  17.         animation = new AlphaAnimation(0f, 1f);  
  18.         animation.setDuration(500);  
  19.         controller = new LayoutAnimationController(animation, 1f);  
  20.         controller.setOrder(LayoutAnimationController.ORDER_NORMAL);  
  21.         mListView.setLayoutAnimation(controller);  
  22.         adapter.notifyDataSetInvalidated();  
  23.         break;  
  24.     case R.id.btn_rotate:  
  25.         animation = new RotateAnimation(0f, 360f);  
  26.         animation.setDuration(500);  
  27.         controller = new LayoutAnimationController(animation, 1f);  
  28.         controller.setOrder(LayoutAnimationController.ORDER_NORMAL);  
  29.         mListView.setLayoutAnimation(controller);  
  30.         adapter.notifyDataSetInvalidated();  
  31.         break;  
  32.     case R.id.btn_scale:  
  33.         animation = new ScaleAnimation(0.1f, 1.0f, 0.1f, 1.0f);  
  34.         animation.setDuration(500);  
  35.         controller = new LayoutAnimationController(animation, 1f);  
  36.         controller.setOrder(LayoutAnimationController.ORDER_NORMAL);  
  37.         mListView.setLayoutAnimation(controller);  
  38.         adapter.notifyDataSetInvalidated();  
  39.         break;  
  40.     case R.id.rotate3d:  
  41.         animation = new Rotate3dAnimation(03602002000true);  
  42.         animation.setDuration(1000);  
  43.         controller = new LayoutAnimationController(animation, 0.1f);  
  44.         controller.setOrder(LayoutAnimationController.ORDER_NORMAL);  
  45.         mListView.setLayoutAnimation(controller);  
  46.         adapter.notifyDataSetInvalidated();  
  47.         break;  
  48.     default:  
  49.         break;  
  50.     }  
  51.   
  52. }  


linux强大命令

aview 命令





当内存不足时释放掉一些内存

在你的应用的生命周期中,onTrimMemory()接口同样会在当整个设备的内存变得很低的时候被调用。你应该根据从onTrimMemory()中传来的内存等级,选择性的释放掉你资源

TRIM_MEMORY_RUNNING_MODERATE

你的应用正在运行,不可被杀死,但是目前设备剩余内存很少,系统需要从LRU缓存中杀死掉一些进程

TRIM_MEMORY_RUNNING_LOW

你的应用正在运行,不可被杀死,但是目前设备剩余内存不足临界值,因此你需要释放掉不是用的内存来提升系统运行效率

TRIM_MEMORY_RUNNING_CRITICAL

你的应用正在运行,但是系统已经准备杀死大多数LRU中的进程,因此你应该释放掉那些不是很关键的资源。如果系统不能通过回收得到足够的RAM,那么他会清空所有LRU缓存,并且开始杀死那些希望保留的进程,例如拥有一个正在运行后台服务的进程。


同样的,当你的应用正在处于缓存中的时候,你可能会受到以下几个onTrimMemory()等级

TRIM_MEMORY_BACKGROUND

系统正在运行在低内存状态,而你的进程处在LRU列表的开始部分。因此尽管你的应用进程不太可能被杀死,但是系统已经转杯开始杀死LRU中的进程。你应该释放掉那些容易被还原的资源,来确保你仍然在列表中,并且在用户返回到应用的时候能够快速的进行切换

TRIM_MEMORY_MODERATE

系统正在运行在低内存阶段,你的进程处于LRU列表的中部。加入系统无法获得足够的内存资源,你的应用将会被杀死

TRIM_MEMORY_COMPLETE

系统正在运行在低内存阶段,你的进程将会是最开始被系统杀死的进程之一,你应该释放掉所有与你的应用状态无关的资源。


虽然由于onTrimMemory()接口直到API14的时候才被加入,你还是可以使用onLowMemory接口来作为老版本的回调,他可以同onTrimMemory()中TRIM_MEMORY_COMPLETE的等级一样。

注意:当系统开始杀死在LRU缓存中的进程时,尽管他是从下至上开始的,但是他也会考虑优先杀死那些内存消耗比较大的,以回收更多的系统资源。因此,如果你的应用的内存尽可能低,你就可能被始终保留在内存中,能够很快切换回来



真正的单例

这种方法,在获取单利的时候,避免了线程锁,导致访问该方法速度很慢,
同是,防止了多线程同事房屋该方法就会产生多个实例的问题。
效率高,线程安全。
public class TestInstance{
private static TestInstance  instance;
public static TestInstance   getInstance{
    if( instance==null ){
        synchronized(
TestInstance.class ){
            if( instance==null ){
            
instance=new TestInstance();
            }

    }
    return 
instance;
    }


}



}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值