机顶盒 gridview 焦点位置效果动画添加

来源:互联网 发布:看门狗软件下载 编辑:程序博客网 时间:2024/05/01 21:12

又到了每周最激动人心的时候了,总结。对是闲着没事的总结。


最近添加了一个动画效果,gridview里面的子项的焦点只要获取就慢慢放大,前一个焦点慢慢从放大恢复缩小。


放大动画:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:fillEnabled="true"    android:fillAfter="true"    android:duration="500"    android:interpolator="@android:anim/decelerate_interpolator" >    <scale        android:fromXScale="1.0"        android:fromYScale="1.0"        android:toXScale="1.3"        android:pivotX="50%"        android:pivotY="50%"        android:toYScale="1.2" /></set>

android:fillAfter="true"   //保持动画结束的样子

恢复动画:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:fillEnabled="true"    android:fillAfter="true"    android:duration="500"    android:interpolator="@android:anim/decelerate_interpolator" >    <scale        android:fromXScale="1.3"        android:fromYScale="1.2"        android:toXScale="1.0"        android:pivotX="50%"        android:pivotY="50%"        android:toYScale="1.0" /></set>



private int lastSelectPosition;  //记录上个焦点对于gridview的位置。gridViewL.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> parent, View view, int position, long id) {videosListAdapterL.setLastSelectPosition(lastSelectPosition);videosListAdapterL.setSelectPosition(position);videosListAdapterL.notifyDataSetChanged();lastSelectPosition = position;gridViewR.setSelection(position);}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}});

用adapter来设置动画,上面的看懂就看懂了,看不懂也不给说。代码没给全因为太多了。

import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.lidroid.xutils.BitmapUtils;import com.solidworld.b2bmediaplayer.R;import com.solidworld.b2bmediaplayer.bean.BeanVideos;import com.solidworld.b2bmediaplayer.bean.BeanVideosImage;import com.solidworld.b2bmediaplayer.util.Tools;import java.util.List;/** * Created by ztc-3dworld on 2015/12/21. */public class VideosListAdapter extends BaseAdapter {private static final String tag = VideosListAdapter.class.getSimpleName();private Context context;public List<BeanVideosImage> list;private LayoutInflater inflater;BitmapUtils bUtils = null;private Animation gridAnim,gridAnimOut;private int selectPosition ,lastSelectPosition;public int getLastSelectPosition() {return lastSelectPosition;}public void setLastSelectPosition(int lastSelectPosition) {this.lastSelectPosition = lastSelectPosition;}public int getSelectPosition() {return selectPosition;}public void setSelectPosition(int selectPosition) {this.selectPosition = selectPosition;}public VideosListAdapter(Context context, List<BeanVideosImage> list) {this.context = context;this.list = list;inflater = LayoutInflater.from(context);bUtils = new BitmapUtils(context, context.getFilesDir().toString() + "/videopics");bUtils.configDefaultLoadingImage(R.mipmap.default_image);bUtils.configDefaultReadTimeout(10000);bUtils.configDefaultLoadFailedImage(R.mipmap.default_image);bUtils.configDefaultShowOriginal(true);gridAnim = AnimationUtils.loadAnimation(context, R.anim.focus_loading);gridAnimOut = AnimationUtils.loadAnimation(context, R.anim.focus_loading_out);}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {BeanVideosImage beanVideos = list.get(position);ViewHolder viewHolder = null;if (convertView == null) {viewHolder = new ViewHolder();convertView = inflater.inflate(R.layout.item_videos_list, null);viewHolder.image = (ImageView) convertView.findViewById(R.id.image);viewHolder.title = (TextView) convertView.findViewById(R.id.title);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}convertView.clearAnimation();if (lastSelectPosition == position) {convertView.startAnimation(gridAnimOut);}if (selectPosition == position) {convertView.startAnimation(gridAnim);convertView.bringToFront();convertView.requestLayout();}// Tools.Log(tag," -- getImg_r == "+beanVideos.getImg_l());viewHolder.image.setImageBitmap(beanVideos.getBitmap());viewHolder.title.setText(beanVideos.getVideo_name());return convertView;}public static class ViewHolder {ImageView image;TextView title;}}

通过adapter.notify....来实现更新adapter,然后判断位置来加载动画。

0 0
原创粉丝点击