真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

android滾動,android滾動視圖

android 下拉滾動頁面怎么實(shí)現(xiàn)

以下是我自己花功夫編寫了一種非常簡單的下拉刷新實(shí)現(xiàn)方案,現(xiàn)在拿出來和大家分享一下。相信在閱讀完本篇文章之后,大家都可以在自己的項(xiàng)目中一分鐘引入下拉刷新功能 最近項(xiàng)目中需要用到ListView下拉刷新的功能,一開始想圖省事,在網(wǎng)上直接找一個現(xiàn)成的,可是嘗試了網(wǎng)上多個版本的下拉刷新之后發(fā)現(xiàn)效果都不 怎么理想。有些是因?yàn)楣δ懿煌暾蛴蠦ug,有些是因?yàn)槭褂闷饋硖珡?fù)雜,十全十美的還真沒找到。因此我也是放棄了在網(wǎng)上找現(xiàn)成代碼的想法,自己花功夫編寫 了一種非常簡單的下拉刷新實(shí)現(xiàn)方案,現(xiàn)在拿出來和大家分享一下。相信在閱讀完本篇文章之后,大家都可以在自己的項(xiàng)目中一分鐘引入下拉刷新功能。首先講一下實(shí)現(xiàn)原理。這里我們將采取的方案是使用組合View的方式,先自定義一個布局繼承自LinearLayout,然后在這個布局中加入下拉 頭和ListView這兩個子元素,并讓這兩個子元素縱向排列。初始化的時候,讓下拉頭向上偏移出屏幕,這樣我們看到的就只有ListView了。然后對 ListView的touch事件進(jìn)行監(jiān)聽,如果當(dāng)前ListView已經(jīng)滾動到頂部并且手指還在向下拉的話,那就將下拉頭顯示出來,松手后進(jìn)行刷新操 作,并將下拉頭隱藏。原理示意圖如下:那我們現(xiàn)在就來動手實(shí)現(xiàn)一下,新建一個項(xiàng)目起名叫PullToRefreshTest,先在項(xiàng)目中定義一個下拉頭的布局文件pull_to_refresh/apk/res/android"xmlns:tools="schemas/tools"android:id="@+id/pull_to_refresh_head"android:layout_width="fill_parent"android:layout_height="60dip" LinearLayoutandroid:layout_width="200dip"android:layout_height="60dip"android:layout_centerInParent="true"android:orientation="horizontal" RelativeLayoutandroid:layout_width="0dip"android:layout_height="60dip"android:layout_weight="3"ImageView android:id="@+id/arrow"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:src="@drawable/arrow"/ProgressBar android:id="@+id/progress_bar"android:layout_width="30dip"android:layout_height="30dip"android:layout_centerInParent="true"android:visibility="gone"http://RelativeLayoutLinearLayoutandroid:layout_width="0dip"android:layout_height="60dip"android:layout_weight="12"android:orientation="vertical" TextViewandroid:id="@+id/description"android:layout_width="fill_parent"android:layout_height="0dip"android:layout_weight="1"android:gravity="center_horizontalbottom"android:text="@string/pull_to_refresh" /TextViewandroid:id="@+id/updated_at"android:layout_width="fill_parent"android:layout_height="0dip"android:layout_weight="1"android:gravity="center_horizontaltop"android:text="@string/updated_at" //LinearLayout/LinearLayout/RelativeLayout 在這個布局中,我們包含了一個下拉指示箭頭,一個下拉狀態(tài)文字提示,和一個上次更新的時間。當(dāng)然,還有一個隱藏的旋轉(zhuǎn)進(jìn)度條,只有正在刷新的時候我們才會將它顯示出來。布局中所有引用的字符串我們都放在stringsmit();new HideHeaderTask()/apk/res/android"xmlns:tools="schemas/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity" com.example.pulltorefreshtest.RefreshableViewandroid:id="@+id/refreshable_view"android:layout_width="fill_parent"android:layout_height="fill_parent" ListViewandroid:id="@+id/list_view"android:layout_width="fill_parent"android:layout_height="fill_parent" /ListView/com.example.pulltorefreshtest.RefreshableView/RelativeLayout 可以看到,我們在自定義的RefreshableView中加入了一個ListView,這就意味著給這個ListView加入了下拉刷新的功能,就是這么簡單!然后我們再來看一下程序的主Activity,打開或新建MainActivity,加入如下代碼:復(fù)制代碼 代碼如下: public class MainActivity extends Activity {RefreshableView refreshableView;ListView listView;ArrayAdapterString adapter;String[] items = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L" };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);refreshableView = (RefreshableView) findViewById(R.id.refreshable_view);listView = (ListView) findViewById(R.id.list_view);adapter = new ArrayAdapterString(this, android.R.layout.simple_list_item_1, items);listView.setAdapter(adapter);refreshableView.setOnRefreshListener(new PullToRefreshListener() {@Overridepublic void onRefresh() {try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}refreshableView.finishRefreshing();}}, 0);}} 可 以看到,我們通過調(diào)用RefreshableView的setOnRefreshListener方法注冊了一個監(jiān)聽器,當(dāng)ListView正在刷新時就 會回調(diào)監(jiān)聽器的onRefresh方法,刷新的具體邏輯就在這里處理。而且這個方法已經(jīng)自動開啟了線程,可以直接在onRefresh方法中進(jìn)行耗時操 作,比如向服務(wù)器請求最新數(shù)據(jù)等,在這里我就簡單讓線程睡眠3秒鐘。另外在onRefresh方法的最后,一定要調(diào)用RefreshableView中的 finishRefreshing方法,這個方法是用來通知RefreshableView刷新結(jié)束了,不然我們的ListView將一直處于正在刷新的 狀態(tài)。不知道大家有沒有注意到,setOnRefreshListener這個方法其實(shí)是有兩個參數(shù)的,我們剛剛也是傳入了一個不起眼的 0。那這第二個參數(shù)是用來做什么的呢?由于RefreshableView比較智能,它會自動幫我們記錄上次刷新完成的時間,然后下拉的時候會在下拉頭中 顯示距上次刷新已過了多久。這是一個非常好用的功能,讓我們不用再自己手動去記錄和計算時間了,但是卻存在一個問題。如果當(dāng)前我們的項(xiàng)目中有三個地方都使 用到了下拉刷新的功能,現(xiàn)在在一處進(jìn)行了刷新,其它兩處的時間也都會跟著改變!因?yàn)樗⑿峦瓿傻臅r間是記錄在配置文件中的,由于在一處刷新更改了配置文件, 導(dǎo)致在其它兩處讀取到的配置文件時間已經(jīng)是更改過的了。那解決方案是什么?就是每個用到下拉刷新的地方,給setOnRefreshListener方法 的第二個參數(shù)中傳入不同的id就行了。這樣各處的上次刷新完成時間都是單獨(dú)記錄的,相互之間就不會再有影響。好了,全部的代碼都在這里了,讓我們來運(yùn)行一下,看看效果吧。效果看起來還是非常不錯的。我們最后再來總結(jié)一下,在項(xiàng)目中引入ListView下拉刷新功能只需三步:1. 在Activity的布局文件中加入自定義的RefreshableView,并讓ListView包含在其中。2. 在Activity中調(diào)用RefreshableView的setOnRefreshListener方法注冊回調(diào)接口。3. 在onRefresh方法的最后,記得調(diào)用RefreshableView的finishRefreshing方法,通知刷新結(jié)束。從此以后,在項(xiàng)目的任何地方,一分鐘引入下拉刷新功能妥妥的。好了,今天的講解到此結(jié)束,有疑問的朋友請在下面留言。源碼下載,請點(diǎn)擊這里

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、營口網(wǎng)站維護(hù)、網(wǎng)站推廣。

Android實(shí)現(xiàn)橫縱滾動標(biāo)題不動框架

用自定義標(biāo)題欄。

用自定義標(biāo)題欄,只要把系統(tǒng)自帶的標(biāo)題欄去掉就行。做法:requestWindowFeature(Window.FEATURE_NO_TITLE),自己再寫兩個布局塊(LinearLayout布局)充當(dāng)頂部和底部的標(biāo)題欄即可,中間使用ScrollView即可完成。

如果應(yīng)用需要添加水平滾動條,則可借助于另一個滾動視圖HorizontalScrollView來實(shí)現(xiàn)。

android 如何讓gallery自動滾動?

讓gallery自動滾動可以通過以下兩種方法實(shí)現(xiàn):

一、使用Timer和TimerTask類來完成圖片的自動定時滾動:

思路:循環(huán)調(diào)用Gallery類的onFling()方法。

代碼:

span style="white-space:pre" /spantask = new TimerTask() {

@Override

public void run() {

/**

* 參數(shù)1和2:手指在gallery上的動作

* 參數(shù)3和4:x方向和y方向的滾動的速度,-數(shù)表示向左滾,+數(shù)表示向右

*/

gallery.onFling(null, null, -750, 0);

}

};

timer.schedule(task, 1000, 5000);

span style="font-size:32px;"strong

/strong/span

span style="font-size:32px;"strong方式2:/strong/span

二、使用Handler消息機(jī)制完成

思路:子線程內(nèi)死循環(huán)使用handler每隔多長時間向主線程發(fā)送消息,通知gallery改變位置。

代碼:

子線程部分:

span style="white-space:pre" new Thread(new Runnable() {

span style="white-space:pre" /spanint flag = 1;

span style="white-space:pre" /span@Override

span style="white-space:pre" /spanpublic void run() {

span style="white-space:pre" /spanwhile (isalive) {

span style="white-space:pre" /span//images為裝圖片的集合

span style="white-space:pre" /spanif ((cur_index + 1) == images.size()) {

span style="white-space:pre" /spanflag = -1;

span style="white-space:pre" /span} else if (cur_index == 0) {

span style="white-space:pre" /spanflag = 1;

span style="white-space:pre" /span}

span style="white-space:pre" /spanMessage msg = handler.obtainMessage(MSG_UPDATE, cur_index,

span style="white-space:pre" /span0);

span style="white-space:pre" /spanhandler.sendMessage(msg);

span style="white-space:pre" /spantry {

span style="white-space:pre" /spanThread.sleep(4000);

span style="white-space:pre" /span} catch (InterruptedException e) {

span style="white-space:pre" /spane.printStackTrace();

span style="white-space:pre" /span}

span style="white-space:pre" /spanswitch (flag) {

span style="white-space:pre" /spancase 1:

span style="white-space:pre" /spancur_index++;

span style="white-space:pre" /spanbreak;

span style="white-space:pre" /spancase -1:

span style="white-space:pre" /spancur_index--;

span style="white-space:pre" /spanbreak;

span style="white-space:pre" /span}

span style="white-space:pre" /span}

span style="white-space:pre" /span}

span style="white-space:pre" /span}).start();/span

主線程部分:

private Handler handler = new Handler() {

public void handleMessage(Message msg) {

if (msg.what == MSG_UPDATE) {

gallery.setSelection(msg.arg1);

}

}

};

兩種方式的優(yōu)缺點(diǎn):

優(yōu)點(diǎn):

使用方式1來實(shí)現(xiàn),效果和手指拖動的效果一樣,滾動速度可以自己調(diào)。

使用方式2來實(shí)現(xiàn),可以使用繼承Gallery的子類,重寫onFling方法,返回false來實(shí)現(xiàn)手指拖動時圖片只滾動一張的效果。

缺點(diǎn):

使用方式1來實(shí)現(xiàn),當(dāng)你用手指拖動,就會發(fā)現(xiàn)圖片滾動的太快了,不是一張一張的滾動的,沒法使用繼承Gallery的子類,重寫onFling方法,返回false來實(shí)現(xiàn)手

使用方式2來實(shí)現(xiàn) ,效果沒那么好看,圖片說換就換了,沒緩沖,滾動速度沒法控制。

android 編程怎么添加滾動條

給TextView加上滾動條非常簡單,只需要把TextView標(biāo)簽放在ScrollView標(biāo)簽中

[html] view plain copy print?

ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content"

TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/txtViewHtml" /

/ScrollView

android中怎樣得到滾動的距離

可以設(shè)置ListView的滾動事件

ListView.setOnScrollListener(OnScrollListener listener)

OnScrollListener是滾動事件監(jiān)聽接口

有兩個需要實(shí)現(xiàn)的方法

public void onScrollStateChanged(AbsListView view, int scrollState) ;

public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) ;

幾個參數(shù)的意義分別為

AbsListView view所監(jiān)聽的listview對象

int firstVisibleItem能看見的第一個item的位置

int visibleItemCount能看見的item的數(shù)量

int totalItemCount所有item的總數(shù)

代碼如下,我們在onScroll中進(jìn)行判斷

lvMatch.setOnScrollListener(new OnScrollListener() {

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

}

@Override

public void onScroll(AbsListView view, int firstVisibleItem,

int visibleItemCount, int totalItemCount) {

if(firstVisibleItem == 0){

//已滾動到最頂部

}

if(firstVisibleItem+visibleItemCount == totalItemCount){

//滾動到底部

}

}

});

Android 的屏幕滾動操作不如 iPhone 流暢順滑,是什么原因?qū)е碌? ...

Android 的屏幕滾動操作不如 iPhone 流暢順滑,兩者的系統(tǒng)架構(gòu)不同導(dǎo)致。

1.首先是iOS對屏幕反應(yīng)的優(yōu)先級是最高的(Touch-Media-Service-Core架構(gòu)),也就是說用戶只要碰了屏幕,系統(tǒng)最優(yōu)先去處理屏幕顯示,然后才是其他。而安卓則是傳統(tǒng)的Application-Framework-Library(JAVA虛擬機(jī))-Kernal架構(gòu),圖形圖像處理在Library這層,優(yōu)先級不是那么高。如果系統(tǒng)負(fù)荷較高,則無暇顧及用戶觸摸的反應(yīng)。

2.其次是iOS對圖像的各種特效處理(放大、縮小、旋轉(zhuǎn)、滾動等)都是基于GPU硬件加速的,與APP無關(guān)。這是APPLE采用封閉式硬件的優(yōu)勢。而安卓為了適應(yīng)不同的手機(jī)硬件,做不到這點(diǎn),很多APP的圖形特效都靠APP自己去進(jìn)行軟件渲染,效率低。最新的4.1已經(jīng)改進(jìn),但也無法做到所有特效都靠GPU硬件加速。

3.就是安卓的JAVA虛擬機(jī):相對iOS的Objectiv-C,JAVA天生運(yùn)行效率低下,需要占用大量內(nèi)存來換取執(zhí)行速度,而不定期的內(nèi)存自動回收機(jī)制,直接導(dǎo)致安卓界面的卡頓現(xiàn)象,無論如何優(yōu)化也不可能改掉。2.3版安卓就是為改善此設(shè)計而發(fā)布:引入了一種新的并行內(nèi)存回收機(jī)制來減輕這種卡頓影響,但也僅僅是減輕,而無法徹底消除。也因此2.3版成為安卓重要的里程碑。

4.當(dāng)然如果android程序軟件在代碼層面存在一些明顯的bug,也會導(dǎo)致滑動卡頓,需要更新數(shù)據(jù)的時候進(jìn)行合理的刷新。


名稱欄目:android滾動,android滾動視圖
網(wǎng)站地址:http://weahome.cn/article/dsggeho.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部