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