Android中轴旋转特效实现,制作别样的图片浏览器(2)

可以看到,这个类的构造函数中接收一些3D旋转时所需用到的参数,比如旋转开始和结束的角度,旋转的中心点等。然后重点看下applyTransformation()方法,首先根据动画播放的时间来计算出当前旋转的角度,然后让Camera也根据动画播放的时间在Z轴进行一定的偏移,使视图有远离视角的感觉。接着调用Camera的rotateY()方法,让视图围绕Y轴进行旋转,从而产生立体旋转的效果。最后通过Matrix来确定旋转的中心点的位置。

有了这个工具类之后,我们就可以借助它非常简单地实现中轴旋转的特效了。接着创建一个图片的实体类Picture,代码如下所示:

public class Picture {

/**
  * 图片名称
  */
 private String name;

/**
  * 图片对象的资源
  */
 private int resource;

public Picture(String name, int resource) {
  this.name = name;
  this.resource = resource;
 }

public String getName() {
  return name;
 }

public int getResource() {
  return resource;
 }

}

这个类中只有两个字段,name用于显示图片的名称,resource用于表示图片对应的资源。

然后创建图片列表的适配器PictureAdapter,用于在ListView上可以显示一组图片的名称,代码如下所示:

public class PictureAdapter extends ArrayAdapter<Picture> {

public PictureAdapter(Context context, int textViewResourceId, List<Picture> objects) {
  super(context, textViewResourceId, objects);
 }

@Override
 public View getView(int position, View convertView, ViewGroup parent) {
  Picture picture = getItem(position);
  View view;
  if (convertView == null) {
   view = LayoutInflater.from(getContext()).inflate(Android.R.layout.simple_list_item_1,
     null);
  } else {
   view = convertView;
  }
  TextView text1 = (TextView) view.findViewById(android.R.id.text1);
  text1.setText(picture.getName());
  return view;
 }

}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/174d34b6a914fa4debe0f03a799948fd.html