zoukankan      html  css  js  c++  java
  • ImageSwitcher (图像切换器,显示图片)

    ImageSwitcher继承了ViewSwitcher,主要在切换图片时加入动画效果

    使用方法:

        1.为ImageSwitcher提供一个ViewFactory,该ViewFactory生成的View组件必须是ImageView

        2.切换图片时,用到的3个方法:imageSwitcher.setImageDrawable(Drawable drawable);

                        imageSwitcher.setImageResource(int resid);

                        imageSwitcher.setImageURI(URI uri);


    1.java代码:

      1 package gdp.switcherview2;
      2 
      3 import java.util.ArrayList;
      4 import java.util.HashMap;
      5 import java.util.List;
      6 import java.util.Map;
      7 
      8 import android.app.Activity;
      9 import android.os.Bundle;
     10 import android.view.Menu;
     11 import android.view.View;
     12 import android.view.ViewGroup.LayoutParams;
     13 import android.widget.AdapterView;
     14 import android.widget.AdapterView.OnItemClickListener;
     15 import android.widget.AdapterView.OnItemSelectedListener;
     16 import android.widget.GridView;
     17 import android.widget.ImageSwitcher;
     18 import android.widget.ImageView;
     19 import android.widget.SimpleAdapter;
     20 import android.widget.Toast;
     21 import android.widget.ViewSwitcher.ViewFactory;
     22 
     23 public class MainActivity extends Activity {
     24     //声明一个数组,用来装载图片资源
     25     int[] imageIds = new int[]{R.drawable.baiyang, R.drawable.chunv, R.drawable.jinniu, R.drawable.juxie,
     26                             R.drawable.mojie, R.drawable.sheshou, R.drawable.shizi, R.drawable.shuangyu,
     27                             R.drawable.shuangzi, R.drawable.shuiping, R.drawable.tiancheng, R.drawable.tianxie};
     28     //声明ImageSwitcher对象
     29     private ImageSwitcher switcher ;
     30     @Override
     31     protected void onCreate(Bundle savedInstanceState) {
     32         super.onCreate(savedInstanceState);
     33         setContentView(R.layout.main);
     34         
     35         //创建一个List对象,其元素Map
     36         List<Map<String, Object>> listItems = new ArrayList<Map<String,Object>>();
     37         for(int i = 0; i<imageIds.length; i++){
     38             Map<String, Object> listItem = new HashMap<String, Object>();
     39             listItem.put("image", imageIds[i]);
     40             listItems.add(listItem);
     41         }
     42         
     43         //获取显示图片的ImageSwitcher
     44         switcher = (ImageSwitcher)findViewById(R.id.switcher);
     45         //为imageSwicher设置图片切换的动画效果
     46         switcher.setFactory(new ViewFactory() {
     47             
     48             @Override
     49             public View makeView() {
     50                 // 创建imageView对象
     51                 ImageView imageView = new ImageView(MainActivity.this);
     52                 imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
     53                 imageView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.WRAP_CONTENT,
     54                                         LayoutParams.WRAP_CONTENT));
     55                 //返回ImageView对象
     56                 return imageView;
     57             }
     58         });
     59         //创建Adapter
     60         SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems, R.layout.cell, new String[]{"image"}, new int[]{R.id.image1});
     61         GridView grid = (GridView)findViewById(R.id.grid01);
     62         grid.setAdapter(simpleAdapter);
     63         //添加列表项被点击的监听器
     64         grid.setOnItemClickListener(new ItemClick());
     65         //添加列表项被选中的监听器
     66         grid.setOnItemSelectedListener(new ItemSelect());
     67     }
     68     
     69     class ItemClick implements OnItemClickListener{
     70 
     71         @Override
     72         public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
     73                 long arg3) {
     74             // TODO Auto-generated method stub
     75             switcher.setImageResource(imageIds[arg2]);
     76         }
     77         
     78     }
     79     
     80     class ItemSelect implements OnItemSelectedListener{
     81 
     82         @Override
     83         public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
     84                 long arg3) {
     85             // TODO Auto-generated method stub
     86             switcher.setImageResource(imageIds[arg2]);
     87         }
     88 
     89         @Override
     90         public void onNothingSelected(AdapterView<?> arg0) {
     91             // TODO Auto-generated method stub
     92             Toast.makeText(MainActivity.this, "Nothing Selected" , Toast.LENGTH_LONG).show();
     93         }
     94         
     95     }
     96 
     97     @Override
     98     public boolean onCreateOptionsMenu(Menu menu) {
     99         // Inflate the menu; this adds items to the action bar if it is present.
    100         getMenuInflater().inflate(R.menu.main, menu);
    101         return true;
    102     }
    103 
    104 }

    2.xml文件

    main.xml

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     android:layout_width="fill_parent"
     3     android:layout_height="fill_parent"
     4     android:orientation="vertical"
     5     android:gravity="center_horizontal" >
     6     <!-- 定义一个GridView组件 -->
     7     <GridView
     8         android:id="@+id/grid01"
     9         android:layout_width="fill_parent"
    10         android:layout_height="wrap_content"
    11         android:horizontalSpacing="2dp"
    12         android:verticalSpacing="2dp"
    13         android:numColumns="4"
    14         android:gravity="center"
    15         />
    16     <!-- 定义一个ImageSwitcher组件 -->
    17     <ImageSwitcher
    18         android:id="@+id/switcher"
    19         android:layout_width="300dp"
    20         android:layout_height="300dp"
    21         android:layout_gravity="center_horizontal"
    22         android:inAnimation="@android:anim/fade_in"
    23         android:outAnimation="@android:anim/fade_out"
    24         />
    25 </LinearLayout>

    cell.xml

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     android:layout_width="fill_parent"
     3     android:layout_height="fill_parent"
     4     android:orientation="vertical" >
     5     <ImageView
     6         android:id="@+id/image1"
     7         android:layout_width="fill_parent"
     8         android:layout_height="fill_parent"
     9         android:scaleType="fitXY"
    10         />
    11 </LinearLayout>
  • 相关阅读:
    解构赋值好处
    react中给state赋予初始值(使用dva)
    popover/ToolTip设置在root标签外面,如何设置样式-antd
    判断对象为空的情况
    HTML、XHTML、XML和HTML5之间的联系与区别
    innerHTML、innerText、outerHTML和value的区别
    JS面向对象经典题目(一)
    js中apply、call和bind的区别
    react的TodoList增删改
    JS原生addClass、removeClass实现
  • 原文地址:https://www.cnblogs.com/gdpdroid/p/3746262.html
Copyright © 2011-2022 走看看