版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】BaseActivity公用界面的使用
在開(kāi)發(fā)Android應(yīng)用中,有時(shí)候會(huì)在多個(gè)界面中出現(xiàn)同樣的布局如在頂部或底部顯示菜單欄,時(shí)間顯示等。為了避免麻煩,不用在每個(gè)界面都布局,這個(gè)時(shí)候我們用到了BaseActivity(不是系統(tǒng)的自己定義的)在BaseActivity布局里,我們可以把公用的布局先寫(xiě)出來(lái),如界面頂部有返回按鈕,有當(dāng)前界面Title。在界面底部有時(shí)間顯示欄,且時(shí)間和系統(tǒng)時(shí)間同步,不斷刷新。在BaseActivity的布局里,我們留出LinearLayout這樣一個(gè)線性布局,并且設(shè)置屬性id,這樣其他界面的layout放置到這個(gè)LinearLayout里就可以了。我們看一下具體的使用步驟:1、定義一個(gè)公用類(lèi)的Activity我這里叫MyBaseActivity繼承Activity并且該MyBaseActivity為抽象類(lèi)abstract,因?yàn)槔锩嬗谐橄蠓椒?、定義一個(gè)基本類(lèi)如FirstActivity繼承MyBaseActivity并實(shí)現(xiàn)MyBaseActivity里面的抽象方法3、在MyBaseActivity類(lèi)中有兩個(gè)抽象方法onBaseCreare(Bundlebundle)和initView()其中onBaseCreare()方法顧名思義是實(shí)現(xiàn)界面顯示的也就是類(lèi)似于onCreate()中的setContentView(layout),initView()方法用于初始化一些數(shù)據(jù),如Title的設(shè)置,時(shí)間顯示等。4、在MyBaseActivity類(lèi)中有g(shù)etbtn_left()方法,可獲取公共控件的控制。貼出詳細(xì)代碼:先看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="標(biāo)題"
/>
<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="標(biāo)題"
/>
</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>//接下來(lái)看一下類(lèi)中的源碼首先是公共類(lèi)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{
//
內(nèi)容區(qū)域的布局
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);
/**
*
初始化數(shù)據(jù)
*/
public
abstract
void
initView();
/**
*
底部欄刷新時(shí)間
*
刷新間隔1s
*/
public
void
setTime()
{
int
delay
=
0;
int
period
=
1000;//
循環(huán)間隔
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();
//
當(dāng)前時(shí)間
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat("yyyy-MM-dd
HH:mm:ss");
return
dateFormat.format(nowdate);
}
/**
*
設(shè)置標(biāo)題
*
*
@param
title
*/
public
void
setTitle(String
title)
{
if
(null
!=
tv)
{
tv.setText(title);
}
}
/**
*
隱藏上方的標(biāo)題欄
*/
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();
}
}
}//第一個(gè)界面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();
}
}
}//第二個(gè)界面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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 舞臺(tái)設(shè)備招投標(biāo)合同管理要點(diǎn)
- 農(nóng)業(yè)環(huán)保治理技術(shù)機(jī)耕道施工合同
- 城市加油加氣站工程合同
- 歷史劇編劇招募協(xié)議
- 學(xué)校供水供電管網(wǎng)改造施工合同
- 2025外貿(mào)英語(yǔ)合同Contract
- 長(zhǎng)途客運(yùn)弱電施工合同
- 商業(yè)活動(dòng)現(xiàn)場(chǎng)制片協(xié)調(diào)書(shū)
- 體育賽事安全規(guī)程
- 環(huán)衛(wèi)行業(yè)清潔班組實(shí)名管理
- 遼寧省撫順市清原縣2024屆九年級(jí)上學(xué)期期末質(zhì)量檢測(cè)數(shù)學(xué)試卷(含解析)
- 2024-2025學(xué)年上學(xué)期福建高二物理期末卷2
- 2024四川阿壩州事業(yè)單位和州直機(jī)關(guān)招聘691人歷年管理單位遴選500模擬題附帶答案詳解
- 麻醉科工作計(jì)劃
- 2024年新進(jìn)員工試用期考核標(biāo)準(zhǔn)3篇
- 《英美文化概況》課件
- 四川省2023年普通高中學(xué)業(yè)水平考試物理試卷 含解析
- 2024-2025學(xué)年人教版八年級(jí)上學(xué)期數(shù)學(xué)期末復(fù)習(xí)試題(含答案)
- 【MOOC】中級(jí)財(cái)務(wù)會(huì)計(jì)-北京交通大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 2024年醫(yī)院康復(fù)科年度工作總結(jié)(4篇)
- 《園林政策與法規(guī)》課件
評(píng)論
0/150
提交評(píng)論