MVC模式: MVC的基本原理就是通过Controller连接View和Model.当View中所显示的数据发生变化时,会通知Controller,然后由Controller调用Model中的相关方法执行相应的数据修改操作.反之,当Model中的数据发生变化时,也会通知Controller,由Controller通知View更新显示内容.如此一来,就使得数据部分与视图部分相分离,任何一方发生改变都不会影响到另一方. 而在android中,MVC的一个常见应用就是ListView显示数据.V代表的…
自定义组合控件的过程 1.自定义一个View 一般来说,继承相对布局,或者线性布局 ViewGroup:2.实现父类的构造方法.一般来说,需要在构造方法里初始化自定义的布局文件:3.根据一些需要或者需求,定义一些API方法: ----------------------------------4.根据需要,自定义控件的属性,可以参照TextView属性: 5.自定义命名空间,例如: xmlns:itheima="http://schemas.android.com/apk/res/<包名&…
为了能让代码能够更多的复用,故使用组合控件.下面是我正在写的项目中用到的方法. 1.先写要组合的一些需要的控件,将其封装到一个布局xml布局文件中. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="…
原文:WPF-学习笔记 动态修改控件Margin的值 举例说明:动态添加一个TextBox到Grid中,并设置它的Margin: TextBox text = new TextBox(); t_grid.Children.Add(text); Thickness margin = new Thickness(left, top, right, bottom); text.Margin = margin;…
有时候,可能觉得系统提供的控件太丑,就会需要自定义控件来实现自己想要的效果. 以下主要参考<第一行代码> 1.自定义一个标题栏: 系统自带的标题栏很丑,且没什么大的作用,所以我们之前会在onCreate()中调用requestWindowFeature(Window.FEATURE_NO_TITLE);设置不显示标题栏. 下面自定义一个标题栏,中间显示标题,左右各有一个按钮: title.xml: <?xml version="1.0" encoding="…
主要参考<第一行代码> 1.TextView: 功能与传统的桌面应用开发中的Label控件相似,用于显示文本信息 如: <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#0000ff" android:textSize="40sp" android:tex…
一.状态栏通知(Notification): 如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息.发送消息的代码如下: public void sendNotice(View v){ int icon=android.R.drawable.stat_notify_chat; //第一个参数为图标,第二个参数为标题,第三个为通知时间 Notification notification = new Notification(icon, "通知", System.currentTimeM…
1.android:gravity 指定控件的基本位置,比如居中.居右等位置 Top:顶部 bottom:底部 left:居左 right:居右 center_vertical:垂直居中 center_Horizontal:水平居中 fill_vertical:待研究 fill_Horizontal:待研究 2.android:textSize 字体大小如:"16pt" 3.android:background 背景 如 颜色:“#aa0000” 图片:“@drawable/backg…
3.FrameLayout:帧布局 如同Flash或者photoshop中图层的概念,在上面的图层遮盖下面的图层,没被遮到的地方仍然显示出来. 右击res/layout,然后在弹出的菜单中选择new,然后选择Android Xml File,要新建FrameLayout布局文件,就选择FrameLayout作为其根节点即可.文件名为frame_layout.xml. 代码如下: <?xml version="1.0" encoding="utf-8"?>…
1.准备工作: 百度地图API是免费开放的,但是需要申请API Key: 1)先注册一个百度开发者帐号 2)进入百度开放服务平台http://developer.baidu.com/ 3)进入LBS云 4)点击右上角的API控制台,没有登录的话会先跳转到登录页面,登录成功之后就进入应用控制台了: 5)点击创建应用: 应用类型选择Android SDK,注意下面的安全码,格式是数字签名+应用包名,中间用分号分隔.数字签名的获得: Eclipse中window->Preferences->Andr…
Activity是android应用程序中重要的组件之一,常听到的android四大组件是Activity.Service.BroadcastReceiver和ContentProvider.它间接继承自android.content.Context,因此,有些时候都直接把Activity实例当做Context的实例来使用. 如前面所提到的要在应用程序中使用Activity,必须在Android Manifest.xml中配置它. 新建一个Android工程,新建过程中勾选create acti…
1.获取当前地理位置: Android中提供了一个LocationManager的类,用于管理地理位置.不能通过构造函数获取该类的实例,而是通过Context的getSystemService(): LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 该类中有几个比较常用的方法: getLastKnownLocation(String provider)用于根据传入的provider…
现在有这样一个应用A通过ContentProvider提供自己的数据给其他应用,应用B通过ContentResolver获取应用A中提供的数据,并将其展示在ListView中,而应用C通过ContentResolver修改应用A中的数据,或者添加新的数据.现在的问题是应用C修改A中数据后,应用B的ListView中显示的还是历史数据…… 具体程序如下: ContentProvider和插入数据的应用分别复用上一篇中的两个应用,然后新建一个应用,用于获取ContentProvider中的数据,并在…
Android应用的UI组件都是继承自View类,View类表示的就是一个空白的矩形区域.常用的组件如TextView.Button.EditText等都直接或间接继承自View. 此外,View还有一个重要的子类ViewGroup,该类可以用来包含多个View组件,本身也可以当做一个View组件被其他的ViewGroup所包含,由此,可以构建出非常复杂的UI界面. 常用的布局管理器如FrameLayout.LinearLayout.RelativeLayout等都直接继承自ViewGroup.…
常见的向用户发送提示信息的方式有3种,分别为: 1)发送Toast信息 2)弹出对话框 3)发送通知 总结如下: 方式1:发送Toast信息: 这种方式最简单,在之前的学习中多次使用过.Toast是在一个浮动于应用之上的View中显示信息,显示一定的时间间隔后自动消失,不可获得焦点. 最简单的用法就是之前的学习中一直使用的:通过一个静态的makeText()方法返回一个Toast对象,然后调用show()方法. 如: 布局文件添加一个Button: <Button android:id="…
主要是基于HTTP协议与服务端进行交互. 涉及到的类和接口有:URL.HttpURLConnection.HttpClient等 URL: 使用一个String类型的url构造一个URL对象,如: URL url = new URL(http://10.0.2.2/index.php); openConnection()方法返回一个对指定url的资源的连接.返回类型是URLConnection,但是,由于这里我们一般用的是http协议,所以返回的实际是HttpURLConnection对象,故一…
ContentProvider是Android四大组件之一,它用来封装数据,并通过ContentResolver接口将数据提供给其他应用.只有当需要在多个应用之间共享数据时才会用到ContentProvider. 多个应用共享数据时,如何区分是哪个应用中的那部分数据呢? ContentProvider通过Uri标识具体某个应用的某些数据.当一个应用提供了ContentProvider向其他应用共享数据时,该应用在其ContentProvider中添加标识自己特定数据的Uri,然后其他应用想要获得…
每个android项目都包含一个AndroidMainfest.xml文件,它包含了组成应用程序的每一个Acitivity.Service.Content Provider和Broadcast Receiver的节点,并使用Intent Filter 和权限来确定这些组件之间以及这些组件和其他应用程序是如何交互的. 1.根节点manifest: package属性:当前应用的包名 versionCode属性:将当前应用程序的版本定义为一个整数,每次版本迭代时,该数字都会增加 versionNam…
adb : android debug bridge android调试桥 路径:adt-bundle目录/sdk/platform-tools/adb.exe 常见的adb命令: adb devices 列出所有启动的模拟器 adb start-server 启动adb服务 adb kill-server 停止adb服务 adb shell 之后可以执行linux shell命令 adb  [–s 模拟器名称] install  应用程序.apk  同时有多个模拟器在运行时,必须使用-s指定要…
Service是Android中长期在后台运行的没有界面的组件,使用服务的优势在于:能够提高进程的优先级,系统不容易回收掉进程,即便回收了,内存充足的时候,会把进程重新创建. 1.服务的简单使用示例: 1.1.定义一个服务: 定义一个服务的方式是定义一个类继承自Service: public class MyService extends Service { @Override public IBinder onBind(Intent intent) { // TODO Auto-generat…
假如有如下需求,要求能够记录用户输入的用户名和密码,下次登录时,能直接获取之前保存的用户名密码,并在相应的EditText中显示. 要保存用户输入的数据,最先想到的应该就是文件读写了. 通过对android应用打包安装过程的观察,发现每个应用安装之后,都会在/data/data/下新建一个与应用包名相同的目录,该应用的所有文件都存放在该目录下. 例如: main_layout.xml代码: <?xml version="1.0" encoding="utf-8"…
Android中的Junit测试与Java Junit测试有所不同,不能简单的使用标注…… 假设写了一个MathUtils类,有两个静态方法: public class MathUtils { public static int add(int x, int y){ return x+y; } public static int mul(int x, int y){ return x*y; } } 要测试这两个方法,可以在当前项目中新建一个类继承自AndroidTestCase,在该类中编写测试…
关于Intent的两点补充: 1.隐式Intent启动组件,会有一个Intent解析的过程,若找不到能够处理该Intent的组件,程序就会异常终止.一个合理的做法是,在使用Intent实例启动组件如:startActivity(intent)之前,最好能判断一下该调用能否解析为一个Activity.为了实现该功能,Intent提供了一个方法: ComponentName  resolveActivity(PackageManager pm)  :该方法接收一个包管理器对象作为参数,通过查找该包管…
关于Bundle: 注意到Activity的onCreate()方法的签名是protected void onCreate(Bundle savedInstanceState),其参数是一个Bundle实例. Bundle以键值对的形式来存储数据,类似于Map,以便在Activity之间传递数据.状态信息.Bundle的键均为String类型,值可以是各种基本类型及可序列化的对象类型. Bundle的常用方法: 构造方法: Bundle().Bundle(Bundle b)等 get系列根据键获…
关于Activity的生命周期: 下面是Activity整个生命周期中,状态发生变化时所回调的方法,它们对应着Activity完整的生命过程. void  onCreate(Bundle savedInstanceState):Activity被创建时回调 void  onStart()  :在onCreate()或者onRestart()之后被调用,即Activity第一次创建或者从不可见变为可见状态时调用. void  onResume()  :恢复到活动状态时回到,在onStart()之后…
程序功能:点击一个按钮,然后弹出一个提示信息 Step 1:在eclipse中新建一个android application project,在创建过程中不勾选create activity,这样就创建了一个空的android工程. 此时,src及res/layout均为空. Step 2:在src中新建一个Activity继承自android.app.Activity,点击finish,生成代码如下: package cn.csc.hello_world; import android.app…
Asp.net UpdatePanel 允许用户构建一个丰富的,以客户端为中心的应用程序,引用UpdatePanel控件,能够实现页面的部分刷新,一个包含scriptManage和 UpdatePanel控件的页面自动具有页面部分刷新的功能,不需要写任何的客户端JavaScript代码.一个web页面只能包含一个 ScriptManage控件,但可以包含一个或多个UpdatePanel控件. 使用UpdatePanel控件实现页面的局部更新,需要包含一个ScriptManage控件,并且必须将S…
默认datepicker的安装启用 探索它的配置选项 安装启用一个触发按钮 配置一个供选择的动画 dateFormat选项 简单的国际化 多月datepicker 日期范围选择 datepicker的方法 使用AJAX的datepicker 按着Ctrl键期间,箭头可以用来选择新的day cell,按Return键选中. 1 默认的datepicker }); 2 datepicker的配置选项 Option Default value Usage altField “” 指定一个候选的<inp…
之前,我们已经介绍了 jQuery UI 库,CSS 框架.下面,我们将学习这些有增强可视化效果,高度可配置的用户交互组件. Tab 的特性是,点击 tab 后,会高亮该 tab,并显示他的关联content panel,期间会确保所有其他的 content panel 是 hidden.一次最多只有一个 content panel 可以被打开,也可以没有. 本章我们主要介绍以下几点: 默认安装启用控件 CSS框架是如何触发 tab 控件 怎样为一组 tabs 应用自定义样式 使用 tab 控件…
像jQuery提供 fn.extend() 方法从而可以简单地创建插件一样,jQuery UI也提供了机制使得创造插件变得简单,也确保了公共API功能在新的插件中被保留. 1.首先,创建一个名为  jquery.ui.calculator.js 的文件,代码如下: })(jQuery); 我们通过 $.widget() 方法定义我们的插件.这个方法接受两个参数.第一个参数定义该插件的名称,此名称需以 ui 命名空间开头.第二个参数是可选属性,表示插件的功能,包含属性和方法. 此处,我们有两个配置…