android框架设计
16lz
2021-01-23
阅读更多 这是对框架设计应用的一个小的总结
说明:
1、一开始,框架反向呼叫onCreate()函数,也呼叫onCreateOptionsMenu()函数
2、当你选取选项时,框架会反向呼叫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
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、当你选取选项时,框架会反向呼叫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"?>
说明: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;ArrayAdapteradapter; //声明一个泛型adapterDataModel dm; //声明一个数据模型dm@Override public void onCreate(Bundle icicle) {super.onCreate(icicle);dm = new DataModel(); //创建一个模型lv = new ListView(this); //创建一个列表视图adapter = new ArrayAdapter (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 (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;elsereturn 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
//下面的dm.loadData()呼叫DataModel的loadData()函数将xml字符串或者是表格资料加入到ArrayList