从零开始学Android(三)
来源:互联网 发布:舞台效果图设计软件 编辑:程序博客网 时间:2024/05/16 17:12
好,今天继续补昨天的坑。。。
已经做好了一个带有按钮的活动,我们下一步进行隐藏标题栏。开码!
一. 隐藏标题栏
可以在onCreate方法中添加代码:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.first_layout); }
用到的方法很简单,字面意思就是对窗体进行设置。需要注意此方发要在setContentView方法之前使用。此方法的参数可以有:
// 1.DEFAULT_FEATURES:系统默认状态,一般不需要指定
// 2.FEATURE_CONTEXT_MENU:启用ContextMenu,默认该项已启用,一般无需指定
// 3.FEATURE_CUSTOM_TITLE:自定义标题。当需要自定义标题时必须指定。如:标题是一个按钮时
// 4.FEATURE_INDETERMINATE_PROGRESS:不确定的进度
// 5.FEATURE_LEFT_ICON:标题栏左侧的图标
// 6.FEATURE_NO_TITLE:无标题
// 7.FEATURE_OPTIONS_PANEL:启用“选项面板”功能,默认已启用。
// 8.FEATURE_PROGRESS:进度指示器功能
// 9.FEATURE_RIGHT_ICON:标题栏右侧的图标
二. 活动中使用Toast
Toast是一种信息提醒方式,信息会在显示一段时间后自动消失,并且不占用任何屏幕空间。
首先要定义弹出Toast信息的触发点,在这里就利用当前活动的按钮来触发。
还是在onCreate方法中进行配置:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.first_layout); Button button1 = (Button) findViewById(R.id.button_1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(FirstActivity.this, "你点击了按钮", Toast.LENGTH_SHORT).show(); } }); }
研究一下这一大堆什么意思:
首先声明了一个Button类的实例命名为button1,在这里有些东西要说明:
活动里显示的控件都叫View,View类是所有控件的父类。若要在活动里获取View,可以用如下方法:
TextView textView=(TextView)findViewBy(R.id.textView)
方法通过ID而获取了一个View对象,通过向下转型而变成Button对象。
然后,我们的目的是点按按钮触发消息,于是利用方法setOnClickListener:
这个方法如字面意思——注册一个点击监听器,他的参数是接口实现匿名类,这个接口必须重写接口方法onClick。
而这个方法的作用就是当监听到点击按钮时,执行其内部代码。内部代码中,利用Toast类调用makeText方法,此方法有三个参数:第一个参数context,即上下文,由于活动本身就是Context对象。如果都是在Activity中使用那没什么区别,都表示当前Activity的实例,如果是在内部类中使用的话Activity.this,还是Activity的实例,但是this就表示当前内部类对象了。所以用Activity.this(这里是FirstActivity.this)即可。第二个参数是Toast消息显示的文本内容。第三个参数是显示的时间长度。
三. 在活动中使用MENU
首先menu类似于按钮,他是一种资源布局。需要在res文件夹下创建资源,这里创建文件夹menu,在文件夹里创建XML布局文件;命名为main。
我们想在menu里创建两个选项(条目);需要在XML里进行配置:
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/add_item" android:title="添加" /> <item android:id="@+id/remove_item" android:title="删除" /></menu>
同样的,需要在活动里进行配置,对onCreateOptionsMenu进行重写:
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; }
此方法通过getMenuInflater方法得到一个MenuInflater对象,在调用他的inflate方法给当前活动创建菜单,inflate方法接受两个参数,第一个接受ID用于指定通过哪一个资源文件来创建菜单,第二个参数指定菜单将添加到哪一个Menu对象之中,这里可以使用onCreateOptionsMenu方法传入的menu参数,之后给这个方法返回true,表示允许创建该菜单。到这里菜单就可以显示出来了。
下面给菜单添加功能,在活动中重写onOptionsItenSelected方法:
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.add_item: Toast.makeText(this, "点击添加", Toast.LENGTH_SHORT).show(); break; case R.id.remove_item: Toast.makeText(this, "点击删除", Toast.LENGTH_SHORT).show(); break; default: } return true; }
利用该方法,定义菜单响应。利用item.getItemId方法对菜单选项ID进行选择判断,接着利用Toast.makeTest.show方法进行显示消息响应。
在AVD运行的时候,发现有些SDK版本并不支持menu键,这里我用的安卓2.3.3版本(API10)可以使用menu键。
四. 销毁一个活动
这个很简单,只需要在按钮监听器代码处替换
finish();
就可以完成。
四. 使用显式Intent
先来说下Intent,Intent是android程序中个组件之间进行交互的一种重要方式。他不仅可以指明当前组件想要执行的操作,还可以在不同组件之间进行数据传递。Intent一般可以被用于启动服务、启动活动以及发送广播等场景。Intent大致分为显式与隐式两种用法。
显示用法,Intent利用构造函数重载
Intent(Context packageContext, Class
@Override public void onClick(View v) { Intent intent = new Intent(FirstActivity.this, SecondActivity.class); startActivity(intent); }
现在来配置第二个活动SecondActivity布局:
<Button android:id="@+id/button_2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button 2" />
之后新建活动,与第一个活动一样,就不贴代码了。最后在AndroidManifest.XML文件中进行注册。只需要在第一个Activity后边增加新的活动,格式和第一个活动一样,但不需要infent-filter来表示第一个执行:
</activity> <activity android:name=".SecondActivity" > </activity> </application>
在AVD上运行一下看看吧。昨天就是码到这里出了些没明奇妙的错误,所以接下来的内容放到下一篇。
- 从零开始学Android(三)
- 从零开始学Makefile(三)
- 从零开始学android<Service服务.四十三.>
- 从零开始学Android (1)
- 从零开始学Android (2)
- 从零开始学Android (3)
- 从零开始学Android (4)
- 从零开始学Android(〇)
- 从零开始学Android(一)
- 从零开始学Android(二)
- 从零开始学Android(四)
- 从零开始学Android(五)
- 从零开始学Android(六)
- 从零开始学Android(七)
- 从零开始学Android(八)
- 从零开始学Android(九)
- Android从零开始(三)
- 从零开始学HTML(三)--HTML 元素
- HDU-5778 abs
- window 下搭建maven nexus私服
- 在 Mac OS X 终端里使用 Solarized 配色方案
- 牛客网上,华为迷宫问题
- Masonry使用心得
- 从零开始学Android(三)
- 排序算法
- wchar_t和char,WCHAR和CHAR的区别和互相转化
- C#控制台 通过控制台的属性--字体设置让其显示的字体大一点
- Coderforces 274A k-Multiple Free Set【二分】
- 判断Intent是否存在,PakageManager.GET_ACTIVITIES报错
- UE4接口的使用及对象回收机制
- 华为OJ 初级:合唱队
- 网狐经典版机器人配置