Gallery与ImageSwitcher的图片显示

来源:互联网 发布:mac打开app store很慢 编辑:程序博客网 时间:2024/05/22 03:15

一、Gallery图片显示

1、在activity_main.xml中正常定义一个Gallery:

<Gallery
        android:id="@+id/gallery"
        android:layout_height="200dp"
        android:layout_width="200dp"
        />

2、在drawable_hdpi中添加图片准备;

3、在MainActivity.java中实现:
package com.example.gallerytest;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;

public class MainActivity extends Activity{
    int[] pics ={
            R.drawable.pic1,
            R.drawable.pic2,
            R.drawable.pic3,
            R.drawable.pic4,
            R.drawable.pic5,
            R.drawable.pic6,
            R.drawable.pic7,
            R.drawable.pic1,
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Gallery gallery = (Gallery)findViewById(R.id.gallery);
        MyAdapter adapter = new MyAdapter(MainActivity.this);
        gallery.setAdapter(adapter);
        
    
            
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    private class MyAdapter extends BaseAdapter{
        Context c;
          
        public MyAdapter(Context c){
            this.c = c;
        }
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return pics.length;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return pics[position];
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            ImageView view = null;
            if(convertView!=null){
                view = (ImageView) convertView;
            }else{
                view = new ImageView(c);
                view.setImageResource(pics[position]);
                view.setScaleType(ImageView.ScaleType.CENTER);
                view.setLayoutParams(new Gallery.LayoutParams(200,200));
            }
            return view;
        }
        
    }

    

}

二、Gallery与ImageSwitcher结合显示图片

1、在activity_main.xml中正常定义一个Gallery:

    <Gallery
        android:id="@+id/gallery"
        android:layout_height="200dp"
        android:layout_width="200dp"
        />

    <ImageSwitcher
         android:id="@+id/switcher"
        android:layout_height="200dp"
        android:layout_width="200dp"
        />
2、在drawable_hdpi中添加图片准备;

3、Activity实现ViewFactory,即:implements ViewFactory;

4、在MainActivity.java中实现:

package com.example.gallerytest;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;

public class MainActivity extends Activity implements ViewFactory{
    int[] pics ={
            R.drawable.pic1,
            R.drawable.pic2,
            R.drawable.pic3,
            R.drawable.pic4,
            R.drawable.pic5,
            R.drawable.pic6,
            R.drawable.pic7,
            R.drawable.pic1,
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Gallery gallery = (Gallery)findViewById(R.id.gallery);
        MyAdapter adapter = new MyAdapter(MainActivity.this);
        gallery.setAdapter(adapter);
        final ImageSwitcher switcher = (ImageSwitcher)findViewById(R.id.switcher);
        Log.d("test","switcher="+switcher);
        switcher.setFactory(this);
        
        gallery.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                // TODO Auto-generated method stub
                Log.d("test","position="+arg2);
                Log.d("test","switcher="+switcher);
                switcher.setImageResource(pics[arg2]);
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
                
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    private class MyAdapter extends BaseAdapter{
        Context c;
        //初始化成员变量
        //构建一个对象
        //构造方法被调用一定会创建新的对象吗?  不一定   通过继承来回答
        //任何一个类的间接父类是Object ?
        //任何一个类在创建对象时是否会调用父类的构造方法?
        //调用父类的构造方法是否创建了父类的对象?
        //如果创建了父类的对象违背了什么原则?
        //如果没有创建父类对象那么构造方法调用一定会创建对象吗?
        //一定?不一定?     
        public MyAdapter(Context c){
            this.c = c;
        }
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return pics.length;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return pics[position];
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            ImageView view = null;
            if(convertView!=null){
                view = (ImageView) convertView;
            }else{
                view = new ImageView(c);
                view.setImageResource(pics[position]);
                view.setScaleType(ImageView.ScaleType.CENTER);
                view.setLayoutParams(new Gallery.LayoutParams(200,200));
            }
            return view;
        }
        
    }

    @Override
    public View makeView() {
        // TODO Auto-generated method stub
        ImageView view = null;
        view = new ImageView(MainActivity.this);
        //view.setImageResource(pics[position]);
        view.setScaleType(ImageView.ScaleType.CENTER);
        view.setLayoutParams(new ImageSwitcher.LayoutParams(200,200));
        Log.d("test","view="+view);
        return view;
    }

}



0 0