版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中怎么自定義新聞加載頁面
本篇文章給大家分享的是有關(guān)Android中怎么自定義新聞加載頁面,在下覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著在下一起來看看吧。1、首先的定義三個(gè)布局,為什么是三個(gè),因?yàn)閡nkonw與loading的頁面可以使用同一個(gè),而success的頁面是加載數(shù)據(jù)的頁面,這里不用定義1)loading頁面布局,只有一個(gè)進(jìn)度條<?xml
version="1.0"
encoding="utf-8"?>
<RelativeLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
/>
</RelativeLayout>2)空頁面只有一張圖片,顯示沒有數(shù)據(jù)<?xml
version="1.0"
encoding="utf-8"?>
<RelativeLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_empty_page"
/>
</RelativeLayout>3)錯(cuò)誤頁面有一張錯(cuò)誤圖片與按鈕,點(diǎn)擊按鈕重新加載數(shù)據(jù)<?xml
version="1.0"
encoding="utf-8"?>
<FrameLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
>
<ImageView
android:id="@+id/page_iv"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:scaleType="centerInside"
android:src="@drawable/ic_error_page"
/>
<Button
android:id="@+id/page_bt"
android:layout_width="wrap_content"
android:layout_height="34dp"
android:layout_below="@id/page_iv"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:background="@drawable/btn_bg"
android:ellipsize="end"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:singleLine="true"
android:text="@string/load_error"
android:textColor="#ff717171"
android:textSize="14dp"
/>
</RelativeLayout>
</FrameLayout>4、初始化控件/**
*
初始化加載三種布局
*/
private
void
init()
{
mLoadingView
=
initView(R.layout.loadpage_loading);
mEmptyView
=
initView(R.layout.loadpage_empty);
mErrorView
=
initView(R.layout.loadpage_error);
//如果發(fā)生錯(cuò)誤,點(diǎn)擊重新加載
Button
btnError
=
(Button)
mErrorView.findViewById(R.id.page_bt);
btnError.setOnClickListener(new
OnClickListener()
{
@Override
public
void
onClick(View
v)
{
show();
}
});
showPages();
}5、全部代碼:/**
*
@描述
加載頁面
*
@項(xiàng)目名稱
App_Shop
*
@包名
com.android.shop.view
*
@類名
LoadingPage
*
@author
chenlin
*
@date
2014年3月29日
下午8:49:39
*/
public
abstract
class
LoadingPage
extends
FrameLayout
{
private
final
static
int
STATE_UNKNOW
=
0;
private
final
static
int
STATE_LOADING
=
1;
private
final
static
int
STATE_ERROT
=
2;
private
final
static
int
STATE_EMPTY
=
3;
private
final
static
int
STATE_SUCCESS
=
4;
//
不能使用靜態(tài)的,
private
int
currentState
=
STATE_UNKNOW;
private
View
mLoadingView;
//
加載
private
View
mEmptyView;
//
空頁面
private
View
mErrorView;
//
網(wǎng)絡(luò)錯(cuò)誤
private
View
mSuccessView;
//
加載成功后的頁面
private
Context
mContext;
/**
*
定義枚舉類型
*/
public
enum
LoadResult
{
error(STATE_ERROT),
empty(STATE_EMPTY),
success(STATE_SUCCESS);
int
value;
LoadResult(int
value)
{
this.value
=
value;
}
public
int
getValue()
{
return
value;
}
}
public
LoadingPage(Context
context,
AttributeSet
attrs,
int
defStyle)
{
super(context,
attrs,
defStyle);
mContext
=
context;
init();
}
public
LoadingPage(Context
context,
AttributeSet
attrs)
{
this(context,
attrs,
0);
}
public
LoadingPage(Context
context)
{
this(context,
null);
}
/**
*
初始化加載三種布局
*/
private
void
init()
{
mLoadingView
=
initView(R.layout.loadpage_loading);
mEmptyView
=
initView(R.layout.loadpage_empty);
mErrorView
=
initView(R.layout.loadpage_error);
//如果發(fā)生錯(cuò)誤,點(diǎn)擊重新加載
Button
btnError
=
(Button)
mErrorView.findViewById(R.id.page_bt);
btnError.setOnClickListener(new
OnClickListener()
{
@Override
public
void
onClick(View
v)
{
show();
}
});
showPages();
}
public
View
initView(int
resId)
{
View
view
=
View.inflate(mContext,
resId,
null);
if
(view
!=
null)
{
this.addView(view,
new
FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
return
view;
}
return
null;
}
private
void
showPages()
{
//加載頁面顯示與不顯示
mLoadingView.setVisibility(currentState
==
STATE_UNKNOW
||
currentState
==
STATE_LOADING
?
View.VISIBLE
:
View.GONE);
//空頁面
mEmptyView.setVisibility(currentState
==
STATE_EMPTY
?
View.VISIBLE
:
View.GONE);
//錯(cuò)誤頁面顯示
mErrorView.setVisibility(currentState
==
STATE_ERROT
?
View.VISIBLE
:
View.GONE);
//如果數(shù)據(jù)加載成功了,
if
(currentState
==
STATE_SUCCESS)
{
if
(mSuccessView
==
null)
{
//加載成功頁面信息,成功后的頁面就是新聞頁面信息
mSuccessView
=
createSuccessView();
//添加頁面到framelayout里
addView(mSuccessView,
new
FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
mSuccessView.setVisibility(View.VISIBLE);
}else
{
mSuccessView.setVisibility(View.GONE);
}
}
}
public
void
show()
{
if
(currentState
==
STATE_EMPTY
||
currentState
==
STATE_ERROT)
{
currentState
=
STATE_LOADING;
}
//
請(qǐng)求服務(wù)器
獲取服務(wù)器上數(shù)據(jù)
進(jìn)行判斷
//
請(qǐng)求服務(wù)器
返回一個(gè)結(jié)果
ThreadManager.getInstance().createLongPool().execute(new
Runnable()
{
@Override
public
void
run()
{
//從服務(wù)器加載數(shù)據(jù),得到返回的狀態(tài)信息
final
LoadResult
result
=
loadFromServer();
if
(result
!=
null)
{
Util.runOnUiThread(new
Runnable()
{
@Override
public
void
run()
{
currentState
=
result.getValue();
//顯示
showPages();
}
});
}
}
});
showPages();
}
public
abstract
View
createSuccessView();
public
abstract
LoadResult
loadFromServer();
}三、使用:/**
*
@描述
fragment
*
@項(xiàng)目名稱
App_Shop
*
@包名
com.android.shop.fragment
*
@類名
BaseFragment
*
@author
chenlin
*
@date
2014年3月28日
下午10:33:59
*/
public
abstract
class
BaseFragment<T>
extends
Fragment
{
private
LoadingPage
mLoadingPage;
@Override
public
View
onCreateView(LayoutInflater
inflater,
ViewGroup
container,
Bundle
savedInstanceState)
{
if
(mLoadingPage
==
null)
{
mLoadingPage
=
new
LoadingPage(getActivity()){
@Override
public
View
createSuccessView()
{
return
BaseFragment.this.createSuccessView();
}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東白云學(xué)院《平面廣告》2023-2024學(xué)年第一學(xué)期期末試卷
- 共青科技職業(yè)學(xué)院《智能汽車傳感技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東財(cái)經(jīng)大學(xué)《古代女性文學(xué)研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 貨運(yùn)司機(jī)培訓(xùn)課件
- 贛南衛(wèi)生健康職業(yè)學(xué)院《JavaWeb程序設(shè)計(jì)SIT》2023-2024學(xué)年第一學(xué)期期末試卷
- 2022年上海注冊(cè)會(huì)計(jì)師《審計(jì)》考試題庫(含典型題和真題)
- 贛東學(xué)院《小學(xué)跨學(xué)科教育研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 七年級(jí)生物上冊(cè)第三單元生物圈中的綠色植物第五章綠色植物與生物圈中的碳-氧平衡第一節(jié)光合作用吸收二氧化碳釋放氧氣教案新版新人教版1
- 七年級(jí)道德與法治上冊(cè)第一單元成長(zhǎng)的節(jié)拍第一課中學(xué)時(shí)代第一框中學(xué)序曲教案新人教版
- 《常見案例分析類型》課件
- 安徽省合肥市廬江縣2022-2023學(xué)年八年級(jí)上學(xué)期期末物理試卷(含答案)
- 造價(jià)年度工作總結(jié)
- 護(hù)理人員應(yīng)急預(yù)案培訓(xùn)課件:居家病人護(hù)理與應(yīng)急服務(wù)
- 液壓與氣動(dòng)傳動(dòng)CAI第1章
- 廣告?zhèn)髅叫袠I(yè)操作人員安全培訓(xùn)
- SB-T 11238-2023 報(bào)廢電動(dòng)汽車回收拆解技術(shù)要求
- ICU呼吸系統(tǒng)護(hù)理的專業(yè)技巧與注意事項(xiàng)
- 藝術(shù)類院校加強(qiáng)藝術(shù)法教育的思考
- 銀行商會(huì)戰(zhàn)略合作協(xié)議書
- 2025年日歷表帶農(nóng)歷【陰歷】完美打印版
- 重點(diǎn)實(shí)驗(yàn)室申報(bào)
評(píng)論
0/150
提交評(píng)論