Android 菜单开发和视图处理

本文介绍如何在Android应用中创建菜单并根据菜单选择动态调整视图内容。通过实例演示了菜单项的添加及响应处理,并展示了如何通过setContentView方法更新界面。
自己动手新增一个工程
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><img alt="" src="https://p-blog.youkuaiyun.com/images/p_blog_youkuaiyun.com/huareal/menu1.JPG"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 204.75pt; HEIGHT: 177.75pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/hu/LOCALS~1/Temp/msohtml1/01/clip_image001.png"></imagedata></shape>
技巧:默认创建一个类, R.java 不要修改,将 Nodepadv2.java 中对 R import 路径删除,重新通过 Ctrl+shift+O 导入,选择 org.huareal.demo.R[ 具体随不同项目而定 ]
如果想改变R.java中的内容,修正res目录下的内容的
其中strings.xml内容修改为
<?xml version= "1.0" encoding= "utf-8" ?>
<resources>
<string name= "app_name" > GGame </string>
<string name= "menu_begin" > begin Game </string>
<string name= "menu_pause" > pause Game </string>
<string name= "menu_exit" > exit Game </string>
</resources>
其中的menu_beginmenu_pause,menu_exit都属于后续添加的。为了使R.java具有上述内容,通过选择project中clean操作,清理对应的工程,R.java将自动更新。
该实例中,首先根据练习1中,增加相应的三个菜单,分别对应上述的三个menu
为了显示菜单,通过实现方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
//return super.onCreateOptionsMenu(menu);
boolean result = super .onCreateOptionsMenu(menu);
Log.i( "info" , "NotePad MenuCreate " );
menu.add(0, BEGIN_ID , R.string. menu_begin );
menu.add(0, PAUSE_ID ,R.string. menu_pause );
menu.add(0, EXIT_ID ,R.string. menu_exit );
return result;
}
点击每个菜单的操作如下:
@Override
public boolean onOptionsItemSelected(Item item) {
Log.i( "info" , "NotePad Menu select " );
switch (item.getId()) {
case BEGIN_ID :
beginGame();
break ;
case PAUSE_ID :
pauseGame();
break ;
case EXIT_ID :
exitGame();
break ;
default :
Log.i( "i" , " 无效的菜单选项 " );
break ;
}
return super .onOptionsItemSelected(item);
}
public void beginGame(){
Log.i( "info" , "Begin game " );
}
public void pauseGame(){
Log.i( "info" , "Pause game" );
}
public void exitGame(){
Log.i( "info" , "Exit Game" );
System.exit(0);
}
对应变量定义为:
public static final int BEGIN_ID = Menu. FIRST ;
public static final int PAUSE_ID =2;
public static final int EXIT_ID =3;
@Override
public void onCreate (Bundle icicle) {
super .onCreate(icicle);
Log.i( "info" , "NotePad Create" );
setContentView(R.layout. main );
}
android.util.Log 提供了方便的日志处理 log.i(),log.e(),log.d() 等】
运行程序:
点击菜单效果如下:
点击begin Game 相应日志如下:
点击exit Game
返回主程序
在前例子的onCreate方法中,创建的TextView从默认的main.xml中读取解析。
public void onCreate (Bundle icicle) {
super .onCreate(icicle);
Log.i( "info" , "NotePad Create" );
setContentView(R.layout. main );
}
此时展示的内容为:
Layout下的main.xml中的东西如:
<TextView
android:layout_width= "fill_parent"
android:layout_height= "wrap_content"
android:text= " 欢迎使用 ,Gpx Notepad Game..." />
</LinearLayout>
根据 setContentView 开支持如下的参数:
void android.app.Activity.setContentView(View view)
Set the activity content to an explicit view.
参数为: View 显示相应的内容 .
所以采用 setContentView 的方法进行显示视图
通过自定义 TextView
public TextView getContentTextView(String contentText){
android.widget.TextView tv= new TextView( this );
tv.setBackgroundColor(android.graphics.Color. YELLOW );
tv.setText(contentText);
return tv;
}
修改 setContentView 的调用方法
this.setContentView(getContentTextView(" 开始自定义 Content Text View"));
运行效果为:
通过 TextView 设置背景颜色【注意 Android 平台中,没有 java.awt.Color ,通过 android.graphics.Color 来替代】
针对点击不同的菜单,可以通过 setContentView 来调整需要现实的 View.
public void beginGame(){
Log.i( "info" , "Begin game " );
setContent( "Begin Game..." );
}
public void pauseGame(){
Log.i( "info" , "Pause game" );
setContent( "Pause Game..." );
}
调整视图的方法为:
public void setContent(String contentInfo){
TextView tv=getContentTextView(contentInfo);
setContentView(tv);
}
【总结针对,菜单的不同动作,可以调整 ContentView 的显示视图,来完成对视图的调整处理操作】。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值