【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中怎么自定義新聞加載頁面_第1頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中怎么自定義新聞加載頁面_第2頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中怎么自定義新聞加載頁面_第3頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中怎么自定義新聞加載頁面_第4頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中怎么自定義新聞加載頁面_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論