展会信息港展会大全

android 3.0新特性--》ViewFilperAdapter
来源:互联网   发布日期:2015-10-02 16:16:42   浏览:2191次  

导读:最近在做一个电子相框主要能够播放幻灯片,起初使用ViewPager但是很难让其自动循环播放幻灯片,之后使用ViewFliper虽然能够实现自动播放幻灯片,使用软引用解决内存溢出的问题,但是他的...

最近在做一个电子相框主要能够播放幻灯片,起初使用ViewPager但是很难让其自动循环播放幻灯片,之后使用ViewFliper虽然能够实现自动播放幻灯片,使用软引用解决内存溢出的问题,但是他的效率很低,不能实现循环复用View,要特高效率还是得循环复用,android3.0新特性里边就有这样成型的api、ViewFilperAdapter,个人觉得非常要用,AdapterViewFlipper 和BaseAdapter一起使用就解决了循环复用,滑到那一页在加载那一页的数据,真正的动态加载数据。

ObjectAnimator rInAnim, rOutAnim, rightIn, rightOut, leftIn, leftOut;//3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一 个新

的动画系统:property animation,这三种动画模式在SDK中被称为property animation,view animation,drawable animation

AdapterViewFlipper iv=(AdapterViewFlipper ) findViewById(R.id.viewpager);

ViewFilperAdapter adapter = new ViewFilperAdapter(Single.getInstance().getPathList());

iv.setAdapter(adapter);

public void setViewFlipperAnim() {

if (iv.isFlipping()) {

iv.stopFlipping();

}

iv.setInAnimation(this, android.R.animator.fade_in);//加入ObjectAnimator

iv.setOutAnimation(this, android.R.animator.fade_out);

iv.setAutoStart(true); // 设置自动播放功能(点击事件,前自动播放)

iv.setFlipInterval(3000);//设置动画时间间隔3000毫秒

if (iv.isAutoStart() && !iv.isFlipping()) {

iv.startFlipping();

}

}

@Override

public boolean onTouchEvent(MotionEvent event) {

iv.stopFlipping();

iv.setAutoStart(false);

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

startX = event.getX();

return true;

case MotionEvent.ACTION_UP:

if (event.getX() > startX) { // 向右滑动

if (event.getX() - startX > 20) {

rInAnim = ObjectAnimator.ofFloat(iv, "x", iv.getX(), iv.getWidth());

rInAnim.setDuration(200);

iv.setInAnimation(rInAnim);

iv.setOutAnimation(rInAnim);

iv.showNext();

return false;

}

} else if (event.getX()

if (startX - event.getX() > 20) {

rOutAnim = ObjectAnimator.ofFloat(iv, "x", iv.getX(), -iv.getWidth());

rOutAnim.setDuration(200);

iv.setInAnimation(rOutAnim);

iv.setOutAnimation(rOutAnim);

iv.showPrevious();

return false;

}

}

break;

}

return super.onTouchEvent(event);

}

class MyHandler extends Handler {

@Override

public void handleMessage(Message msg) {

// TODO Auto-generated method stub

super.handleMessage(msg);

switch (msg.what) {

case 0:

adapter.notifyDataSetChanged();

break;

}

}

class ViewFilperAdapter extends BaseAdapter {

private ArrayList imgpaths;

public ViewFilperAdapter(ArrayList imgpaths) {

// TODO Auto-generated constructor stub

this.imgpaths = imgpaths;

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return imgpaths.size();

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return imgpaths.get(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

Holder holder = null;

if (convertView == null) {

convertView = LayoutInflater.from(MainGallery.this).inflate(

R.layout.gridview_item, null);

holder = new Holder();

holder.img = (ImageView) convertView

.findViewById(R.id.gridview_item_img);

holder.head = (ImageView) convertView.findViewById(R.id.user_img);

holder.user_name = (TextView) convertView.findViewById(R.id.user_name);

holder.creat_time = (TextView) convertView.findViewById(R.id.creat_time);

holder.caption = (TextView) convertView.findViewById(R.id.caption);

holder.location = (TextView) convertView.findViewById(R.id.location);

holder.comment_list = (ListView) convertView.findViewById(R.id.comment_list);

convertView.setTag(holder);

} else {

holder = (Holder) convertView.getTag();

}

String[] as = imgpaths.get(position).split("/");

Img img = dbOpenHelper.getImg(as[as.length - 1]);

if (null != img&&settingSharePreferences.getComment()) {

String userHead = dbOpenHelper.getHeadImg(img.getImg_from_id());

holder.head.setImageBitmap(ImageUtil.getImageFromLocal(ImageUtil

.getCacheImgPath().concat(

"head/" + ImageUtil.md5(userHead))));

holder.user_name.setText(img.getImg_from_name());

java.util.Date dt = new Date();

int date = (int) (dt.getTime() / 1000 - img.getImg_time());

holder.creat_time.setText(getTime(date));

holder.caption.setText(img.getCaption_text());

ArrayList comments = dbOpenHelper.getComments(img

.getImg_id());

if (comments.size() != 0) {

holder.comment_list.setAdapter(new CommentAdapter(

MainGallery.this, comments));

}

}

Img imgs=ImgCache.getInstance().getBitmap(imgpaths.get(position), MainGallery.this);

holder.img.setImageBitmap(imgs.getImgBitmap());

return convertView;

}

}

class Holder {

ImageView img, head;

TextView user_name, creat_time, caption, location;

ListView comment_list;

}

anim_left_in.xml

android:duration="500"

android:propertyName="X"

android:valueFrom="1024"

android:valueTo="0"

android:valueType="floatType" />

anim_left_out.xml

android:duration="500"

android:propertyName="X"

android:valueFrom="0"

android:valueTo="-1024"

android:valueType="floatType"

/>

anim_right_in.xml

android:duration="500"

android:propertyName="X"

android:valueFrom="0"

android:valueTo="1024"

android:valueType="floatType"

/>

anim_right_out.xml

android:duration="500"

android:propertyName="X"

android:valueFrom="0"

android:valueTo="1024"

android:valueType="floatType"

/>

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港