博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 左右滑动 +索引图标
阅读量:5360 次
发布时间:2019-06-15

本文共 3854 字,大约阅读时间需要 12 分钟。

    使用Gallery和ImageView实现android左右滑动+索引图标效果。

    首先自定义Gallery实现一次只能滑动一个页面

public class MGalleryView extends Gallery{    public MGalleryView(Context context, AttributeSet attrs) {        super(context, attrs);    }    //一次只能滑动一张图片注:一张图充满全屏    @Override    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,            float velocityY) {        int kEvent;        if (isScrollingLeft(e1, e2)) {            // Check if scrolling left            kEvent = KeyEvent.KEYCODE_DPAD_LEFT;        } else {            // Otherwise scrolling right            kEvent = KeyEvent.KEYCODE_DPAD_RIGHT;        }        onKeyDown(kEvent, null);        return true;    }    private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2) {        return e2.getX() > e1.getX();    }}

然后再主Activity"MGalleryActivity"的xml中注册一下

主activity的java代码

public class MGalleryActivity extends Activity {    int[] data = new int[] { R.drawable.image1, R.drawable.image2,            R.drawable.image3, R.drawable.image4, R.drawable.image5,            R.drawable.image6 };    private ImageView[] imageviews;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.galleryactvity);        setView();    }    private void setView() {        MGalleryView gallery = (MGalleryView) findViewById(R.id.gallery_id);        LinearLayout viewgroup = (LinearLayout) findViewById(R.id.linearlayout_id);        imageviews = setGalleryIndex(viewgroup);        gallery.setAdapter(new MGalleryAdapter(this, data));        //Gallery每次滑动都调用这个方法        gallery.setOnItemSelectedListener(new OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView
arg0, View arg1, int arg2, long arg3) { //使用for循环,给所有的gallery索引添加图片 for (int i = 0; i < imageviews.length; i++) { imageviews[i] .setImageResource(R.drawable.alipay_n); } //为被选中的gallery的索引添加图片 imageviews[arg2].setImageResource(R.drawable.alipay_s); } @Override public void onNothingSelected(AdapterView
arg0) { } }); } //设置左右滑动索引 private ImageView[] setGalleryIndex(LinearLayout viewgroup) { ImageView[] images = new ImageView[data.length]; for (int i = 0; i < images.length; i++) { ImageView newimage = new ImageView(this); newimage.setLayoutParams(new LayoutParams(20, 10)); newimage.setPadding(5, 0, 5, 0); images[i] = newimage; if (i == 0) { //默认选择第一张 images[i].setImageResource(R.drawable.alipay_n); } else { images[i].setImageResource(R.drawable.alipay_s); } viewgroup.addView(images[i]); } return images; }}

 Gallery的适配器

public class MGalleryAdapter extends BaseAdapter{    private int[] data;    private Context mContext;    public MGalleryAdapter(Context context,int[] data) {        this.data=data;        this.mContext=context;    }    @Override    public int getCount() {        // TODO Auto-generated method stub        return data.length;    }    @Override    public Object getItem(int position) {        // TODO Auto-generated method stub        return position;    }    @Override    public long getItemId(int position) {        // TODO Auto-generated method stub        return 0;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ImageView image = new ImageView(mContext);        image.setImageResource(data[position]);        return image;    }}

 源码:

 

转载于:https://www.cnblogs.com/android-qian/archive/2012/12/20/2826171.html

你可能感兴趣的文章
Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf 【动态规划】0-1背包
查看>>
SparkStreaming 源码分析
查看>>
【算法】—— 随机音乐的播放算法
查看>>
mysql asyn 示例
查看>>
数据库第1,2,3范式学习
查看>>
《Linux内核设计与实现》第四章学习笔记
查看>>
使用iperf测试网络性能
查看>>
Docker 安装MySQL5.7(三)
查看>>
解决VS+QT无法生成moc文件的问题
查看>>
AngularJs练习Demo14自定义服务
查看>>
CF1067C Knights 构造
查看>>
[BZOJ2938] 病毒
查看>>
CSS: caption-side 属性
查看>>
CSS3中box-sizing的理解
查看>>
AMH V4.5 – 基于AMH4.2的第三方开发版
查看>>
Web.Config文件配置之配置Session变量的生命周期
查看>>
mysql导入source注意点
查看>>
linux下编译安装nginx
查看>>
ArcScene 高程不同的表面无法叠加
查看>>
[ONTAK2010] Peaks
查看>>