![【移動應(yīng)用開發(fā)技術(shù)】Android中怎么自定義新聞加載頁面_第1頁](http://file4.renrendoc.com/view/a07bb09020b66adbb0594d9a21522566/a07bb09020b66adbb0594d9a215225661.gif)
![【移動應(yīng)用開發(fā)技術(shù)】Android中怎么自定義新聞加載頁面_第2頁](http://file4.renrendoc.com/view/a07bb09020b66adbb0594d9a21522566/a07bb09020b66adbb0594d9a215225662.gif)
![【移動應(yīng)用開發(fā)技術(shù)】Android中怎么自定義新聞加載頁面_第3頁](http://file4.renrendoc.com/view/a07bb09020b66adbb0594d9a21522566/a07bb09020b66adbb0594d9a215225663.gif)
![【移動應(yīng)用開發(fā)技術(shù)】Android中怎么自定義新聞加載頁面_第4頁](http://file4.renrendoc.com/view/a07bb09020b66adbb0594d9a21522566/a07bb09020b66adbb0594d9a215225664.gif)
![【移動應(yīng)用開發(fā)技術(shù)】Android中怎么自定義新聞加載頁面_第5頁](http://file4.renrendoc.com/view/a07bb09020b66adbb0594d9a21522566/a07bb09020b66adbb0594d9a215225665.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么自定義新聞加載頁面
本篇文章給大家分享的是有關(guān)Android中怎么自定義新聞加載頁面,在下覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著在下一起來看看吧。1、首先的定義三個布局,為什么是三個,因為unkonw與loading的頁面可以使用同一個,而success的頁面是加載數(shù)據(jù)的頁面,這里不用定義1)loading頁面布局,只有一個進度條<?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)錯誤頁面有一張錯誤圖片與按鈕,點擊按鈕重新加載數(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ā)生錯誤,點擊重新加載
Button
btnError
=
(Button)
mErrorView.findViewById(R.id.page_bt);
btnError.setOnClickListener(new
OnClickListener()
{
@Override
public
void
onClick(View
v)
{
show();
}
});
showPages();
}5、全部代碼:/**
*
@描述
加載頁面
*
@項目名稱
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ò)錯誤
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ā)生錯誤,點擊重新加載
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);
//錯誤頁面顯示
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;
}
//
請求服務(wù)器
獲取服務(wù)器上數(shù)據(jù)
進行判斷
//
請求服務(wù)器
返回一個結(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
*
@項目名稱
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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人房屋借款合同格式版(2篇)
- 2025年二手辦公家具轉(zhuǎn)讓協(xié)議(2篇)
- 2025年個人平房租賃合同標(biāo)準(zhǔn)版本(三篇)
- 2025年產(chǎn)品購銷合同范例(2篇)
- 2025年五年級品德與社會教學(xué)總結(jié)模版(三篇)
- 2025年鄉(xiāng)村所有制企業(yè)職工勞動合同(2篇)
- 2025年主債權(quán)轉(zhuǎn)讓協(xié)議范文(2篇)
- 早教中心裝修合同模板-@-1
- 工業(yè)園區(qū)裝修分包合同樣本
- 汽車維修配件物流合同模板
- 中醫(yī)外治法課件
- 2025屆山東省濱州市三校聯(lián)考語文高三第一學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含解析
- 第15屆-17屆全國中學(xué)生物理競賽預(yù)賽試卷含答案
- 道路運輸企業(yè)主要負(fù)責(zé)人和安全生產(chǎn)管理人員安全考核題(公共部分題+專業(yè)部分題)及答案
- 外研版小學(xué)英語(三起點)六年級上冊期末測試題及答案(共3套)
- 月結(jié)合同模板
- 上海市黃浦區(qū)2024年數(shù)學(xué)六年級第一學(xué)期期末監(jiān)測試題含解析
- 2023電化學(xué)儲能電站消防安全標(biāo)準(zhǔn)鉛炭電池(鉛酸電池)
- 青島版五四制四年級數(shù)學(xué)上冊豎式計算100道
- DB11T 1322.94-2024安全生產(chǎn)等級評定技術(shù)規(guī)范 第94部分:救助管理機構(gòu)
- 新教材-外研版高中英語選擇性必修第二冊全冊教學(xué)課件(按單元排序-)
評論
0/150
提交評論