当前位置:操作系统 > 安卓/Android >>

Android开源代码解读の地图照片应用Panoramio的实现详解(二)

本文分析两个类:程序中用到的数据类PanoramioItem,以及工具类BitmapUtils。
 
1)Parcelable接口和PanoramioItem类
 
任何类如果希望自己的实例能够写入到Parcel中或者从Parcel中恢复出来,都必须实现Parcelable接口,实现这个接口的类除了要重写接口中定义的函数,还需要定义一个名为CREATOR的静态域,而CREATOR是实现Parcelable.Creator接口的对象,说了这么多,下面看下Parcelable的代码就一目了然了:
 
 
[java]
 public interface Parcelable {
     /**
      * Flag for use with {@link #writeToParcel}: the object being written
      * is a return value, that is the result of a function such as
      * "<code>Parcelable someFunction()</code>",
      * "<code>void someFunction(out Parcelable)</code>", or
      * "<code>void someFunction(inout Parcelable)</code>".  Some implementations
      * may want to release resources at this point.
      */
     public static final int PARCELABLE_WRITE_RETURN_VALUE = 0x0001;
     
     /**
      * Bit masks for use with {@link #describeContents}: each bit represents a
      * kind of object considered to have potential special significance when
      * marshalled.
      */
     public static final int CONTENTS_FILE_DESCRIPTOR = 0x0001;
     
     /**
      * Describe the kinds of special objects contained in this Parcelable's
      * marshalled representation.
      * 
      * @return a bitmask indicating the set of special object types marshalled
      * by the Parcelable.
      */
     public int describeContents();
     
     /**
      * Flatten this object in to a Parcel.
      *
      * @param dest The Parcel in which the object should be written.
      * @param flags Additional flags about how the object should be written.
      * May be 0 or {@link #PARCELABLE_WRITE_RETURN_VALUE}.
      */
     public void writeToParcel(Parcel dest, int flags);
 
     /**
      * Interface that must be implemented and provided as a public CREATOR
      * field that generates instances of your Parcelable class from a Parcel.
      */
     public interface Creator<T> {
         /**
          * Create a new instance of the Parcelable class, instantiating it
          * from the given Parcel whose data had previously been written by
          * {@link Parcelable#writeToParcel Parcelable.writeToParcel()}.
          *
          * @param source The Parcel to read the object's data from.
          * @return Returns a new instance of the Parcelable class.
          */
         public T createFromParcel(Parcel source);
         
         /**
          * Create a new array of the Parcelable class.
          *
          * @param size Size of the array.
          * @return Returns an array of the Parcelable class, with every entry
          * initialized to null.
          */
         public T[] newArray(int size);
     }
 }
 public interface Parcelable {
     /**
      * Flag for use with {@link #writeToParcel}: the object being written
      * is a return value, that is the result of a function such as
      * "<code>Parcelable someFunction()</code>",
      * "<code>void someFunction(out Parcelable)</code>", or
      * "<code>void someFunction(inout Parcelable)</code>".  Some implementations
      * may want to release resources at this point.
      */
     public static final int PARCELABLE_WRITE_RETURN_VALUE = 0x0001;
   
     /**
      * Bit masks for use with {@link #describeContents}: each bit represents a
      * kind of object considered to have potential special significance when
      * marshalled.
      */
     public static final int CONTENTS_FILE_DESCRIPTOR = 0x0001;
   
     /**
      * Describe the kinds of special objects contained in this Parcelable's
      * marshalled representation.
      *
      * @return a bitmask indicating the set of special object types marshalled
      * by the Parcelable.
      */
     public int describeContents();
   
     /**
      * Flatten this object in to a Parcel.
      *
      * @param dest The Parcel in which the object should be written.
      * @param flags Additional flags about how the object should be written.
      * May be 0 or {@link #PARCELABLE_WRITE_RETURN_VALUE}.
      */
     public void writeToParcel(Parcel dest, int flags);
 
    /**
      * Interface that must be implemented and provided as a public CREATOR
      * field that generates instances of your Parcelable class from a Parcel.
      */
     public interface Creator<T> {
         /**
          * Create a new

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,