`
zdpeng
  • 浏览: 126575 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Gallery 自动播放,以及解决滑动惯性问题

 
阅读更多

 

重写Gallery,解决惯性问题……

 

package com.app.test9;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.Gallery;

public class GalleryTest extends Gallery
{

	public GalleryTest(Context context, AttributeSet attrs)
	{
		super(context, attrs);
	}	
               //冲洗这个方法返回flase,就可以去掉gallery的惯性,每次只滑动一张
	public boolean onFling (MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 
	{
		
		 return false;
		
	}
	
}

 

 

   

   Gallery自动播放

 

public class AoutGalleryActivity extends Activity {

    private GalleryTest mGalleryItem;
    
    private static int[] mThumbIds = { R.drawable.g1,
        R.drawable.test, R.drawable.java,R.drawable.filepicker_return,R.drawable.more_feedback};
    
    Timer timer;
    Handler handler;
    int current = 0;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            setupViews();
            init();
            handler = new Handler()
            {
            	public void handleMessage(Message msg)
            	{
            		if(msg.what == 0x123)
            		{
							//设置gallery显示第几张图片
            				mGalleryItem.setSelection(current);
            		}
            	}
            };
    }
    private void init() 
    {
    	timer = new Timer();
		timer.schedule(new TimerTask()
		{

			@Override
			public void run() {
				current++;     
				if(current>=5) //5是存图片的数组,数组的长度
				{
					current = 0;//此处如果需要gallery循环播放,就需要这么写
				}
				Message msg = new Message();
				msg.what = 0x123;
				handler.sendMessage(msg);				
			}			
		}, 0, 1000);
    }

   

 private void setupViews()
    {
         mGalleryItem = (GalleryTest) findViewById(R.id.gallery);
         show = (TextView)findViewById(R.id.text);
         final ImageAdapter adapter = new ImageAdapter(this,mThumbIds);
         mGalleryItem.setAdapter(adapter);
         mGalleryItem.setSelection(2);
         mGalleryItem.setOnItemSelectedListener(new OnItemSelectedListener() 
         {
              public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
              {
                   //show.setText(names[position]);
              }

              public void onNothingSelected(AdapterView<?> parent) 
              {

              }
        });
    }

 

 

    适配器 

 

如果需要gallery 循环播放,就要 position % mThumbIds.length 写

 

  private final static class ImageAdapter extends BaseAdapter 
    {

    		private Context mContext;
    		int[] mThumbIds;
            public ImageAdapter(Context c,int[] mThumbIds) 
            {
                    mContext = c;
                    this.mThumbIds = mThumbIds;
            }

            public int getCount() 
            {
                    return Integer.MAX_VALUE;
            }

            public Object getItem(int position) 
            {
                    return mThumbIds[position % mThumbIds.length];
            }

            public long getItemId(int position) 
            {
                    return position % mThumbIds.length;
            }

            public View getView(int position, View convertView, ViewGroup parent) 
            {
                    ImageView imageView;
                    if (convertView == null)
                    {
                            imageView = new ImageView(mContext);
                            imageView.setAdjustViewBounds(true);
                            imageView.setLayoutParams(new Gallery.LayoutParams(360,240));
                            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                    } else {
                            imageView = (ImageView) convertView;
                    }

                    imageView.setImageResource(mThumbIds[position % mThumbIds.length]);

                    return imageView;
            }
          
    }

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics