欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android開發(fā)之ImageSwitcher相冊功能實例分析

 更新時間:2019年03月22日 10:13:41   作者:水中魚之1999  
這篇文章主要介紹了Android開發(fā)之ImageSwitcher相冊功能,結(jié)合實例形式分析了Android ImageSwitcher相冊的原理、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下

本文實例講述了Android開發(fā)之ImageSwitcher相冊功能。分享給大家供大家參考,具體如下:

簡介:

1.ImageSwitcher是viewSwitcher的子類,所以ImageSwitcher繼承了ViewSwitcher素有的特性

2.作為ViewSwitcher的子類,它比ViewSwitcher使用更加方便,主要體現(xiàn)在:①. 重寫了setNext() ②. 重寫了showPrevious()方法。所以其實用起來,要比ViewSwitcher更為方便。

3.中重要的是:ImageSwitcher增加了圖片切換動畫,使得圖片的切換更加自然

這里看下運行效果:

這個例子中,看考了瘋狂Android講義,采用ImageSwicher結(jié)合Gridview實現(xiàn)的,一下問布局文件:

<?xml version="1.0" encoding="utf-8" ?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:gravity="center_horizontal">
    <!--定義一個GridView組件-->
    <GridView
      android:id="@+id/grid01"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:listSelector="@null"
      android:numColumns="3"
      android:horizontalSpacing="2dp"
      android:verticalSpacing="2dp"
      android:gravity="center">
    </GridView>
    <!--定義一個ImageSwitcher組件-->
    <ImageSwitcher
      android:id="@+id/switcher"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_gravity="center_horizontal"
      android:padding="50dp"
      android:inAnimation="@android:anim/fade_in"
      android:outAnimation="@android:anim/fade_out"
      android:background="@color/colorPrimaryDark"
      android:visibility="gone">
    </ImageSwitcher>
</RelativeLayout>

關(guān)于GridView 有兩種常用的監(jiān)聽事件:

gridView.setOnItemSelectedListenergridView.setOnItemClickListener

關(guān)于ImageSwitcher 設(shè)置ImageSwitcher 采用了imageSwitcher.setFactory 方法:

public class MainActivity extends Activity {
  int[] imageId = new int[]{
      R.drawable.a0,R.drawable.a1,R.drawable.a2,R.drawable.a4,
      R.drawable.a5,R.drawable.a6,R.drawable.a7,R.drawable.a8,
      R.drawable.a9,R.drawable.a00,R.drawable.a02,R.drawable.a02,
  };
  ImageSwitcher imageSwitcher ;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //創(chuàng)建一個List對象,list對象的元素是Map
    List<Map<String,Object>> listitems = new ArrayList<Map<String, Object>>();
    for (int i = 0 ; i < imageId.length ; i++ ){
      Map<String,Object> listitem = new HashMap<String, Object>();
      listitem.put("image",imageId[i]);
      listitems.add(listitem);
    }
    //獲取顯示圖片的ImageSwitcher
    imageSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
    //為ImageSwitcher設(shè)置動畫效果
    imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
      @Override
      public View makeView() {
        //創(chuàng)建ImageView對象
        ImageView imageView = new ImageView(MainActivity.this);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        imageView.setLayoutParams(new ImageSwitcher.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT));
        //返回ImageView對象
        return imageView;
      }
    });
    //創(chuàng)建一個SimpleAdapter
    SimpleAdapter simpleAdapter = new SimpleAdapter(this,listitems,R.layout.cell,new String[]{"image"},new int[]{R.id.image1});
    GridView gridView = (GridView) findViewById(R.id.grid01);
    //為gridView設(shè)置adapter
    gridView.setAdapter(simpleAdapter);
    //添加列表選中監(jiān)聽事件
    gridView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
      @Override
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        imageSwitcher.setVisibility(View.VISIBLE);
        imageSwitcher.setClickable(true);
        //顯示當(dāng)前選中圖片
        imageSwitcher.setImageResource(imageId[position]);
      }
      @Override
      public void onNothingSelected(AdapterView<?> parent) {
      }
    });
    //添加列表被單擊的監(jiān)聽器
    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        imageSwitcher.setVisibility(View.VISIBLE);
        imageSwitcher.setClickable(true);
        //顯示被單擊圖片
        imageSwitcher.setImageResource(imageId[position]);
      }
    });
    //為imageSwitcher添加監(jiān)聽事件
    imageSwitcher.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        imageSwitcher.setVisibility(View.GONE);
        imageSwitcher.setClickable(false);
      }
    });
    imageSwitcher.setClickable(false);
  }
}

幾點值得注意的:

  • 由于SimpleAdapter 對象 是根據(jù)Map 建立的 ,所以他們的Key一定要相同才行,否則無法生成。
  • 關(guān)于閃退現(xiàn)象:我才用的是經(jīng)過壓縮過的圖片,如果是加載高清大圖很可能出現(xiàn)OOM現(xiàn)象,這是我們需要對圖片進行壓縮,具體可以參照:http://www.dbjr.com.cn/article/158268.htm
  • 這里cell文件還是和往常一樣,只是個簡單的ImageView罷了,注意設(shè)置它的 id 要與活動中調(diào)用它的地方相同,這里就不過多描述了。

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android圖形與圖像處理技巧總結(jié)》、《Android開發(fā)入門與進階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設(shè)計有所幫助。

相關(guān)文章

  • 揭秘Android視圖繪制的流程步驟

    揭秘Android視圖繪制的流程步驟

    在Android的UI中,View是至關(guān)重要的一個組件,它是用戶界面的基本構(gòu)建塊,在View的繪制過程中,涉及到很多重要的概念和技術(shù),本文將詳細介紹Android?View的繪制過程,讓你能夠更好地理解和掌握Android的UI開發(fā),需要的朋友可以參考下
    2023-06-06
  • Android破解微信獲取聊天記錄和通訊錄信息(靜態(tài)方式)

    Android破解微信獲取聊天記錄和通訊錄信息(靜態(tài)方式)

    這篇文章主要介紹了Android以靜態(tài)方式破解微信獲取聊天記錄和通訊錄信息,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android布局(RelativeLayout、TableLayout等)使用方法

    Android布局(RelativeLayout、TableLayout等)使用方法

    這篇文章主要介紹了Android布局使用方法及各種屬性介紹,包括RelativeLayout、TableLayout等,感興趣的朋友可以參考一下
    2016-03-03
  • 詳解Flutter如何在單個屏幕上實現(xiàn)多個列表

    詳解Flutter如何在單個屏幕上實現(xiàn)多個列表

    這篇文章主要為大家詳細介紹了Flutter如何在單個屏幕上實現(xiàn)多個列表,這些列表可以水平排列、網(wǎng)格格式、垂直排列,甚至是這些常用布局的組合,感興趣的小伙伴可以了解下
    2023-11-11
  • Android?中的?Timer?和?TimerTask詳解

    Android?中的?Timer?和?TimerTask詳解

    Timer?是?Java?中用于創(chuàng)建定時任務(wù)的類,它位于?java.util?包中,可以使用Timer來安排一次性或定期執(zhí)行的任務(wù),這篇文章主要介紹了Android?的?Timer?和?TimerTask,需要的朋友可以參考下
    2024-05-05
  • Android基于OpenCV實現(xiàn)Harris角點檢測

    Android基于OpenCV實現(xiàn)Harris角點檢測

    角點就是極值點,即在某方面屬性特別突出的點。當(dāng)然,你可以自己定義角點的屬性(設(shè)置特定熵值進行角點檢測)。角點可以是兩條線的交叉處,也可以是位于相鄰的兩個主要方向不同的事物上的點。本文介紹如何基于OpenCV實現(xiàn)Harris角點檢測
    2021-06-06
  • Android實現(xiàn)氣泡布局/彈窗效果 氣泡尖角方向及偏移量可控

    Android實現(xiàn)氣泡布局/彈窗效果 氣泡尖角方向及偏移量可控

    這篇文章主要為大家詳細介紹了Android實現(xiàn)氣泡布局/彈窗效果,可控制氣泡尖角方向及偏移量,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android Studio 1.2版安裝設(shè)置圖文教程

    Android Studio 1.2版安裝設(shè)置圖文教程

    這篇文章主要介紹了Android Studio 1.2版安裝設(shè)置圖文教程,本文詳細講解了下載、安裝Android Studio 1.2教程,以及常用設(shè)置詳細圖文教程,需要的朋友可以參考下
    2015-05-05
  • Android中的相對路徑實例詳解

    Android中的相對路徑實例詳解

    這篇文章主要介紹了android中的相對路徑,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • 移動端開發(fā)之Jetpack?Hilt技術(shù)實現(xiàn)解耦

    移動端開發(fā)之Jetpack?Hilt技術(shù)實現(xiàn)解耦

    Hilt的出現(xiàn)解決前兩點問題,因為Hilt是Dagger針對Android平臺的場景化框架,比如Dagger需要我們手動聲明注入的地方,而Android聲明的地方不都在onCreate()嗎,所以Hilt就幫我們做了,除此之外還做了很多事情
    2023-02-02

最新評論