Android開(kāi)發(fā)之StackView用法和遇到的坑分析
本文實(shí)例分析了Android開(kāi)發(fā)之StackView用法和遇到的坑。分享給大家供大家參考,具體如下:
關(guān)于StackView網(wǎng)上已經(jīng)有很多內(nèi)容了
這里我著重將一些使用過(guò)程中遇到的坑吧
先看下效果,和很多人一樣

很多人加完圖片后發(fā)現(xiàn)圖片不顯示,這里可能有兩個(gè)原因:
一、直接閃退,然后報(bào)錯(cuò)。一般會(huì)有頭這么一句話:
Failed to allocate a 74649612 byte allocation with 16765728 free bytes and 59MB until OOM
提示一個(gè)很明白了,內(nèi)存溢出,具體原因是關(guān)于Android的內(nèi)存分配機(jī)制的這里就不詳細(xì)講了
這不經(jīng)事StackView常見(jiàn)的問(wèn)題,所有添加圖片的活動(dòng)都可能發(fā)生
怎么辦呢?主要有兩種辦法:
1.暴力直接,用圖片轉(zhuǎn)換器(或者直接用windows自帶畫(huà)圖工具)將圖進(jìn)行壓縮。但很明顯治標(biāo)不治本。
2.將圖片轉(zhuǎn)為Bitmap,然后再將其質(zhì)量和大小進(jìn)行壓縮。
二、加完圖片后發(fā)現(xiàn)圖片不顯示
這個(gè)一般來(lái)說(shuō)是代碼本身的問(wèn)題
檢查下你List對(duì)象和Adapter對(duì)象的一些名字是否一致
這里以MainActivity為例(改編自瘋狂Android)
public class MainActivity extends Activity {
StackView stackView ;
int[] imageIds = new int[]{
R.drawable.a0,R.drawable.a00,R.drawable.a1,R.drawable.a02,
R.drawable.a1,R.drawable.a2, R.drawable.a3
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
stackView = (StackView) findViewById(R.id.mStackView);
//創(chuàng)建一個(gè)list 對(duì)象 元素是MAP
List<Map<String,Object>> listItems =
new ArrayList<Map<String,Object>>();
for( int i = 0 ; i < imageIds.length ; i++ ){
Map<String,Object> listItem = new HashMap<String, Object>();
listItem.put("image",imageIds[i]);
listItems.add(listItem);
}
//創(chuàng)建一個(gè)Simple Adapter
SimpleAdapter simpleAdapter = new SimpleAdapter(this,
listItems,
R.layout.photo,
new String[]{"image"},
new int[]{R.id.image1});
stackView.setAdapter(simpleAdapter);
}
public void prev(View source){
//顯示上一個(gè)組件
stackView.showPrevious();
}
public void next(View source){
//顯示下一個(gè)組件
stackView.showNext();
}
}
注意檢查一下listItems和simpleAdapter用來(lái)存放圖片的變量名是否一致
比如我這兒是叫做image
這是比較常見(jiàn)的一種錯(cuò)誤,如果是其他錯(cuò)誤則需要大家再去Google一下了
鑒于很多同學(xué)表示不知道cell (我這里叫做photo)這個(gè)layout是什么
其實(shí)就是一個(gè)很簡(jiǎn)單的layout 向自定義listView等等,很多時(shí)候都得用上這種自定義的layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image1"
android:layout_width="200dp"
android:layout_height="200dp"
android:scaleType="fitXY"
android:layout_gravity="center"/>
</LinearLayout>
我遇到的坑大概就這些了,最后附上布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<StackView
android:id="@+id/mStackView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:loopViews="true"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="prev"
android:text="上一個(gè)" />
<Button
android:id="@+id/button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="next"
android:text="下一個(gè)" />
</LinearLayout>
</RelativeLayout>
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Android控件用法總結(jié)》、《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android數(shù)據(jù)庫(kù)操作技巧總結(jié)》及《Android資源操作技巧匯總》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
相關(guān)文章
android 完全退出應(yīng)用程序?qū)崿F(xiàn)代碼
這篇文章主要介紹了在android中完全退出應(yīng)用的實(shí)現(xiàn)代碼,多種實(shí)現(xiàn)方法,大家可以根據(jù)需求選擇2013-06-06
Android版微信跳一跳小游戲利用技術(shù)手段達(dá)到高分的操作方法
朋友圈到處都是曬微信跳一跳小游戲的,很多朋友能達(dá)到二三百分了。下面小編給大家分享Android版微信跳一跳小游戲利用技術(shù)手段達(dá)到高分的操作方法,需要的朋友一起看看吧2018-01-01
android實(shí)現(xiàn)定時(shí)拍照并發(fā)送微博功能
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)定時(shí)拍照并發(fā)送微博功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
Android中驗(yàn)證碼倒計(jì)時(shí)的簡(jiǎn)單實(shí)現(xiàn)方法示例
最近開(kāi)發(fā)中在注冊(cè)獲取驗(yàn)證碼時(shí)候需要一個(gè)倒計(jì)時(shí)按鈕,找了相關(guān)的資料終于實(shí)現(xiàn)了,所以現(xiàn)在分享給大家,下面這篇文章主要給大家介紹了關(guān)于Android中驗(yàn)證碼倒計(jì)時(shí)簡(jiǎn)單實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考借鑒。2017-06-06
Android小組件添加到主屏幕(手機(jī)桌面)的方法實(shí)例
很多在多年前使用過(guò)Android手機(jī)的朋友,可能對(duì)于Android 4.0時(shí)代盛行的桌面小組件功能有著很深的印象,下面這篇文章主要給大家介紹了關(guān)于Android小組件添加到主屏幕(手機(jī)桌面)的相關(guān)資料,需要的朋友可以參考下2023-06-06
Android Studio不能獲取遠(yuǎn)程依賴(lài)包的完美解決方法
這篇文章主要介紹了Android Studio不能獲取遠(yuǎn)程依賴(lài)包的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11
Android App中使用AudioManager類(lèi)來(lái)編寫(xiě)音頻播放器
這篇文章主要介紹了Android App中使用AudioManager類(lèi)來(lái)編寫(xiě)音樂(lè)播放器的方法,文中舉了一個(gè)簡(jiǎn)單的例子實(shí)現(xiàn)了基礎(chǔ)的播放暫停和靜音等功能,需要的朋友可以參考下2016-04-04
Android游戲開(kāi)發(fā)學(xué)習(xí)②焰火綻放效果實(shí)現(xiàn)方法
這篇文章主要介紹了Android游戲開(kāi)發(fā)學(xué)習(xí)②焰火綻放效果實(shí)現(xiàn)方法,以實(shí)例形式詳細(xì)分析了Android中粒子對(duì)象類(lèi)Particle類(lèi)和粒子集合類(lèi)ParticleSet類(lèi)及物理引擎ParticleThread類(lèi) 的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10

