当前位置:文档之家› XX年安卓学习心得体会

XX年安卓学习心得体会

XXXX年安卓学习心得体会安卓学习体验体验安卓学习体验第一篇:安卓学习体验-09338117电脑应用张峰1。

关于活动1。

在一个活动中使用多视图如果您认为活动是mvc中的控件?它负责管理用户界面和接受事件。

虽然一个活动通常对应于一个屏幕,但事实上,我们只能使用一个活动来管理多个不同的视图,以实现简单的逻辑。

首先,我们添加一个新的资源描述布局除了一个“你好中国”,添加一个按钮返回到以前的界面。

然后,在代码中,我们将分别为hellotwo、setviewonexxmand 和setviewtowexxmand添加两个方法,以处理从资源加载组件和为不同接口中的组件绑定事件处理程序。

最后,我们需要在oncreate中设置一个按钮事件处理程序,也就是启动后的主界面。

2.回到正确的路径,在多个活动之间跳转android提供了一个名为意图在屏幕之间跳转的类。

根据文件,他们似乎也建议这种方法。

意图使用起来更复杂。

现在让我先看看它最简单的用途。

这里的跳转功能是有意操作的。

最简单的用法是用函数setclass 在跳转前后设置两个活动类的实例,然后调用活动自己的startactivity。

最后一句话“完成”,意思是关掉当前的活动。

然后,我们还得到一个活动类hellothreeb,代码生成类似于前一个,但我们只是颠倒了setclass的两个参数,所以我们可以简单地在两个活动接口之间来回切换。

2.意图的使用分为两类,明示和暗示。

通常,intent需要以下信息来定位事件的目的地:1.类别,比如我们常见的启动器_类别,表明这是一种应用。

2.类型(未在前面的示例中使用)表示数据的类型,这是隐式定位目标的重要基础。

3.组件。

前面的示例中使用了setclass,但是setxxponent也可以用来设置意图跳转前后的两个类实例。

4.附加数据。

除了contenturi,您还可以附加一些信息,这是一个包类型的对象。

事实上,如果它在应用程序中,这种隐含的意图实际上有点尴尬。

就我个人而言,我认为这种松散耦合的实现方法只适用于大型系统或多个不同应用程序之间的调用。

但是手机上有什么“更大的”系统呢?如果它可以轻松地与不同的应用程序进行互操作,那会是什么样的场景呢?例如,向qq好友发送gmail邮件,并使用谷歌地图查找qq好友的位置?看起来不错。

至于这个contentprovider,实际上还有其他的话要说,我们没有真正实现看起来像数据库操作的主要方法。

我一天后就收工。

我下次会研究它。

3.关于listactivity,准备一个列表对象并使用适配器来构造一个列表。

重载onlistitemclick方法可以响应选择事件,利用第一个参数访问此listview实例以获取所选项目信息。

这里要解释的一点是,如果setcontentview更简单的话,它也可以被删除,android会自动帮助我们构建一个全屏列表。

然而,在这个例子中,我们需要一个textview来显示选中的项目,所以我们需要一个layout.mainb来描述这个列表窗口。

这里需要注意的是,listview的id是系统定义的android:list,我们没有随机选取它,否则系统会说找不到它想要的listview。

然后,除了这个列表视图,我们还添加了一个textview来显示所选的项目。

让我们来谈谈这里使用的arrayadapter。

其构造函数中的第二个参数是资源id。

在arrayadapter的api文档中,需要使用包含textview的布局文件。

平台使用它来显示每个选定项目的样式。

这里的值是r . layout . list _行。

因此,我们还有一个list_row.xml 文件来描述布局,这非常简单。

从arrayadapter回到baseadapter,我们发现有几个同源的适配器也应该使用,如简单适配器和粗略适配器。

让我们举一个例子来测试它。

然后,在hellotwob中的oncreate函数中,修改代码,有几个不同之处:items的元素是一个hashmap实例,这是一个小小的改变。

然后,构造函数不仅需要条目,还需要一个字符串来解释哈希表中的哪个字段显示在列表中,后跟一个资源标识数组。

因为simplecursoradapter是一个抽象类,所以我使用它的子类simple cursoradapter,这很容易理解。

首先,使用contentresolver 查询地址簿以获得一个光标,然后告诉SimpleCursorAdapter使用作为显示项来构造一个适配器。

4.关于对话,请注意除了对话,android.app包还包括了几个由系统定义的对话类,比如DATE PikerDialog 、TimePickerDialog和alertdialog。

上次我用了一次alertdialog,基本上是一样的。

今天让我们看看另外两个对话的用法。

这很简单,只需要一个ondatesetlistener接口的实现,日期可以在它的dateset方法中选择。

Timepickerdialog与datepickerdialog相同。

让我们看看progressdialog的另一种用法。

这个类包含许多静态方法,比如alertdialog,所以使用起来非常方便。

例如,如果我们需要用它来表示一个长期的操作。

5.关于服务和通知,我简单看了一下安卓应用下的服务类。

我认为它非常类似于活动。

我只需要注意几个地方:1.生命周期中,oncreate-onstart-on stroy的服务更简单。

但是,它的onstart是参数化的,第一个id可以用来识别这个服务,第二个参数显示用来传输数据。

比较活动,传递数据的包在创建时被引入。

2.服务的开始以context.startservice开始,它的活动或服务是上下文的派生类。

Context.stopservice或它自己的stopself。

3.服务和活动的另一个区别是,它可以通过另一个上下文来绑定现有的服务。

Context.bindservice,绑定的服务要求已经在创建中,但不能有onstart。

在服务类中,有一个名为getbinder的抽象方法,它可以获取这个ibinder对象。

我将在以后研究这方面的细节。

我只会在这里做个记录。

4.还有一个与服务相关的安全问题。

您可以在androidmanifest.xml中使用标记来声明服务的访问权限。

与安卓相关的安全问题将在稍后解决。

6.gridView和imageview更简单。

让我们看看网格的效果。

android提供了一个网格视图,但是从apidemo的角度来看,它似乎与pc上的网格有很大的不同,更像是那个图标视图的感觉。

不知道如何在安卓系统中实现桌面界面?虽然在移动终端上,表格一般不会被任何人使用,但人们似乎更喜欢listview,而android 对listview有一个更简单的listactivity实现。

很简单。

只需重新加载一些方法。

关键是getview方法,它负责在每个单元中构建对象实例。

在这种情况下,我们正在构造一个imageview实例。

然后可以用同样的方法将适配器分配给gridview。

你可以看到效果。

注意,在你做这个例子之前,把一些小图片放到res/drawable目录中,buildproject可以一次得到r.drawable.a。

在getview方法中,我们使用了imageview类,这是另一个小部件。

除了上面使用的方法,以下方法值得注意:对于与图像相关的方法,我们只使用资源文件的方式。

这仍然是一个习惯性的离题。

事实上,我想通过这个类的无数调试器后续来谈论多线程异步处理的解决方案和决策。

他的基本策略如下:1.当你实例化一个asyncqueryhandler类时,它将单独构造一个线程,并且在这个线程中构造一个消息循环。

2.获取一个指向消息循环的指针,并将其作为参数来实例化另一个处理程序类,它是一个内部类。

此时,有两个线程,每个线程都有一个处理程序来处理消息。

3.在调用onxxx时,请求将被封装到xxx函数内部的一个内部参数类中,该类将被用作消息的参数,消息将被发送到另一个线程。

4.在线程的处理程序中,接受消息,分析传入的参数,用初始化期间传入的contentresolver执行xxx操作,并返回游标或其他返回值。

5.构造一个消息,将上述返回值和其他相关内容绑定到该消息,并将其发送回主线程。

6.asyncqueryhandler类的主线程的默认handlemessage方法分析该消息,并将其转发给相应的onxxxxxplete方法。

7.由用户重写的onxxxxxplete方法开始工作。

这是它秘密做的,基本上是很好理解的。

我唯一好奇的是它的线程管理方法。

我想这是单件模式。

第一个asyncqueryhandler的实例化将导致创建一个线程,从这个线程将成为一个不朽的处女,所有与contentresolver相关的工作将由这个线程完成。

我个人认为这个解决方案非常好。

最初,这个线程的生命周期很难估计,当您有一个contentprovider请求时,判断您将执行更多类似的操作并不过分。

即使它是错误的,它所花费的只是一个不朽的线程,以换取简单的生命周期管理和无数线程生死费用的节省。

与此同时,另一个非常重要的问题,他也将涉及到数据同步的问题。

每个类都有自己的处理程序类,它们不会相互干扰,并且可以单独分发。

当发出多个数据请求时,不太可能在同一个contentresolver上完成,这样可以避免阻塞。

总而言之,这个解决方案非常适合安卓的整体设计。

因此,建议如果您有任何contentprovider操作,但需要异步多线程执行,模拟一个集合是一个很好的策略。

当然,把硬套从一套移到另一套来学习马克思列宁主义是不好的。

7.当使用安卓界面显示时,显示控件也基于该控件。

这通常是通过将视图控件与xml样式相匹配来实现的。

我不想谈论具体的细节,请参考示例中的演示/视图、视图中的文档和实现用户界面的文档。

还有很多其他人,他们觉得sdk说得最多。

从控件的使用,类似于网页的设计,尝试使用抽象长度,如父_宽度,使用主题作为样式,并提取所有字符串和其他信息进行本地化设计。

相关内容请参见实施细则。

一种更重要的类型是数据绑定控件。

如果你做到了,你会看到许多类似的地方。

支持数据绑定的控件,如listview。

您可以通过listadapter绑定到数据源。

Listadapter是一个抽象类,主要实现类包括simpleadapter和simplecursoradapter。

前者绑定一个静态数组,而后者绑定一个动态游标。

Cursor之前说过,它是一个指向数据源的随机迭代器。

将视图绑定到游标通常需要设置这些参数。

一种是每行的样式,称为行布局,实际上是一个普通的布局xml 文件。

相关主题