EX09_08_2.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:5k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex09_08;
  2. /* import相关class */
  3. import java.net.URL;
  4. import java.net.URLConnection;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import android.app.Activity;
  8. import android.content.Intent;
  9. import android.graphics.drawable.Drawable;
  10. import android.os.Bundle;
  11. import android.widget.ImageView;
  12. import android.widget.TextView;
  13. import android.view.View;
  14. import android.view.ViewGroup.LayoutParams;
  15. import android.view.animation.AnimationUtils;
  16. import android.widget.AdapterView;
  17. import android.util.Xml;
  18. import android.widget.Gallery;
  19. import android.widget.ImageSwitcher;
  20. import android.widget.ViewSwitcher.ViewFactory;
  21. public class EX09_08_2 extends Activity implements ViewFactory
  22. {
  23.   private TextView mText;
  24.   private ImageSwitcher mSwitcher;
  25.   private Gallery mGallery;  
  26.   private List<String> smallPhoto=new ArrayList<String>();
  27.   private List<String> bigPhoto=new ArrayList<String>();
  28.   
  29.   @Override
  30.   public void onCreate(Bundle savedInstanceState)
  31.   {
  32.     super.onCreate(savedInstanceState);
  33.     /* 设置layout为photoshow.xml */
  34.     setContentView(R.layout.photoshow);
  35.     /* 取得Bundle中的变量 */
  36.     Intent intent=this.getIntent();
  37.     Bundle bunde = intent.getExtras();
  38.     String userId = bunde.getString("userId");
  39.     String albumId = bunde.getString("albumId");
  40.     String title = bunde.getString("title");
  41.     
  42.     /* 调用getPhotoList()取得解析后的List */
  43.     this.getPhotoList(userId,albumId);
  44.     
  45.     /* 设置相簿标题 */
  46.     mText=(TextView) findViewById(R.id.title);
  47.     mText.setText(title);
  48.     /*设置Switcher*/
  49.     mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
  50.     mSwitcher.setFactory(this);
  51.     /*设置加载Switcher的模式*/
  52.     mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
  53.             android.R.anim.fade_in));
  54.     /*设置输出Switcher的模式*/
  55.     mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
  56.             android.R.anim.fade_out));
  57.     
  58.     mGallery = (Gallery) findViewById(R.id.gallery);
  59.     /* 设置Gallery的Adapter为自定义的PhotoAdapter 
  60.      * Gallery内显示分辨率为72的相片 */
  61.     mGallery.setAdapter(new PhotoAdapter(this,smallPhoto));  
  62.     /* 设置Gallery的图片选择事件 */
  63.     mGallery.setOnItemSelectedListener(
  64.         new Gallery.OnItemSelectedListener()
  65.     {
  66.       @Override
  67.       public void onItemSelected(AdapterView<?> arg0, View arg1,
  68.                                  int arg2, long arg3)
  69.       {
  70.         /* 选择Gallery图片后置换Switcher的显示图片 */
  71.         URL url;
  72.         try
  73.         {
  74.           /* Switcher内显示分辨率为288的相片 */
  75.           url = new URL(bigPhoto.get(arg2).toString());
  76.           URLConnection conn = url.openConnection(); 
  77.           conn.connect();
  78.           mSwitcher.setImageDrawable(
  79.               Drawable.createFromStream(conn.getInputStream(),
  80.               "PHOTO"));
  81.         } 
  82.         catch (Exception e)
  83.         {
  84.           /* 发生错误时返回result回上一个activity */
  85.           Intent intent=new Intent();
  86.           Bundle bundle = new Bundle();
  87.           bundle.putString("error",""+e);
  88.           intent.putExtras(bundle);
  89.           /* 错误的返回值设置为99 */
  90.           EX09_08_2.this.setResult(99, intent);
  91.           EX09_08_2.this.finish();
  92.         } 
  93.       }
  94.       @Override
  95.       public void onNothingSelected(AdapterView<?> arg0)
  96.       {
  97.       }     
  98.     });
  99.   }  
  100.   
  101.   /*呈现Switcher的模式*/
  102.   public View makeView() 
  103.   {
  104.     ImageView i = new ImageView(this);
  105.     i.setBackgroundColor(0xFFFFFFFF);
  106.     i.setScaleType(ImageView.ScaleType.FIT_CENTER);
  107.     i.setLayoutParams(new ImageSwitcher.LayoutParams(
  108.         LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
  109.     
  110.     return i;
  111.   }
  112.   
  113.   /* 解析XML取得相片信息的method */
  114.   private void getPhotoList(String userId,String albumId)
  115.   {
  116.     URL url = null;
  117.     String path="http://picasaweb.google.com/data/feed/api/user/"
  118.                 +userId.trim()+"/albumid/"+albumId.trim();
  119.     try
  120.     {  
  121.       url = new URL(path);
  122.       /* 以自定义的PhotoHandler作为解析XML的Handler */
  123.       PhotoHandler handler = new PhotoHandler(); 
  124.       Xml.parse(url.openConnection().getInputStream(),
  125.                 Xml.Encoding.UTF_8,handler);
  126.       
  127.       /* 取得两种分辨率的照片路径(72与288) */
  128.       smallPhoto =handler.getSmallPhoto();
  129.       bigPhoto =handler.getBigPhoto();
  130.     }
  131.     catch (Exception e)
  132.     { 
  133.       /* 发生错误时返回result回上一个activity */
  134.       Intent intent=new Intent();
  135.       Bundle bundle = new Bundle();
  136.       bundle.putString("error",""+e);
  137.       intent.putExtras(bundle);
  138.       /* 错误的返回值设置为99 */
  139.       EX09_08_2.this.setResult(99, intent);
  140.       EX09_08_2.this.finish();
  141.     }
  142.   }
  143. }