版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】BaseActivity公用界面的使用
在开发Android应用中,有时候会在多个界面中出现同样的布局如在顶部或底部显示菜单栏,时间显示等。为了避免麻烦,不用在每个界面都布局,这个时候我们用到了BaseActivity(不是系统的自己定义的)在BaseActivity布局里,我们可以把公用的布局先写出来,如界面顶部有返回按钮,有当前界面Title。在界面底部有时间显示栏,且时间和系统时间同步,不断刷新。在BaseActivity的布局里,我们留出LinearLayout这样一个线性布局,并且设置属性id,这样其他界面的layout放置到这个LinearLayout里就可以了。我们看一下具体的使用步骤:1、定义一个公用类的Activity我这里叫MyBaseActivity继承Activity并且该MyBaseActivity为抽象类abstract,因为里面有抽象方法2、定义一个基本类如FirstActivity继承MyBaseActivity并实现MyBaseActivity里面的抽象方法3、在MyBaseActivity类中有两个抽象方法onBaseCreare(Bundlebundle)和initView()其中onBaseCreare()方法顾名思义是实现界面显示的也就是类似于onCreate()中的setContentView(layout),initView()方法用于初始化一些数据,如Title的设置,时间显示等。4、在MyBaseActivity类中有getbtn_left()方法,可获取公共控件的控制。贴出详细代码:先看xml布局://activity_my_base.xml<LinearLayout
xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="10"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:weightSum="3"
>
<Button
android:id="@+id/button1_base"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="左按钮"
/>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="标题"
/>
<Button
android:id="@+id/button3_base"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="右按钮"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/layout_id"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="8.5"
android:orientation="horizontal"
>
</LinearLayout>
<LinearLayout
android:id="@+id/layout_bottom"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.5"
>
<TextView
android:id="@+id/time"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:gravity="center"
android:text="标题"
/>
</LinearLayout>
</LinearLayout>//activity_first.xml<LinearLayout
xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="1"
tools:context=".FirstActivity"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_weight="1"
android:orientation="vertical"
>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="into
SecondActivity"
/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="Button2"
/>
</LinearLayout>
</LinearLayout>//activity_second.xml<LinearLayout
xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="3"
>
<Button
android:id="@+id/button1_second"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="返
回"
/>
<Button
android:id="@+id/button12_second"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_weight="1"
android:text="Button"
/>
<Button
android:id="@+id/button3_second"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button"
/>
</LinearLayout>
</LinearLayout>//接下来看一下类中的源码首先是公共类MyBaseActivity
package
com.example.testbaseactivity;
import
java.text.SimpleDateFormat;
import
java.util.Date;
import
java.util.TimerTask;
import
android.annotation.SuppressLint;
import
android.app.Activity;
import
android.os.Bundle;
import
android.os.Handler;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.LinearLayout;
import
android.widget.Toast;
import
android.widget.LinearLayout.LayoutParams;
import
android.widget.TextView;
public
abstract
class
MyBaseActivity
extends
Activity
implements
OnClickListener{
//
内容区域的布局
private
View
contentView;
private
LinearLayout
layoutBody;
private
Button
btn1;
private
Button
btn2;
private
TextView
tv;
private
TextView
vTime;
private
String
timeString;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_base);
btn1
=
(Button)
findViewById(R.id.button1_base);
btn2
=
(Button)
findViewById(R.id.button3_base);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
tv
=
(TextView)
findViewById(R.id.title);
layoutBody
=
(LinearLayout)
findViewById(R.id.layout_id);
vTime
=
(TextView)
findViewById(R.id.time);
onBaseCreare(savedInstanceState);
initView();
}
/**
*
初始化界面
*
@param
bundle
*/
public
abstract
void
onBaseCreare(Bundle
bundle);
/**
*
初始化数据
*/
public
abstract
void
initView();
/**
*
底部栏刷新时间
*
刷新间隔1s
*/
public
void
setTime()
{
int
delay
=
0;
int
period
=
1000;//
循环间隔
1000ms
java.util.Timer
timer
=
new
java.util.Timer();
timer.scheduleAtFixedRate(new
TimerTask()
{
public
void
run()
{
timeString
=
getTime();
myhandler.sendEmptyMessage(0x0001);
}
},
delay,
period);
}
@SuppressLint("HandlerLeak")
private
Handler
myhandler
=
new
Handler()
{
public
void
dispatchMessage(android.os.Message
msg)
{
switch
(msg.what)
{
case
0x0001:
vTime.setText(timeString);
break;
}
}
};
@SuppressLint("SimpleDateFormat")
public
static
String
getTime()
{
Date
nowdate
=
new
Date();
//
当前时间
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat("yyyy-MM-dd
HH:mm:ss");
return
dateFormat.format(nowdate);
}
/**
*
设置标题
*
*
@param
title
*/
public
void
setTitle(String
title)
{
if
(null
!=
tv)
{
tv.setText(title);
}
}
/**
*
隐藏上方的标题栏
*/
public
void
hideTitleView()
{
if
(null
!=
btn1)
{
btn1.setVisibility(View.INVISIBLE);
}
}
public
void
setContentViewId(int
layoutId)
{
contentView
=
getLayoutInflater().inflate(layoutId,
null);
if
(layoutBody.getChildCount()
>
0)
{
layoutBody.removeAllViews();
}
if
(contentView
!=
null)
{
LayoutParams
params
=
new
LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
layoutBody.addView(contentView,
params);
}
}
/**
*
得到左边的按钮
*
*
@return
*/
public
Button
getbtn_left()
{
return
btn1;
}
/**
*
得到右边的按钮
*
*
@return
*/
public
Button
getbtn_right()
{
return
btn2;
}
@Override
public
void
onClick(View
arg0)
{
//
TODO
Auto-generated
method
stub
if(arg0.equals(btn1)){
Toast.makeText(MyBaseActivity.this,
"MyBaseActivitybtn1",
Toast.LENGTH_SHORT).show();
}
if(arg0.equals(btn2)){
Toast.makeText(MyBaseActivity.this,
"MyBaseActivitybtn2",
Toast.LENGTH_SHORT).show();
}
}
}//第一个界面FirstActivity
package
com.example.testbaseactivity;
import
android.content.Intent;
import
android.os.Bundle;
import
android.view.View;
import
android.widget.Button;
import
android.widget.Toast;
public
class
FirstActivity
extends
MyBaseActivity
{
private
Button
btn1;
private
Button
btn2;
private
Button
btn_left;
private
Button
btn_right;
@Override
public
void
onBaseCreare(Bundle
bundle)
{
setContentViewId(R.layout.activity_first);
btn_left
=
getbtn_left();
btn_right
=
getbtn_right();
findViewById();
}
@Override
public
void
initView()
{
setTitle("FirstActivity");
setTime();
}
public
void
findViewById(){
btn1
=
(Button)
findViewById(R.id.button1);
btn2
=
(Button)
findViewById(R.id.button2);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
}
@Override
public
void
onClick(View
arg0)
{
if(arg0.equals(btn1)){
Intent
intent
=
new
Intent(this,
SecondActivity.class);
startActivity(intent);
}
if(arg0.equals(btn2)){
Toast.makeText(FirstActivity.this,
"FirstActivitybtn2",
Toast.LENGTH_SHORT).show();
}
if(arg0.equals(btn_left)){
Toast.makeText(FirstActivity.this,
"FirstActivitybtn_left",
Toast.LENGTH_SHORT).show();
}
if(arg0.equals(btn_right)){
Toast.makeText(FirstActivity.this,
"FirstActivitybtn_right",
Toast.LENGTH_SHORT).show();
}
}
}//第二个界面package
com.example.testbaseactivity;
import
android.os.Bundle;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.Toast;
public
class
SecondActivity
extends
MyBaseActivity
implements
OnClickListener{
private
Button
btn;
@Override
public
void
onBaseCreare(Bundle
bundle)
{
setContentViewId(R.layout.activity_second);
btn
=
(Button)
findViewById(R.id.button1_second);
btn.setOnClickListener(this);
}
@Override
public
void
initView()
{
setTime();
setTitle("SecondActivity");
}
@Override
public
void
onClick(View
arg0)
{
//
TODO
Auto-generated
method
stub
if(arg0.eq
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度出租车座套供应周期与质量保证合同
- 电咖啡机用空咖啡胶囊市场发展现状调查及供需格局分析预测报告
- 椎间盘修复用医疗设备市场需求与消费特点分析
- 2024年度机械设备维修与租赁合同
- 轧线机电池制造机械市场发展现状调查及供需格局分析预测报告
- 理发座椅市场需求与消费特点分析
- 2024年度卫星通信技术应用合同
- 2024年度实验室搬迁及运输合同
- 2024年度房屋租赁合同(东莞版)
- 数据管理用计算机市场发展现状调查及供需格局分析预测报告
- 视网膜中央动脉阻塞课件整理
- 二十世纪西方文学课件
- 《影视美术设计》教学课件(全)
- 三级插花花艺师资格考试题库(重点培训400题)
- 2021-2022学年上海市宝山区七年级(上)期末数学试题及答案解析
- 五年级上册数学课件-《约分》 北师大版 (共16张PPT)
- Unit7 I am more outgoing than my sister.Grammar Focus-3c 课件-鲁教版英语七年级上册
- 创意知名画家达芬奇个人生平介绍PPT
- 高三语文教学工作计划学情分析3篇
- 模特面试登记表
- 餐饮业月度收入支出费用报表
评论
0/150
提交评论