- 浏览: 396103 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lalaeye:
学习一下,明天再看。
android框架设计 -
418702610:
...
Collections.synchronizedMap(new LinkedHashMap()) -
mao_lu:
给个代码下载吧,谢谢
在Android中创建和使用数据库 -
lyltiger:
那就是说单纯的android测试还不能进行!
Android单元测试 -
貌似掉线:
貌似是我想要的。。先标记一下,明天起来看。。
Android单元测试
这是对框架设计应用的一个小的总结
说明:
1、一开始,框架反向呼叫onCreate()函数,也呼叫onCreateOptionsMenu()函数
2、当你选取<Add Item>选项时,框架会反向呼叫onOptionsItemSelected()函数
在我们修改了/res/values/strings.xml内容之后,记住要存档,因为这样可以更新R.java的内容,让menu.add()指令能找到所要的字符串。
1、R.java是连接*.java的程序码档案和*.xml布局档案的中介桥梁。
2、在.xml档案中,Eclipse根据其内的内容而自动产生一个R类别,作为应用程序设计者,并不需要去修改它。
3、当这些.xml档案有更新时,Eclipse就会在你确认并将*.xml存档时,自动更新它。
4、更加方便地去管理资源。
下面来介绍如何呈现按钮
首先来看看构建按钮的一般的步骤:
package com.misoo.ex02;
说明:Button btn=(Button)findViewById(R.id.button);找出目前的布局里的按钮参考,并存放人btn内。
指令btn.setOnClickListener(this)设定按钮事件的处理程式,应额外事件监听者。当使用者按下id值为id/button的按钮时,框架必须把事件准确地传送到恰当的类别,并呼叫所指定的函数。其中的参数:this就表示此按钮事件必须传送到本地类别的物件,也就是目前物件。
当然,还可以创建出带有背景的按钮,对应的类别为ImageButton.
下面介绍如何进行书面的布局
1、像按钮这种屏幕控制项,在Android中,则通讲为View,其中,像Button是最小单元的View,多个小的View可以构成一个集合类型的View。
2、多个View能组合在一起,就会各种排列方式,即讲布局Layout.
3、最基本的布局为:垂直和水平排列
//下面这两条指令诞生一个LinearLayout的集合型的View物件,并且设定为垂直类型布局
Drawable dw = this.getResources().getDrawable(R.drawable.ok); //Drawable类型??
btn.setImageDrawable(dw); //设置btn的图像为dw.
btn.setOnClickListener(listener);
//下面的指令诞生一个LayoutParams物件,并且把WC参数存入该物件里,此参数说明了我们希
下面介绍如何呈现List选单
这个程式展现了MVC的基本架构
Activity 对应着的是Controller
ListView 对应着的是View
DataModel对应着的是Model
下面同样是ListView多对应的功能
package com.misoo.ex06;
//下面的dm.loadData()呼叫DataModel的loadData()函数将xml字符串或者是表格资料加入到ArrayList<Map<String,Object>>的集合物件中。
coll = dm.loadData();
//下面的指令将coll集合物件的资料传给SimpleAdapter物件,SimpleAdapter物件依据参数的
指定来从coll取出资料,并设定显示的树形等等。
}
package com.misoo.ex01; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class ex01 extends Activity { public static final int ADD_ID = Menu.FIRST; public static final int DELETE_ID = Menu.FIRST + 1; public static final int EXIT_ID = Menu.FIRST + 2; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, ADD_ID, 0, R.string.menu_add); menu.add(0, DELETE_ID, 1, R.string.menu_delete); menu.add(0, EXIT_ID, 2, R.string.menu_exit); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case ADD_ID: setTitle("Insert..."); break; case DELETE_ID: setTitle("Delete..."); break; case EXIT_ID: finish(); break; } return super.onOptionsItemSelected(item); }}
说明:
1、一开始,框架反向呼叫onCreate()函数,也呼叫onCreateOptionsMenu()函数
2、当你选取<Add Item>选项时,框架会反向呼叫onOptionsItemSelected()函数
在我们修改了/res/values/strings.xml内容之后,记住要存档,因为这样可以更新R.java的内容,让menu.add()指令能找到所要的字符串。
1、R.java是连接*.java的程序码档案和*.xml布局档案的中介桥梁。
2、在.xml档案中,Eclipse根据其内的内容而自动产生一个R类别,作为应用程序设计者,并不需要去修改它。
3、当这些.xml档案有更新时,Eclipse就会在你确认并将*.xml存档时,自动更新它。
4、更加方便地去管理资源。
下面来介绍如何呈现按钮
首先来看看构建按钮的一般的步骤:
package com.misoo.ex02;
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class ex02 extends Activity implements OnClickListener { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); Button btn = (Button)findViewById(R.id.button); Button btn2 = (Button)findViewById(R.id.button2); btn.setOnClickListener(this); btn2.setOnClickListener(this); } public void onClick(View arg0) { switch (arg0.getId()) { case R.id.button: setTitle("this is OK button"); break; case R.id.button2: this.finish(); break; } }} 下面是对应的.xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/tv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="OK" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Exit" /> </LinearLayout>
说明:Button btn=(Button)findViewById(R.id.button);找出目前的布局里的按钮参考,并存放人btn内。
指令btn.setOnClickListener(this)设定按钮事件的处理程式,应额外事件监听者。当使用者按下id值为id/button的按钮时,框架必须把事件准确地传送到恰当的类别,并呼叫所指定的函数。其中的参数:this就表示此按钮事件必须传送到本地类别的物件,也就是目前物件。
当然,还可以创建出带有背景的按钮,对应的类别为ImageButton.
下面介绍如何进行书面的布局
1、像按钮这种屏幕控制项,在Android中,则通讲为View,其中,像Button是最小单元的View,多个小的View可以构成一个集合类型的View。
2、多个View能组合在一起,就会各种排列方式,即讲布局Layout.
3、最基本的布局为:垂直和水平排列
import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.LinearLayout; public class ex04 extends Activity { private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle);
//下面这两条指令诞生一个LinearLayout的集合型的View物件,并且设定为垂直类型布局
LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); ImageButton btn = new ImageButton(this);
Drawable dw = this.getResources().getDrawable(R.drawable.ok); //Drawable类型??
btn.setImageDrawable(dw); //设置btn的图像为dw.
btn.setOnClickListener(listener);
//下面的指令诞生一个LayoutParams物件,并且把WC参数存入该物件里,此参数说明了我们希
望这个按钮的长宽大小 LinearLayout.LayoutParams param =new LinearLayout.LayoutParams(WC, WC); layout.addView(btn, param); ImageButton btn2 = new ImageButton(this); dw = this.getResources().getDrawable(R.drawable.exit); btn2.setImageDrawable(dw); btn2.setOnClickListener(listener2); layout.addView(btn2, param); //将ImageButton或是Button物件加入到layout里成为一组 LinearLayout out_layout = new LinearLayout(this); out_layout.setOrientation(LinearLayout.HORIZONTAL); Button btn3 = new Button(this); btn3.setText("Cancel"); btn3.setTextColor(Color.WHITE); btn3.setBackgroundColor(Color.RED); btn3.setOnClickListener(listener3); out_layout.addView(layout, param); LinearLayout.LayoutParams param2 =new LinearLayout.LayoutParams(WC, WC); param2.topMargin = 30; out_layout.addView(btn3, param2); setContentView(out_layout); } OnClickListener listener = new OnClickListener(){ public void onClick(View v) { setTitle("this is OK button"); } }; OnClickListener listener2 = new OnClickListener() { public void onClick(View v) { finish(); } }; OnClickListener listener3 = new OnClickListener() { public void onClick(View v) { setTitle("this is Cancel button"); } }; }
下面介绍如何呈现List选单
这个程式展现了MVC的基本架构
Activity 对应着的是Controller
ListView 对应着的是View
DataModel对应着的是Model
import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; public class ex05 extends Activity implements OnItemClickListener { public static final int RELOAD_ID = Menu.FIRST; public static final int EXIT_ID = Menu.FIRST + 1; ListView lv; ArrayAdapter<String> adapter; //声明一个泛型adapter DataModel dm; //声明一个数据模型dm @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); dm = new DataModel(); //创建一个模型 lv = new ListView(this); //创建一个列表视图 adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dm.loadData()); //这诞生一个ArrayAdapter的物件,并呼叫dm.loadData()函数取得选单所需要的内容,存入此新的物件里。 lv.setAdapter(adapter); //向adapter物件取得选单内容 lv.setOnItemClickListener(this); //设定ListView选单时间的处理程式,又称为事件监听者。 setContentView(lv); } public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) //这是列表视图操作所响应的事 { setTitle("choice: " + String.valueOf(dm.getPrice(arg2))); } @Override public boolean onCreateOptionsMenu(Menu menu) //这个操作是用来进行菜单的选项的设计的 { super.onCreateOptionsMenu(menu); //对于菜单的设计,在使用onCreateOptionMenu时,都需要这个操作,即让父类来实现绘画功能 menu.add(0, RELOAD_ID, 0, "Reload"); //添加菜单选项 MenuItem im = menu.findItem(RELOAD_ID); // im.setIcon(R.drawable.reload_im); menu.add(0, EXIT_ID, 1, "Exit"); im = menu.findItem(EXIT_ID); im.setIcon(R.drawable.exit_im); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) //这个选项是在选择菜单时所产生的动作 { switch (item.getItemId()) { case RELOAD_ID: //如果选择的是第一个菜单,那么就执行下面的这个功能 adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dm.loadData()); lv.setAdapter(adapter); break; case EXIT_ID: //如果选择的是第二个菜单,那么就执行退出操作 finish(); break; } return super.onOptionsItemSelected(item); } } public class DataModel { private String[]data, xdata; private double[] price; private boolean k = true; public DataModel() { data = new String[3]; data[0] = "Item-1"; data[1] = "Item-2"; data[2] = "Item-3"; xdata = new String[3]; xdata[0] = "Prod-x"; xdata[1] = "Prod-y"; xdata[2] = "Prod-z"; price = new double[3]; price[0] = 305.5; price[1] = 56.75; price[2] = 100.25; } public String[] loadData() { k = !k; if(k) return xdata; else return data; } public double getPrice(int i) { return price[i]; } }
下面同样是ListView多对应的功能
package com.misoo.ex06;
import java.util.ArrayList; import java.util.Map; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; public class ex06 extends Activity { private ListView lv; private TextView tv; private DataModel dm; private ArrayList<Map<String, Object>> coll; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); dm = new DataModel(); setContentView(R.layout.list); lv = (ListView)findViewById(R.id.list); lv.setOnItemClickListener(listener); tv = (TextView)findViewById(R.id.text);
//下面的dm.loadData()呼叫DataModel的loadData()函数将xml字符串或者是表格资料加入到ArrayList<Map<String,Object>>的集合物件中。
coll = dm.loadData();
//下面的指令将coll集合物件的资料传给SimpleAdapter物件,SimpleAdapter物件依据参数的
指定来从coll取出资料,并设定显示的树形等等。
SimpleAdapter adapter = new SimpleAdapter(this, coll,android.R.layout.simple_list_item_1, new String[] { "prod_na" },new int[] {android.R.id.text1}); lv.setAdapter(adapter); //将SimpleAdapter物件传送给ListView物件,立即更新了书面上List选单的内容. } OnItemClickListener listener = new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { tv.setTextColor(Color.YELLOW); tv.setText(coll.get(arg2).get("prod_type").toString()); } }; } import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class DataModel { public DataModel() {} public ArrayList<Map<String, Object>> loadData() { ArrayList<Map<String, Object>> coll= new ArrayList<Map<String, Object>>(); Map<String, Object> item; item = new HashMap<String, Object>(); item.put("prod_na", "Linux"); item.put("prod_type", "ST"); coll.add(item); item = new HashMap<String, Object>(); item.put("prod_na", "Windows"); item.put("prod_type", "Mobile"); coll.add(item); return coll; } } <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World, ex06" /> <ListView android:id="@+id/list" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 下面介绍如何使用相对布局Relative Layout 分析下面的这段代码: import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.LayoutInflater; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; public class ex07 extends Activity implements OnItemClickListener { private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT; private String[] data = {" Item-1 ", " Item-2 ", " Item-3 "}; private TextView tv; private String selection = "****"; private ArrayAdapter<String> adapter; private boolean[] status = {false, false, false }; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); //这诞生了一个相对布局物件,并设定为此Activity的起始书面布局 RelativeLayout r_layout = new RelativeLayout(this); setContentView(r_layout); //取得一个系统的LAYOUT_INFLATE_SERVICE服务的物件,取名为inflate LayoutInflater inflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout layout = (LinearLayout)inflate.inflate(R.layout.list, null); RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(175, WC); layout.setId(1); r_layout.addView(layout, param); tv = (TextView)layout.findViewById(R.id.text); ListView lv = (ListView)layout.findViewById(R.id.list); lv.setBackgroundResource(R.drawable.bk_red); adapter = new ArrayAdapter<String> (this, android.R.layout.simple_list_item_multiple_choice, data); lv.setAdapter(adapter); lv.setItemsCanFocus(false); lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); lv.setOnItemClickListener( this); Button btn1 = new Button(this); btn1.setBackgroundResource(R.drawable.bk_ok_exit); btn1.setId(2); btn1.setText("OK"); btn1.setOnClickListener(listener); param = new RelativeLayout.LayoutParams(60, WC); param.addRule(RelativeLayout.RIGHT_OF, 1); param.leftMargin = 15; param.topMargin = 20; r_layout.addView(btn1, param); Button btn2 = new Button(this); btn2.setBackgroundResource(R.drawable.bk_ok_exit); btn2.setId(3); btn2.setText("Exit"); btn2.setOnClickListener(listener); param = new RelativeLayout.LayoutParams(60, WC); param.addRule(RelativeLayout.BELOW, 2); param.addRule(RelativeLayout.ALIGN_LEFT, 2); param.topMargin = 25; r_layout.addView(btn2, param); } OnClickListener listener = new OnClickListener() { public void onClick(View v) { if(v.getId() == 2){ String ss = "{"; for(int i=0; i< adapter.getCount(); i++){ if(status[i]) { ss += data[i]; ss += " "; } } ss += "}"; setTitle(ss); } else if(v.getId() == 3) finish(); }}; public void onItemClick(AdapterView<?> arg0, View v, int idx, long arg3) { status[idx] = ! status[idx]; } } <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World, ex07" /> <ListView android:id="@+id/list" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> package com.misoo.ex07; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.LayoutInflater; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; //此程序是采用相对布局方式。所谓的相对是指定我们叙述一个组件的位置时,会以其中的另外一个组件为基准。 public class ex07 extends Activity implements OnItemClickListener { /** Called when the activity is first created. */ private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT; private String[] data = {"Item-1", "Item-2", "Item-3"}; private TextView tv; private String selection = "****"; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); //下面代码诞生了一个相对布局物件,并设定为此Activity的起始书面布局 RelativeLayout r_layout = new RelativeLayout(this); setContentView(r_layout); //下面代码取得一个系统的LAYOUT_INFLATE_SERVICE服务的物件,取名为inflate,但是为什么要获得系统服务呢? LayoutInflater inflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); //下面指令呼叫inflate物件的inflate()函数依据/res/layout/list.xml之定义而诞生一个LinearLayout物件 LinearLayout layout = (LinearLayout)inflate.inflate(R.layout.list, null); //这诞生一个RelativeLayout的参数物件,透过参数物件来设置此layout集合布局的宽度为120点,而高则视其内容而定。 RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(120, WC); layout.setId(1); // r_layout.addView(layout, param); //下面两句代码分别找出layout里面的两个小View,并由tv和lv分别参考之 tv = (TextView)layout.findViewById(R.id.text); ListView lv = (ListView)layout.findViewById(R.id.list); //下面这句代码从data[]阵列取出资料,并交给lv物件,将显示于书面的List选单里 ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_list_item_1, data); lv.setAdapter(adapter); lv.setOnItemClickListener(this); //------------------------------------------------------ Button btn1 = new Button(this); btn1.setId(2); btn1.setText("OK"); btn1.setOnClickListener(listener); param = new RelativeLayout.LayoutParams(60, WC); param.addRule(RelativeLayout.RIGHT_OF, 1); param.leftMargin = 15; param.topMargin = 20; r_layout.addView(btn1, param); //------------------------------------------------------ Button btn2 = new Button(this); btn2.setId(3); btn2.setText("Exit"); btn2.setOnClickListener(listener); param = new RelativeLayout.LayoutParams(60, WC); param.addRule(RelativeLayout.BELOW, 2); param.addRule(RelativeLayout.ALIGN_LEFT, 2); param.topMargin = 25; r_layout.addView(btn2, param); } OnClickListener listener = new OnClickListener() { public void onClick(View v) { if(v.getId() == 2) tv.setText(selection); else if(v.getId() == 3) finish(); } }; public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub setTitle(data[arg2]); selection = data[arg2]; } } package com.misoo.ex08; import android.app.Activity; import android.os.Bundle; import android.widget.Button; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.EditText; import android.widget.TableLayout; import android.widget.TableRow; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; public class ex08 extends Activity implements OnClickListener { private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); //根据下面所说的嵌套层次,首先是定义最大的view,并设定为目前布局(this值) RelativeLayout r_layout = new RelativeLayout(this); setContentView(r_layout); //当书面上的一群view排成一个矩阵或者是表格形式时,就采用TableLayout来叙述其布局方式。 //接着定义第二个的TableLayout,并加入到r_layout里 TableLayout tableLayout = new TableLayout(this); r_layout.addView(tableLayout, new RelativeLayout.LayoutParams(WC, WC)); tableLayout.setId(1); //此程序采用的嵌套层次为:RelativeLayout->TableLayout->TableRow->EditText->Button->ImageView //再定义第三个的TableRow,并加入到tableLayout里 TableRow tableRow1 = new TableRow(this); tableLayout.addView(tableRow1, new TableLayout.LayoutParams(WC, WC)); //最后定义最小的view,并加入到tableRow里 ImageView iv = new ImageView(this); tableRow1.addView(iv); iv.setImageDrawable(getResources().getDrawable(R.drawable.star_big_on)); EditText edit1 = new EditText(this); tableRow1.addView(edit1); //------------------------------------------------- TableRow tableRow2 = new TableRow(this); tableLayout.addView(tableRow2, new TableLayout.LayoutParams(WC, WC)); ImageView iv2 = new ImageView(this); iv2.setImageDrawable(getResources().getDrawable(R.drawable.gallery_photo_4)); tableRow2.addView(iv2); EditText edit2 = new EditText(this); tableRow2.addView(edit2); //------------------------------------------------- Button btn = new Button(this); RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(WC, WC); param.addRule(RelativeLayout.BELOW, 1); param.topMargin = 20; r_layout.addView(btn, param); btn.setText("Exit"); btn.setOnClickListener(this); } public void onClick(View arg0) { // TODO Auto-generated method stub finish(); }
}
发表评论
-
自制android1.5源码包
2009-09-11 13:48 1644具体参考如下: http://www.williamhua.c ... -
Git和Repo扫盲——如何取得Android源代码
2009-09-11 13:46 8281Git 是 Linux Torvalds 为了帮助管理 Lin ... -
Eclipse中android插件的安装
2009-09-11 10:37 19903首先需要下载android的SDK ... -
JUnit基本教程
2009-09-09 16:01 6880使用目的 junit是java中书写unit ... -
android源代码下载
2009-09-08 18:30 160781 Android Source Code Download ... -
android源代码编译
2009-09-08 18:27 4273编译Android过程 建立编译环境, Ubuntu版本Li ... -
使用AIDL(Android接口描述语言)设计和使用远程接口
2009-09-04 10:14 7132目录 1 使用AIDL(AndRoid接口描述语言)设计和 ... -
android外国教材书
2009-09-03 10:25 4219一本不错的Android教程书~~ android bluet ... -
AndroidManifest.xml解析
2009-09-03 09:09 11489AndroidManifest.xml 是每个android程 ... -
Android单元测试
2009-09-02 17:01 20307android源代码中每个app下中都自带了一个test用例, ... -
视频与图像RGB/YUV格式详解
2009-09-02 15:59 3520计算机彩色显示器显示色彩的原理与彩色电视机一样,都是采用R(R ... -
yuv420 转换成RGB565函数
2009-09-02 15:17 8051做ADNROID CAMERA时.发现很多朋友都在找YUV R ... -
Android API :SMS短信服务处理和获取联系人
2009-08-31 15:08 5481许多新的应用程序会考虑使用SMS作为数据分发平台。现实一点的场 ... -
在Android中创建和使用数据库
2009-08-27 22:32 4163每个应用程序都要使用数据,Android应用程序也不例外,An ... -
Android模拟器入门
2009-08-27 15:41 2061要玩google 手机 G1的模拟器,当然需要先去googl ... -
Android JNI简单实例
2009-08-27 15:38 28922Android的jni实例 android 的应用程序(Da ... -
Android内核的简单分析
2009-08-27 15:36 4622Android内核的简单分析 mintelong (vkafe ... -
Android横竖屏切换的解决方法
2009-08-27 15:25 15746package com.cn; import android ... -
Android的IPC机制Binder的详解汇总
2009-08-27 15:16 8449第一部分 Binder的组成 1.1 驱动程序部分驱动程序的部 ... -
Android的Camera架构介绍
2009-08-27 15:12 2413第一部分 Camera概述 Android的Camer ...
相关推荐
在Android开发领域,深入理解框架设计模式和设计原则是提升专业技能的关键步骤。设计模式是软件工程中的经验总结,它们是解决常见问题的有效方案。设计原则则是指导我们编写高质量、可维护代码的准则。以下是对这些...
android 框架设计 framework 开发
Android框架设计遵循了模块化、可扩展性和兼容性的原则。它将复杂的系统功能分解成多个独立的服务,每个服务都可以根据需要动态加载和卸载。这种设计使得Android系统既能够适应不同的硬件平台,也能够随着技术的发展...
《Android框架设计分享》 Android框架设计是移动应用开发中的重要环节,它关乎到应用程序的稳定性和可维护性。在Android开发中,架构的选择对于项目的长远发展至关重要。本分享主要探讨了Android框架设计的一些核心...
github上很火的一个Android UI框架,SlidingMenu.已经将所需要的Actionbarssherlock和SlidingMenu库打包好。下载后解压并且,将Actionbarssherlock,SlidingMenu和SlidingMenuExample这三个文件夹import到eclipse中...
二、Telephony中多卡及多运营商设计区分 6 1.telephony中的多卡 7 1)AP区分多卡 7 2)modem区分多卡 12 2.telephony中的多运营商设计 14 三、Telephony中AIDL模式设计 15 四、Telephony中观察者模式设计 16 五、...
Android通用框架设计与完整电商APP开发,欢迎大家下载,
Android通用网络框架设计思维导图,打造属于自己的敏捷开发框架
通过阅读《Android软件架构设计》,开发者不仅能掌握Android框架设计的核心原理,还能学习到如何根据项目需求选择合适的架构模式,以及如何有效地组织和优化代码,从而打造高质量的Android应用。这本书无疑将为...
3. **Android框架设计**: 这个框架可能采用模块化设计,将微信支付和支付宝支付封装为独立的服务或者组件,便于开发者根据需求选择接入。同时,为了保证兼容性和安全性,框架可能会包含对不同Android版本的适配...
《Android设计招式之美》是一本深入探讨Android框架设计模式的专业书籍,涵盖了从基础到高级的各种设计技巧。这本书通过对各种设计模式的详细讲解,旨在帮助开发者提升在Android平台上的编程能力,实现更高效、可...
本文将深入探讨"android框架(源代码)"中的关键知识点,特别是与`TabHost`相关的实现。 Android框架是Google为开发者提供的一个开放源代码平台,它包含了操作系统、中间件和关键应用,旨在帮助开发者快速开发...
《Android 框架设计与应用程式开发》是高焕堂先生所著的一本深入探讨 Android 开发的经典著作。这本书籍旨在帮助读者理解和掌握 Android 应用程序的设计与实现,从而提升开发技能。通过阅读本书及配套的代码示例,...
《Android 框架设计与应用程式开发》是高焕堂先生所著的一本深入探讨 Android 开发的经典著作。这本书籍旨在帮助读者理解和掌握 Android 应用程序的开发技术,特别是针对 Android 框架的设计原理和实际运用。在提供...
Android通用框架设计与完整电商APP开发,附带json文件,全程带你从零设计通用的项目框架,并通过框架快速开发一个完整电商App验证和完善框架的复用性与灵活性等,综合提高你的项目框架设计能力和业务功能的快速实现...
#### 设计样式与Android框架设计 在深入探讨《Android设计招式之美-1》之前,我们先了解该书的主要内容及其重要性。本书主要聚焦于Android应用框架的设计思想和技术实践,特别是通过一系列的设计招式(即设计模式)...
24.Observer样式应用于Android框架设计.doc 25.使用SQLite的Blob储存.mp3档案.doc 26.活用Android的Message Queue1.doc 27.活用Android的Message Queue(2).doc 28.Anrdroid的Message Queue3.doc 29&30认识UI Thread....