Android利用Gallery製作無限迴圈的菜單

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.