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