2013年3月14日----拖动相片特效

       要想实现如iPhone一样的Gallery画廊,能拖动相片的特效,需要用到包括:android.content.Context, android.widget.BaseAdapter , android.widget.ImageView等,这些通常会用在设计相册、图片类型的选择器上。


       在开始之前,必须先了解什么叫做Context以及widget里的BaseAdapter,在Activity当中,Context就如同是一张Canvas画布,随时等着被处理或重写。

       本范例在Layout里布局一个Gallery对象,再通过widget.BaseAdapter容器存放Gallery所需要的图片,源码如下:

Activity_main.xml:

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:tools="http://schemas.android.com/tools"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical" >
       <Gallery
              android:id="@+id/gallery"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:gravity="center"/>
</LinearLayout>

 

MainActivity.java

package com.example.test01;
 
import android.app.Activity;
importandroid.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
importandroid.view.ViewGroup;
importandroid.widget.BaseAdapter;
importandroid.widget.Gallery;
importandroid.widget.ImageView;
 
public class MainActivityextends Activity {
 
       private Gallery gallery;
      
       @Override
       protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
             
              gallery = (Gallery)findViewById(R.id.gallery);
              gallery.setAdapter(new ImageAdapter(this));
             
       }
 
       public class ImageAdapter extends BaseAdapter
       {
              private Context context;
              //使用图片作为图库资源,类型为整数数组
              private int[] imageIds = {R.drawable.psu1 ,R.drawable.psu2 , R.drawable.psu3 ,R.drawable.a1 ,
                            R.drawable.a2 , R.drawable.a3 ,R.drawable.a4 , R.drawable.a5 , R.drawable.a6 ,
                            R.drawable.a7 , R.drawable.a8 ,R.drawable.a9 , R.drawable.a10 , R.drawable.a11 ,
                            R.drawable.a12 , R.drawable.a13 ,R.drawable.a14 , R.drawable.a15};
              //构造器只有一个参数,即要存储的Context
              public ImageAdapter(Context c){this.context = c;}
             
              public int getCount() {return this.imageIds.length;}
 
              public Object getItem(int position) {return position;}
 
              public long getItemId(int position) {return position;}
 
              //取得目前欲显示的图像View,传入数组ID值使之读取与成像
              public View getView(int position, View convertView,ViewGroup parent)
              {
                     ImageView imageView = new ImageView(context);
                     imageView.setImageResource(imageIds[position]);
                     imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                     //设置这个ImageView对象的宽高,单位为dip
//                  imageView.setLayoutParams(newGallery.LayoutParams(La, 400));
                     return imageView;
              }
       }
      
       @Override
       public boolean onCreateOptionsMenu(Menu menu) {
              // Inflate the menu; this adds items to the action barif it is present.
              getMenuInflater().inflate(R.menu.main, menu);
              return true;
       }
 
}

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值