ListView,GridView之LayoutAnimation特殊动画的实现
来源:互联网 发布:php编程思想 编辑:程序博客网 时间:2024/06/06 02:02
LayoutAnimation干嘛用的?不知道的话网上搜一下。
Android的Animation之LayoutAnimation使用方法
有两种用法,我的通常写在代码中,像下面这样:
应用的时候只需这样:
这样一个简单的LayoutAnimation就完成了。
别看到这里就以为文章就完了,以上都是些小玩意。呵呵,还有更厉害的!
你想设置更炫的动画吗?LayoutAnimation通常是Item一个一个的出现,有某种规律的。想让每个Item都有自己的动画吗?那就继续看下去。
看见上面的动画设置了吗?将动画写在getView()中,这样可以设置很多不同的动画。其实这不属于LayoutAnimation的范畴了。
你可以试一下,如果设计好的话,可以有比LayoutAnimation更酷的效果。
我这里只试了两种效果。
下面是我的动画文件,共四个:
第一种效果:item分别从左右两侧滑入效果。
push_left_in.xml
push_right_in.xml
第2种效果:第一个item从下往上滑入,其他Item从上往下滑入效果,这个效果如果单个Item比较高(height)的话效果非常酷(卡牛的老版本好像用的就是这种效果)。
slide_bottom_to_top.xml
slide_top_to_bottom.xml
另外一篇:
这个不是我写的。
GridView的item从上下左右飞入
Android LayoutAnimation使用及扩展
http://my.oschina.net/u/724985/blog/289123
Android的Animation之LayoutAnimation使用方法
有两种用法,我的通常写在代码中,像下面这样:
/** * Layout动画 * * @return */protected LayoutAnimationController getAnimationController() {int duration=300;AnimationSet set = new AnimationSet(true);Animation animation = new AlphaAnimation(0.0f, 1.0f);animation.setDuration(duration);set.addAnimation(animation);animation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,-1.0f, Animation.RELATIVE_TO_SELF, 0.0f);animation.setDuration(duration);set.addAnimation(animation);LayoutAnimationController controller = new LayoutAnimationController(set, 0.5f);controller.setOrder(LayoutAnimationController.ORDER_NORMAL);return controller;}
应用的时候只需这样:
listView = (ListView) findViewById(R.id.listView);listView.setLayoutAnimation(getAnimationController());adapter = new ListViewAdapter(stores);listView.setAdapter(adapter);
这样一个简单的LayoutAnimation就完成了。
别看到这里就以为文章就完了,以上都是些小玩意。呵呵,还有更厉害的!
你想设置更炫的动画吗?LayoutAnimation通常是Item一个一个的出现,有某种规律的。想让每个Item都有自己的动画吗?那就继续看下去。
.......private int duration=1000;private Animation push_left_in,push_right_in;private Animation slide_top_to_bottom,slide_bottom_to_top;public ListViewAdapter(ArrayList<Store> list) {this.list = list;push_left_in=AnimationUtils.loadAnimation(context, R.anim.push_left_in);push_right_in=AnimationUtils.loadAnimation(context, R.anim.push_right_in);slide_top_to_bottom=AnimationUtils.loadAnimation(context, R.anim.slide_top_to_bottom);slide_bottom_to_top=AnimationUtils.loadAnimation(context, R.anim.slide_bottom_to_top);}........@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewHodler hodler;if (convertView == null) {hodler = new ViewHodler();convertView = LayoutInflater.from(context).inflate(R.layout.simple_item_7_for_main, null);........convertView.setTag(hodler);if (position % 2 == 0) {push_left_in.setDuration(duration);convertView.setAnimation(push_left_in);} else {push_right_in.setDuration(duration);convertView.setAnimation(push_right_in);}/*if(position==0){slide_bottom_to_top.setDuration(duration);convertView.setAnimation(slide_bottom_to_top);}else{slide_top_to_bottom.setDuration(duration);convertView.setAnimation(slide_top_to_bottom);}*/}else{hodler = (ViewHodler) convertView.getTag();}........return convertView;}
看见上面的动画设置了吗?将动画写在getView()中,这样可以设置很多不同的动画。其实这不属于LayoutAnimation的范畴了。
你可以试一下,如果设计好的话,可以有比LayoutAnimation更酷的效果。
我这里只试了两种效果。
下面是我的动画文件,共四个:
第一种效果:item分别从左右两侧滑入效果。
push_left_in.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="300"/><alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /></set>
push_right_in.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="300"/><alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /></set>
第2种效果:第一个item从下往上滑入,其他Item从上往下滑入效果,这个效果如果单个Item比较高(height)的话效果非常酷(卡牛的老版本好像用的就是这种效果)。
slide_bottom_to_top.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <translate android:fromYDelta="100%" android:toXDelta="0" android:duration="300" /> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /></set>
slide_top_to_bottom.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <translate android:fromYDelta="-100%" android:toXDelta="0" android:duration="300" /> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /></set>
另外一篇:
这个不是我写的。
GridView的item从上下左右飞入
import java.util.Random;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.view.animation.Animation;import android.view.animation.TranslateAnimation;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.GridView;import android.widget.ImageView;public class ZdemoActivity extends Activity { private GridView gv; private Button btn; private TranslateAnimation taLeft, taRight, taTop, taBlow; private int[] imgList = new int[15]; private MyAdapter mAdapter; private LayoutInflater mInflater; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.InitView(); this.InitAnima(); this.InitData(); } private void InitAnima() { // TODO Auto-generated method stub taLeft = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f); taRight = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f); taTop = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 1.0f, Animation.RELATIVE_TO_PARENT, 0.0f); taBlow = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f); taLeft.setDuration(1000); taRight.setDuration(1000); taTop.setDuration(1000); taBlow.setDuration(1000); } private void InitData() { // TODO Auto-generated method stub for (int i = 0; i < 15; i++) { imgList[i] = R.drawable.ic_launcher; } mAdapter = new MyAdapter(); gv.setAdapter(mAdapter); } private void InitView() { // TODO Auto-generated method stub gv = (GridView) findViewById(R.id.gridView1); btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub mAdapter = null; mAdapter = new MyAdapter(); gv.setAdapter(mAdapter); mAdapter.notifyDataSetChanged(); } }); mInflater = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } private class MyAdapter extends BaseAdapter { @Override public int getCount() { // TODO Auto-generated method stub return imgList.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return imgList[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 ViewHolder holder = null; if (convertView == null) { convertView = mInflater.inflate(R.layout.item, null); holder = new ViewHolder(); holder.image = (ImageView) convertView .findViewById(R.id.imageView1); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } int imgID = imgList[position]; holder.image.setImageResource(imgID); Random ran = new Random(); int rand = ran.nextInt(4); switch (rand) { case 0: convertView.startAnimation(taLeft); break; case 1: convertView.startAnimation(taRight); break; case 2: convertView.startAnimation(taTop); break; case 3: convertView.startAnimation(taBlow); break; } return convertView; } class ViewHolder { public ImageView image; } }}
Android LayoutAnimation使用及扩展
http://my.oschina.net/u/724985/blog/289123
0 0
- ListView,GridView之LayoutAnimation特殊动画的实现
- ListView,GridView之LayoutAnimation特殊动画的实现
- ListView,GridView之LayoutAnimation特殊动画的实现
- ListView,GridView之LayoutAnimation特殊动画的实现
- android layoutanimation 实现listview /gradview 的动画效果
- 安卓动画之listView动画,Activity切换动画,Fragment切换动画及LayoutAnimation的使用
- View动画的特殊使用----LayoutAnimation的使用
- android_arrayadapter+layoutanimation实现动画
- Android 动画之LayoutAnimation
- Android动画之LayoutAnimation
- Android动画效果之:LayoutAnimation
- LayoutAnimation实现ListView的子View淡入淡出效果效果图
- ListView的特殊动画效果
- Android的Animation之LayoutAnimation使用方法(控件设置动画)
- ListView及GridView item以特殊动画效果进入屏幕
- 有关Drawable状态的选择,书写规范。以及GridView、ListView几种LayoutAnimation汇总
- 详解Android动画之ListView/GridView
- LayoutAnimation动画
- 左边可拖出菜单(页面)效果
- 左边和右边都可拖出页面的效果
- MySQL
- 顶部横向滑动菜单效果
- iOS证书和描述文件申请
- ListView,GridView之LayoutAnimation特殊动画的实现
- 1008 Elevator
- 采用Scroller实现任意布局的上下左右弹性效果
- 华为手机在开发Android调试时logcat不显示输出信息的解决办法
- 异常
- hdu4815(01背包)
- 刮刮卡效果
- 根据地址查询经纬度
- Android下集成FacebookSDk到项目并发表评论