现在的位置: 首页 > 综合 > 正文

Android利用Gallery制作无限循环的菜单

2013年08月15日 ⁄ 综合 ⁄ 共 2763字 ⁄ 字号 评论关闭

Android利用Gallery制作无限循环的菜单

一、创建一个普通的类继承Gallery,目的是为了去掉Gallery滚动的惯性
   

package cn.com.y2m;
   import android.content.Context;
   import android.util.AttributeSet;
   import android.view.MotionEvent;
   import android.widget.Gallery;
   public class MyGallery extends Gallery {
  	public MyGallery(Context context) {
  	 super(context);
  	}
  	public MyGallery(Context context, AttributeSet attrs, int defStyle) {
  	 super(context, attrs, defStyle);
  	}
  	public MyGallery(Context context, AttributeSet attrs) {
  	 super(context, attrs);
  	}
  	@Override
  	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
  	 float velocityY) {
  	 return true;
  	}
  }

  二、布局文件的编写,标签使用继承Gallery之后的类

   cn.com.y2m.MyGallery
  	android:id="@+id/gallery_view"
  	android:layout_width="fill_parent"
  	android:layout_height="wrap_content"
   /

  三、子布局文件的编写

   ImageView android:id="@+id/ItemImage" 
   android:layout_width="40px"
   android:layout_height="30px"
   android:layout_marginLeft="25px"
   android:layout_marginTop="6px"
   /
   TextView
   android:id="@+id/ItemText"
   android:layout_width="89px"
   android:layout_height="20px" 
   android:gravity="center"
   android:textColor="#ffffff"
   android:layout_marginBottom="4px"
   /

  四、代码的编写,同ListView一样,本人喜欢继承BaseAdapter进行扩展填充
   

//设置填充数据 
   class MyAdapter extends BaseAdapter{
   private LayoutInflater mInflater;
   public MyAdapter(Context context){
   this.mInflater = LayoutInflater.from(context);
   }
  	@Override
  	public int getCount() {
  	 return Integer.MAX_VALUE;
  	}
  	@Override
  	public Object getItem(int arg0) {
  	 return arg0;
  	}
  	@Override
  	public long getItemId(int position) {
  	 return position;
  	}
  	@Override
  	public View getView(int position, View convertView, ViewGroup parent) {
  	 ViewHolder holder = null;
  	 if(convertView==null){
  	 holder = new ViewHolder();
  	 convertView = mInflater.inflate(R.layout.footer_item,null);
  	 holder.image = (ImageView)convertView.findViewById(R.id.ItemImage);
  	 holder.txt = (TextView)convertView.findViewById(R.id.ItemText);
  	 convertView.setTag(holder);
  	 }else{
  	 holder = (ViewHolder)convertView.getTag();
  	 }	
   holder.image.setImageResource(menuItems.get(listMenu.get(position%listMenu.size())));
  	 holder.txt.setText(listMenu.get(position%listMenu.size()));	
   if(arg==position)
   convertView.setBackgroundResource(R.drawable.main_tab_frame_tabspec_background_current);
   return convertView;
  	} 
   }
   class ViewHolder{
   public ImageView image;
   public TextView txt;
   }
  
   //填充数据到Gallery
   Gallery gallery = (Gallery)findViewById(R.id.gallery_view);
   //默认选中项
   arg = Integer.MAX_VALUE/2+1;
   MyAdapter ma = new MyAdapter(this);
   gallery.setAdapter(ma);
   gallery.setSelection(arg);
   gallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView arg0, View arg1, int arg2,long arg3) {
   Toast.makeText(this,"你点击了"+(i+1)+"号菜单",1);
   }
   });

转载出处:http://blog.tianya.cn/blogger/post_read.asp?BlogID=3624254&PostID=33569888

抱歉!评论已关闭.