Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android編程之九宮格實現方法實例分析

Android編程之九宮格實現方法實例分析

編輯:關於Android編程

本文實例講述了Android編程之九宮格實現方法。分享給大家供大家參考,具體如下:

顯示九宮格需要用GridView , 要顯示每個格子中的視圖有兩種方式,第一種方式是做成xml文件,再將xml文件做成視圖。第二種方式就是在代碼中構建出這樣一種布局,這裡采用第一種方式來實現:

GridView:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
 <!-- id gv_all
  寬高都是填充父窗體
  numcolums 為3
  水平控件的距離 10px
  垂直距離是10px
  gridview 離底部58px
  離頂部28px
  離左邊5px
  離右邊5px
 -->
<GridView
  android:id="@+id/gv_all"
  android:layout_height="fill_parent"
  android:layout_width="fill_parent"
  android:numColumns="3"
  android:horizontalSpacing="10px"
  android:verticalSpacing="10px"
  android:layout_marginBottom="58px"
  android:layout_marginTop="28px"
  android:layout_marginLeft="5px"
  android:layout_marginRight="5px"
></GridView>
</RelativeLayout>

視圖:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="90px"
 android:layout_height="90px">
  <ImageView
   android:layout_width="64px"
   android:layout_height="64px"
   android:layout_gravity="center_horizontal"
   android:id="@+id/main_gv_iv"
  />
  <TextView
  android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center_horizontal"
   android:textSize="16px"
   android:textColor="#FFF"
   android:id="@+id/main_gv_tv"
  />
</LinearLayout>

初始化:

public class MainActivity extends Activity {
  public static final String TAG = "MainActivity";
  GridView maingv;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //全屏
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.mainactivity);
    //獲取到GridView
    maingv = (GridView) this.findViewById(R.id.gv_all);
    //給gridview設置數據適配器
    maingv.setAdapter(new MainGridViewAdapter(this));
    //點擊事件
    maingv.setOnItemClickListener(new MainItemClickListener());
  }
  private class MainItemClickListener implements OnItemClickListener{
    /**
     * @param parent 代表當前的gridview
     * @param view 代表點擊的item
     * @param position 當前點擊的item在適配中的位置
     * @param id 當前點擊的item在哪一行
     */
    public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
      switch (position) {
      case 0:
        Intent intent = new Intent(MainActivity.this,LostProtectedActivity.class);
        startActivity(intent);
        break;
      }
    }
  }
}

設置數據適配器 :

// 完成gridview 數據到界面的適配
public class MainGridViewAdapter extends BaseAdapter {
  private static final String TAG = "MainGridViewAdapter";
  private String[] names = {"手機防盜","通訊衛士","軟件管理","任務管理","上網管理","手機殺毒","系統優化","高級工具","設置中心"};
  private int[] icons = {R.drawable.safe,R.drawable.callmsgsafe,R.drawable.app,R.drawable.taskmanager,R.drawable.netmanager,R.drawable.trojan,R.drawable.sysoptimize,R.drawable.atools,R.drawable.settings};
  private Context context;
  LayoutInflater infalter;
  public MainGridViewAdapter(Context context) {
    this.context = context;
    //方法1 通過系統的service 獲取到 試圖填充器
    //infalter = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    //方法2 通過layoutinflater的靜態方法獲取到 視圖填充器
    infalter = LayoutInflater.from(context);
  }
  // 返回gridview裡面有多少個條目
  public int getCount() {
    return names.length;
  }
  //返回某個position對應的條目
  public Object getItem(int position) {
    return position;
  }
  //返回某個position對應的id
  public long getItemId(int position) {
    return position;
  }
  //返回某個位置對應的視圖
  public View getView(int position, View convertView, ViewGroup parent) {
    Log.i(TAG,"GETVIEW "+ position);
    //把一個布局文件轉換成視圖
    View view = infalter.inflate(R.layout.mainactivity_item, null);
    ImageView iv = (ImageView) view.findViewById(R.id.main_gv_iv);
    TextView tv = (TextView) view.findViewById(R.id.main_gv_tv);
    //設置每一個item的名字和圖標
    iv.setImageResource(icons[position]);
    tv.setText(names[position]);
    return view;
  }
}

希望本文所述對大家Android程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved