博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件启动动画及动画结束后跳转
阅读量:5885 次
发布时间:2019-06-19

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

自己写了个小程序,软件启动时,先显示几张图片,每3秒显示一张,图片显示完跳转到首页

1. 图片轮播使用Gallery,用法很简单

GalleryAdapter adapter = new GalleryAdapter(this, mIds);

mGallery.setAdapter(adapter);

GalleryAdapter是自定义适配器

public class GalleryAdapter extends BaseAdapter {        private Context mContext;        private int mImageHeight;        private int[] mIds;        public GalleryAdapter(Context context, int[] ids) {            this.mContext = context;            this.mIds = ids;            init();        }        private void init() {            mImageHeight = px2dip(mContext, getScreenHeight(MainActivity.this));        }        @Override        public int getCount() {            return mIds.length;        }        @Override        public Object getItem(int position) {            return position;        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            final ImageView imageView = new ImageView(mContext);            if (position < mIds.length) {                int imageId = mIds[position];                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);//设置图片居中                imageView.setLayoutParams(new Gallery.LayoutParams(                        Gallery.LayoutParams.FILL_PARENT, mImageHeight));                Bitmap bitmap = readBitMap(mContext, imageId);//用节省内存的方式加载图片,防止OOM                imageView.setImageBitmap(bitmap);                overridePendingTransition(R.anim.push_in, R.anim.push_out);//图片切换动画            }            return imageView;        }    }

2. 设置图片切换时间使用Timer定时器

Timer timer = new Timer();

timer.schedule(task, 3000, 3000);// 每3秒切换一张图片

private TimerTask task = new TimerTask() {        @Override        public void run() {            Message message = new Message();            message.what = 0;            index = mGallery.getSelectedItemPosition();            handler.sendMessage(message);            index++;            if (index == mIds.length - 1) {                this.cancel();                MainActivity.this.finish();                Intent intent = new Intent(MainActivity.this, Test.class);                startActivity(intent);            }        }    };    //不能直接在task中更新UI,所以用handler向主线程发送消息    private Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what) {            case 0:                mGallery.setSelection(index);                break;            default:                break;            }        }    };

3. 读取本地资源图片

public static Bitmap readBitMap(Context context, int resId) {        BitmapFactory.Options opt = new BitmapFactory.Options();        opt.inPreferredConfig = Bitmap.Config.RGB_565;        opt.inPurgeable = true;        opt.inInputShareable = true;        // 获取资源图片        InputStream is = context.getResources().openRawResource(resId);        return BitmapFactory.decodeStream(is, null, opt);    }

附上项目

转载于:https://www.cnblogs.com/cc-Cheng/archive/2013/01/08/2850808.html

你可能感兴趣的文章
ASP.NET MVC 防止CSRF攻击
查看>>
EF:无法检查模型兼容性,因为数据库不包含模型元数据。
查看>>
0和5
查看>>
C# WinFrom一些技术小结
查看>>
hdu5001 Walk 概率DP
查看>>
模拟select控件&&显示单击的坐标&&用户按下键盘,显示keyCode
查看>>
Mac-OSX下Ruby更新
查看>>
jsp九个内置对象
查看>>
[Python笔记][第一章Python基础]
查看>>
Bloomberg SEP 12.x 迁移小记
查看>>
生日小助手V1.1发布了——拥有更整齐的信息列表
查看>>
代理模式
查看>>
Qt 学习(1)
查看>>
MFC CEdit改变字体大小的方法
查看>>
java 中文数字排序方法
查看>>
centos 关于防火墙的命令
查看>>
openstack 源码分析
查看>>
ZOJ3861 Valid Pattern Lock(DFS||打表+枚举)
查看>>
pylint
查看>>
1025 选菜
查看>>