当前位置:  编程技术>移动开发
本页文章导读:
    ▪播音修改widget        广播修改widget public void modifyPower(){ // 从layout下main.xml中构造widgets if(views==null)views = new RemoteViews(getPackageName(), R.layout.main); // 这里我们应该判断currentBatteryLevel的数值来显示图片电量等级,.........
    ▪ launcher中celllayout种简单分析        launcher中celllayout类简单分析 1) 大家都知道workspace是有celllayout组成。Celllayout被划分为了4行4列的表格,用Boolean类型的mOccupied二维数组来标记每个cell是否被占用。在attrs.xml中定义了shortAxisCells.........
    ▪ WP7学习札记005-Collections(集合类)的使用       WP7学习笔记005---Collections(集合类)的使用 C#其实跟JAVA基本上一样,无论是语法还是其他的什么,所以在C#中存在的Collections集合类很常见,就像在Android中经常用到ArrayList一样。   下面是一.........

[1]播音修改widget
    来源: 互联网  发布时间: 2014-02-18
广播修改widget
public void modifyPower(){
		// 从layout下main.xml中构造widgets
		if(views==null)views = new RemoteViews(getPackageName(), R.layout.main); 
		// 这里我们应该判断currentBatteryLevel的数值来显示图片电量等级,比如battery_level_1或battery_level_5等等,下面是n
		if(this.currentBatteryLevel >= 60){
			views.setImageViewResource(R.id.my_widget_img,R.drawable.bh1);
		}else if(this.currentBatteryLevel >= 20){
			views.setImageViewResource(R.id.my_widget_img,R.drawable.bh2);
		}else if(this.currentBatteryLevel > 10){
			views.setImageViewResource(R.id.my_widget_img,R.drawable.bh3);
		}else{
			views.setImageViewResource(R.id.my_widget_img,R.drawable.bh4);
		}
		views.setTextViewText(R.id.my_widget_tv, currentBatteryLevel + " %"); // 从BroadcastReceiver读取当前的电量等级

		ComponentName thisWidget = new ComponentName(this,PowerTip.class);
		AppWidgetManager manager = AppWidgetManager.getInstance(this);
		manager.updateAppWidget(thisWidget, views); // 开始执行了
	}

 


    
[2] launcher中celllayout种简单分析
    来源: 互联网  发布时间: 2014-02-18
launcher中celllayout类简单分析

1) 大家都知道workspace是有celllayout组成。Celllayout被划分为了4行4列的表格,用Boolean类型的mOccupied二维数组来标记每个cell是否被占用。在attrs.xml中定义了shortAxisCells和longAxisCells分别存储x轴和y轴方向的cell个数。在Celllayout构造函数中初始化。 
2) 内部类CellInfo为静态类,实现了ContextMenu.ContextMenuInfo接口。其对象用于存储cell的基本信息。 
 VacantCell类用于存储空闲的cell,用到了同步机制用于管理对空闲位置的操作。所有的空cell都存储在vacantCells中。 
 cellX和cellY用于记录cell的位置,起始位0。如:(0,0) (0,1),每一页从新开始编号。 
 clearVacantCells作用是将Vacant清空:具体是释放每个cell,将list清空。 
 findVacantCellsFromOccupied从存放cell的数值中找到空闲的cell。在Launcher.Java中的restoreState方法中调用。 
3) mPortrait用于标记是横屏还是竖屏,FALSE表示竖屏,默认为FALSE。 
4) 修改CellLayout页面上cell的布局: 
 CellLayout页面上默认的cell为4X4=16个,可以通过修改配置文件来达到修改目的。 
 在CellLayout.Java类的CellLayout(Context context, AttributeSet attrs, int defStyle)构造方法中用变量mShortAxisCells和mLongAxisCells存储行和列。 
 其值是在自定义配置文件attrs.xml中定义的,并在workspace_screen.xml中赋初值的,初值都为4,即4行、4列。可以在workspace_screen.xml修改对应的值。 
 注意:CellLayout构造方法中从attrs.xml中获取定义是这样的:mShortAxisCells = a.getInt(R.styleable.CellLayout_shortAxisCells, 4);当workspace_screen.xml中没有给定义的变量赋值时,上面的4就起作用。 
5)下面的分析转载自:http://blog.csdn.net/netpirate/archive/2009/06/05/4245445.aspx
Launcher(主屏/待机) App的BUG: 没有初始化定义CellLayout中屏幕方向的布尔值参数 
Launcher App:\cupcake\packages\apps\Launcher 
待机画面分为多层,桌面Desktop Items在\res\layout-*\workspace_screen.xml中置: 
<com.android.launcher.CellLayout 
... ... 
    launcher:shortAxisCells="4" 
    launcher:longAxisCells="4" 
... ... 
/> 
表示4行4列 
再看看 com.android.launcher.CellLayout ,其中有定义屏幕方向的参数, 
private boolean mPortrait; 
但是一直没有初始化,也就是mPortrait=false,桌面的单元格设置一直是以非竖屏(横屏)的设置定义进行初始化。 
再来看看横屏和竖屏情况下的初始化不同之处,就可以看出BUG了。 
boolean[][] mOccupied;//二元单元格布尔值数组 
            if (mPortrait) { 
                mOccupied = new boolean[mShortAxisCells][mLongAxisCells]; 
            } else { 
                mOccupied = new boolean[mLongAxisCells][mShortAxisCells]; 
            } 
如果我们满屏显示桌面(横向和纵向的单元格数不一致),而不是默认的只显示4行4列,则mShortAxisCells = 4, mLongAxisCells = 5,数组应该初始化是:new boolean[4][5],但是实际是按照非竖屏处理,初始化成了new boolean[5][4],会产生数组越界异常。 
可以在构造函数中,添加通过屏幕方向初始化mPortrait,代码如下: 
public CellLayout(Context context, AttributeSet attrs, int defStyle) 

        super(context, attrs, defStyle); 
        mPortrait = this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;// 新增代码 

... ...


出自:http://gqdy365.iteye.com/blog/875001


    
[3] WP7学习札记005-Collections(集合类)的使用
    来源: 互联网  发布时间: 2014-02-18
WP7学习笔记005---Collections(集合类)的使用

C#其实跟JAVA基本上一样,无论是语法还是其他的什么,所以在C#中存在的Collections集合类很常见,就像在Android中经常用到ArrayList一样。

 

下面是一个WP7版的小例子,以便今后忘记的时候有个回顾的地方

 

1、首先创建一个项目,然后在手机界面中拖入一个Button,一个TextBlock,这个TextBlock属性设置为wrap(自动换行)

 

2、首先,创建一个名为Car.cs的类,类似于JAVA中的javabean,提供的get,set

注意:这里在类Car中输入prop,然后点击两次Tab,会生成一个自动的代码,此时光标指向数据类型int,然后将其改为string,再次点击两次Tab,修改名字为Make或者Model,根据自己的需要。

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace Lession1
{
    public class Car
    {
        public String Make { get; set; }
        public String Model { get; set; }
    }
}

 

 

3、下面是Button对应的C#代码

private void myButton_Click(object sender, RoutedEventArgs e)
        {
            Car car1 = new Car();
            car1.Make = "宝马";
            car1.Model = "X6系列";

            Car car2 = new Car();
            car2.Make = "尼桑";
            car2.Model = "Altima";

            Car car3 = new Car();
            car3.Make = "奥迪";
            car3.Model = "A6";

            List<Car> myList = new List<Car>();
            myList.Add(car1);
            myList.Add(car2);
            myList.Add(car3);

            string myCars = "";
            foreach (Car car in myList)
            {
                myCars += car.Make + "-" + car.Model + Environment.NewLine;
            }
            myTextBlock1.Text = myCars;
        }

 

4、运行



 

 

当然,还有另外两种初始化的写法:

 

写法2:

可以将如下代码

           Car car1 = new Car();
            car1.Make = "宝马";
            car1.Model = "X6系列";

            Car car2 = new Car();
            car2.Make = "尼桑";
            car2.Model = "Altima";

            Car car3 = new Car();
            car3.Make = "奥迪";
            car3.Model = "A6";

 

换成下面的代码

 Car car1 = new Car() { Make = "宝马", Model = "X6系列" };
 Car car2 = new Car() { Make = "尼桑", Model = "Altima" };
 Car car3 = new Car() { Make = "奥迪", Model = "A6" };

 

 

写法3:

将如下代码

            Car car1 = new Car();
            car1.Make = "宝马";
            car1.Model = "X6系列";

            Car car2 = new Car();
            car2.Make = "尼桑";
            car2.Model = "Altima";

            Car car3 = new Car();
            car3.Make = "奥迪";
            car3.Model = "A6";

            List<Car> myList = new List<Car>();
            myList.Add(car1);
            myList.Add(car2);
            myList.Add(car3);

 

换成如下的代码,这样会省去很多的代码量,阅读也更加方便

 List<Car> myList = new List<Car>()
            {
                new Car { Make = "宝马", Model = "X6系列"},
                new Car { Make = "尼桑", Model = "Altima"},
                new Car { Make = "奥迪", Model = "A6"}
            };

 


    
最新技术文章:
▪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