Android遇到问题归档

1.    getWindowManager().getDefaultDisplay().getWidth()和getHeight获取的值和实际不同

http://www.cnblogs.com/zdzyc/archive/2011/12/28/android.html找到答案:
AndroidManifest.xml文件中,加入supports-screens节点,具体的内容如下:
        <supports-screens
            android:smallScreens="true"
            android:normalScreens="true"
            android:largeScreens="true"
            android:resizeable="true"
            android:anyDensity="true" />

 

2.  ArrayList<int[]> 用add()后再用get()结果不是预期的

注意点:add放入的是对象的引用,所以必须要每次都new新的引用

		ArrayList<int[]> mFitGrid = new ArrayList<int[]>();
		if(true)
		{  //add放入的是对象的引用,所以必须要每次都new新的引用
			int[] gridInfo = new int[3];
			gridInfo[0] = 2;
			gridInfo[1] = 4;
			gridInfo[2] = 100;
			mFitGrid.add(gridInfo); 
			
			int[] gridInfo2 = new int[3]; 		
			gridInfo2[0] = 4;
			gridInfo2[1] = 5;
			gridInfo2[2] = 200;
			mFitGrid.add(gridInfo2);	
			
			int[] gridInfo3 = new int[3];
			gridInfo3[0] = 5;
			gridInfo3[1] = 6;
			gridInfo3[2] = 300;
			mFitGrid.add(gridInfo3);	
		}else{ //会导致get为最后一个
			int[] gridInfo = new int[3];
			gridInfo[0] = 2;
			gridInfo[1] = 4;
			gridInfo[2] = 100;
			mFitGrid.add(gridInfo);
			
			gridInfo[0] = 4;
			gridInfo[1] = 5;
			gridInfo[2] = 200;
			mFitGrid.add(gridInfo);		

			gridInfo[0] = 5;
			gridInfo[1] = 6;
			gridInfo[2] = 300;
			mFitGrid.add(gridInfo);
		}
			
		int size = 0;
		size = mFitGrid.size();	
		System.out.println("size=" +size);
		
		int[][] gridInfoRet =  new int[size][];				
		for(int i=0; i<size; i++)
		{	
			gridInfoRet[i]= mFitGrid.get(i);
			System.out.println("val0="+gridInfoRet[i][0]+" val1="+gridInfoRet[i][1]+" val2="+gridInfoRet[i][2]);
		}	

 

3. 在LinearLayout中让多个Button均匀填满一行

    在xml每个Button属性中增加android:layout_weight="1.0"

 

4. 计算2个日期之前相差的天数:(下面是计算当前时间和year/month/day之前的天数)

   Calendar calendar = Calendar.getInstance(Locale.getDefault());    
   long timeCurr=  calendar.getTimeInMillis();
   
   Calendar calendarNext = Calendar.getInstance();
   calendarNext.set(Calendar.YEAR, year);
   calendarNext.set(Calendar.MONTH, month);
   calendarNext.set(Calendar.DATE, day);

   long timeNext= calendarNext.getTimeInMillis();

   Date dateCurr= new Date(timeCurr);
   Date dateNext= new Date(timeNext);

   long days= (timeNext - timeCurr) / (long)(24*60*60*1000); 

 

5. 将日期逐天增加

		Calendar cal = Calendar.getInstance(Locale.getDefault());
		cal.add(Calendar.DAY_OF_MONTH, +1);


6. 让widget响应日期设置更改
在AndroidManifest.xml增加DATE_CHANGED等intent-filter

	@Override
	public void onReceive(Context context, Intent intent) {

		final String action = intent.getAction();

		if (Utils.getWidgetUpdateAction(context).equals(action)
				|| action.equals(Intent.ACTION_TIMEZONE_CHANGED)||action.equals(Intent.ACTION_DATE_CHANGED)||action.equals(Intent.ACTION_LOCALE_CHANGED)) {
		
			RemoteViews updateView = buildUpdate(context); //buildUpdate 为产生和日期相关view的自定函数

			AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
			//一定要否则更新不了
			appWidgetManager.updateAppWidget((new ComponentName(context, TodayLunarCalendar.class)), updateView);	
		
		} else {
			super.onReceive(context, intent);
		}
	}


7.layout中同时存在 SurfaceView和组件View, 组件View显示不出来

   要在SurfaceView的扩展类的构造函数中调用 setLayoutParams( new ViewGroup.LayoutParams( screenWidth, screenHeight)); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值