Android高级界面组件(2)

十、可展开的列表组件ExpandableListView
<ExpandableListView android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:childIndicator="@drawable/icon"/>
       
//创建一个BaseExpandableListAdapter对象
        ExpandableListAdapter adapter = new BaseExpandableListAdapter()
        {
         int[] logos = new int[]{
          R.drawable.p,
          R.drawable.z,
          R.drawable.t
         };
         private String[] armTypes = new String[]{
          "郭敬明","韩寒","明晓溪" 
         };
   private String[][] arms = new String[][]{
     {"梦里花落知多少","夏末未至","爱与痛的边缘","幻城","猜火车"},
     {"三重门","零下一度","一座城池","长安乱","他的国"},
     {"会有天使替我爱你","冬日最灿烂的阳光","泡沫之夏","小魔女的必杀技","雨夜里的星星沙","无往而不胜的童话","午后熏衣茶"}
   };
   
   //获取指定组位置、指定子列表项处的子列表项数据
   @Override
   public Object getChild(int groupPosition, int childPosition) {
    return arms[groupPosition][childPosition];
   }
   
   @Override
   public long getChildId(int groupPosition, int childPosition) {
    return childPosition;
   }
   
   @Override
   public int getChildrenCount(int groupPosition) {
    return arms[groupPosition].length;
   }
   
   private TextView getTextView()
   {
    AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,64);
    TextView textView = new TextView(ExpandableListViewTestActivity.this);
    textView.setLayoutParams(lp);
    textView.setGravity(Gravity.CENTER_VERTICAL|Gravity.LEFT);
    textView.setPadding(36, 0, 0, 0);
    textView.setTextSize(20);
    return textView;
   }
   
   //该方法决定每个子选项的外观
   @Override
   public View getChildView(int groupPosition, int childPosition,
     boolean isLastChild, View convertView, ViewGroup parent) {
    TextView textView = getTextView();
    textView.setText(getChild(groupPosition, childPosition).toString());
    return textView;
   }
   
   @Override
   public Object getGroup(int groupPosition) {
    return armTypes[groupPosition];
   }
   
   @Override
   public int getGroupCount() {
    return armTypes.length;
   }
   
   @Override
   public long getGroupId(int groupPosition) {
    return groupPosition;
   }
   
   //该方法决定每个组选项的外观
   @Override
   public View getGroupView(int groupPosition, boolean isExpanded,
     View convertView, ViewGroup parent) {
    LinearLayout ll = new LinearLayout(ExpandableListViewTestActivity.this);
    ll.setOrientation(0);
    ImageView logo = new ImageView(ExpandableListViewTestActivity.this);
    logo.setImageResource(logos[groupPosition]);
    ll.addView(logo);
    TextView textView = getTextView();
    textView.setText(getGroup(groupPosition).toString());
    ll.addView(textView);
    return ll;
   }
   
   @Override
   public boolean isChildSelectable(int groupPosition, int childPosition) {
    return true;
   }
   
   @Override
   public boolean hasStableIds() {
    return true;
   }
  };
  ExpandableListView expandableListView = (ExpandableListView) findViewById(R.id.list);
  expandableListView.setAdapter(adapter);
十一、网格视图GridView和图片切换器ImageSwitcher
<!-- 定义一个组件GridView组件 -->
    <GridView android:id="@+id/grid01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:horizontalSpacing="0pt"
        android:numColumns="4"
        android:gravity="center"/>
    <!-- 定义一个ImageSwitcher组件 -->
    <ImageSwitcher android:id="@+id/switcher"
        android:layout_width="320dp"
        android:layout_height="320dp"
        android:layout_gravity="center_horizontal"/>
       
cell.xml
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="horizontal"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:gravity="center_horizontal"
 android:padding="5pt"
 >
<ImageView
 android:id="@+id/image1"
 android:layout_width="50dp"
 android:layout_height="50dp"
 /> 
</LinearLayout>

int[] imageIds = new int[]{
   R.drawable.bomb5,
   R.drawable.bomb6,
   R.drawable.bomb7,
   R.drawable.bomb8,
   R.drawable.bomb9,
   R.drawable.bomb10,
   R.drawable.bomb11,
   R.drawable.bomb12,
   R.drawable.bomb13,
   R.drawable.bomb14,
   R.drawable.bomb15,
   R.drawable.bomb16,
 };
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //创建一个List集合,List集合的元素是Map
        List<Map<String,Object>> listItems = new ArrayList<Map<String,Object>>();
        for(int i = 0;i<imageIds.length;i++)
        {
         Map<String,Object> listItem = new HashMap<String, Object>();
         listItem.put("image", imageIds[i]);
         listItems.add(listItem);
         
        }
        //获取显示图片的ImageSwitcher
        final ImageSwitcher switcher = (ImageSwitcher) findViewById(R.id.switcher);
        //设置图片更换的动画效果
        switcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
        switcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
        //为ImageSwitcher设置图片切换的动画效果
        switcher.setFactory(new ViewFactory() {
   @Override
   public View makeView() {
    ImageView imageView = new ImageView(GridViewTestActivity.this);
    imageView.setBackgroundColor(0xff0000);
    imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
    imageView.setLayoutParams(new ImageSwitcher.LayoutParams
      (LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
    return imageView;
   }
  });
        //创建一个SimpleAdapter
        SimpleAdapter simpleAdapter = new SimpleAdapter(this
          ,listItems
          ,R.layout.cell
          ,new String[]{"image"}
                ,new int[]{R.id.image1});
        GridView grid = (GridView) findViewById(R.id.grid01);
        //为GridView设置Adapter
        grid.setAdapter(simpleAdapter);
        //添加列表项被选中的监听器
        grid.setOnItemSelectedListener(new OnItemSelectedListener() {
   @Override
   public void onItemSelected(AdapterView<?> arg0, View arg1,
     int arg2, long arg3) {
    //显示当前被选中的图片
    switcher.setImageResource(imageIds[arg2%imageIds.length]);
   }

   @Override
   public void onNothingSelected(AdapterView<?> arg0) {}
  });
        //添加列表项被单击的监听器
        grid.setOnItemClickListener(new OnItemClickListener() {

   @Override
   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
     long arg3) {
    //显示当前被选中的图片
    switcher.setImageResource(imageIds[arg2%imageIds.length]);
   }
  });
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值