GridView
使用方法。同ListView。用于显示列表视图,也是通过Adapter进行数据的适配。
android:horizontalSpacing="6dp"---横向间距6dp
android:numColumns="3"---指定列数:三列
通过setOnItemClickListener为其添加条目点击监听
ScrollView
用于嵌套在其他组件之上,使不能完全显示的组件滚动显示
内部只能嵌套一个组件,如果要嵌套多个,就用ViewGroup包裹。
HorizontalScrollView
使用方法同ScrollView,只是滚动方向变成了横向,内部也只能放置一个组件
Gallery:
横向滚动的用于展示图片的组件。
android:spacing="1dp" ---图片间距
通过Adapter设置要显示的数据
通过setOnItemClickListener为其添加条目点击监听
//滚动的时候不触发OnItemSelectedListener
gallery.setCallbackDuringFling(false); ------ 滚动状态下,不触发选中监听
gallery.setOnItemSelectedListener()-----------设置条目选中的监听
ImageSwitcher:
切换展示图片,继承于FrameLayout
通过setFactory的方法来添加内部的ImageView
1 switcher.setFactory(new ViewFactory() { 2 public View makeView() { 3 ImageView iv = new ImageView(MainActivity.this); 4 //设置ImageView的宽高 5 iv.setLayoutParams(new FrameLayout.LayoutParams( 6 LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 7 //设置图片的缩放规则 8 iv.setScaleType(ScaleType.CENTER_CROP); 9 return iv; 10 } 11 }); 12 switcher.setInAnimation(ani_in);//添加图片切入时的动画效果
通过setonClickListener的方法为其添加点击监听
在代码中动态添加View组件:
首先获取到ViewGroup对象,然后实例化出需要添加的组件,并且设置其属性(宽高、边距等)通过viewgroup.addView(view);
在代码中动态删除View组件:
viewgroup.removeAllViews();
案例代码:
1 public class MainActivity extends Activity { 2 int[] images = new int[] { R.drawable.aa, R.drawable.bb, R.drawable.cc, 3 R.drawable.dd, R.drawable.ee, R.drawable.ff, R.drawable.gg, 4 R.drawable.aa, R.drawable.bb, R.drawable.cc, R.drawable.dd, 5 R.drawable.ee, R.drawable.ff, R.drawable.gg, R.drawable.aa, 6 R.drawable.bb, R.drawable.cc, R.drawable.dd, R.drawable.ee }; 7 private LinearLayout auto; 8 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_main); 13 RadioGroup rb = (RadioGroup) this.findViewById(R.id.rg); 14 auto = (LinearLayout) this.findViewById(R.id.auto_view); 15 rb.setOnCheckedChangeListener(new OnCheckedChangeListener() { 16 17 @Override 18 public void onCheckedChanged(RadioGroup group, int checkedId) { 19 // TODO Auto-generated method stub 20 switch (checkedId) { 21 case R.id.bt1: 22 initGridView(); 23 break; 24 case R.id.bt2: 25 initScrollView(); 26 break; 27 case R.id.bt3: 28 initGallery(); 29 break; 30 case R.id.bt4: 31 initImageSwitcher(); 32 break; 33 } 34 } 35 }); 36 37 // initGridView(); 38 // initScrollView(); 39 // initGallery(); 40 // initImageSwitcher(); 41 42 } 43 44 private void initImageSwitcher() { 45 // TODO Auto-generated method stub 46 View v = View.inflate(this, R.layout.switcher_layout, null); 47 final ImageSwitcher switcher = (ImageSwitcher) v 48 .findViewById(R.id.switcher); 49 switcher.setFactory(new ViewFactory() { 50 51 @Override 52 public View makeView() { 53 // TODO Auto-generated method stub 54 ImageView iv = new ImageView(MainActivity.this); 55 iv.setLayoutParams(new FrameLayout.LayoutParams( 56 LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 57 58 iv.setScaleType(ScaleType.CENTER_CROP); 59 return iv; 60 } 61 }); 62 Animation ani_in = AnimationUtils.loadAnimation(this, 63 android.R.anim.fade_in); 64 switcher.setInAnimation(ani_in); 65 Animation ani_out = AnimationUtils.loadAnimation(this, 66 android.R.anim.fade_out); 67 switcher.setOutAnimation(ani_out); 68 69 switcher.setImageResource(images[0]); 70 switcher.setOnClickListener(new OnClickListener() { 71 int i = 0; 72 73 @Override 74 public void onClick(View v) { 75 switcher.setImageResource(images[++i % images.length]); 76 } 77 }); 78 auto.removeAllViews(); 79 auto.addView(v); 80 } 81 82 private void initGallery() { 83 // TODO Auto-generated method stub 84 View v = View.inflate(this, R.layout.gallery_layout, null); 85 Gallery gallery = (Gallery) v.findViewById(R.id.gallery); 86 87 gallery.setAdapter(getAdapter()); 88 //滚动的时候不触发OnItemSelectedListener 89 gallery.setCallbackDuringFling(false); 90 gallery.setOnItemSelectedListener(new OnItemSelectedListener() { 91 92 @Override 93 public void onItemSelected(AdapterView<?> parent, View view, 94 int position, long id) { 95 Log.w("positon", " " + position); 96 } 97 98 @Override 99 public void onNothingSelected(AdapterView<?> parent) { 100 101 } 102 }); 103 auto.removeAllViews(); 104 auto.addView(v); 105 } 106 107 private void initScrollView() { 108 // setContentView(R.layout.scorll_layout); 109 View v = (LinearLayout) View 110 .inflate(this, R.layout.scorll_layout, null); 111 112 LinearLayout linear_1 = (LinearLayout) v 113 .findViewById(R.id.scroll_linear); 114 // LinearLayout linear_1 = (LinearLayout) this 115 // .findViewById(R.id.scroll_linear); 116 for (int i = 0; i < images.length; i++) { 117 LinearLayout ll = (LinearLayout) View.inflate(this, R.layout.image, 118 null); 119 ImageView iv1 = (ImageView) ll.findViewById(R.id.iviv1); 120 iv1.setImageResource(images[i]); 121 122 ImageView iv2 = (ImageView) ll.findViewById(R.id.iviv2); 123 if (++i < images.length) { 124 125 iv2.setImageResource(images[i]); 126 } 127 linear_1.addView(ll); 128 } 129 auto.removeAllViews(); 130 auto.addView(v); 131 } 132 133 private void initGridView() { 134 // TODO Auto-generated method stub 135 // setContentView(R.layout.scorll_layout); 136 View v = View.inflate(this, R.layout.gridview_layout, null); 137 GridView gv = (GridView) v.findViewById(R.id.grid_view); 138 gv.setAdapter(getAdapter()); 139 gv.setOnItemClickListener(new OnItemClickListener() { 140 @Override 141 public void onItemClick(AdapterView<?> parent, View view, 142 int position, long id) { 143 // TODO Auto-generated method stub 144 Toast.makeText(MainActivity.this, "positon " + position, 1) 145 .show(); 146 } 147 }); 148 auto.removeAllViews(); 149 auto.addView(v); 150 } 151 152 public SimpleAdapter getAdapter() { 153 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); 154 155 String[] names = new String[] { "aa", "bb", "cc", "dd", "ee", "ff", 156 "gg", "aa", "bb", "cc", "dd", "ee", "ff", "gg", "aa", "bb", 157 "cc", "dd", "ee" }; 158 Map<String, Object> map = null; 159 for (int i = 0; i < names.length; i++) { 160 map = new HashMap<String, Object>(); 161 map.put("images", images[i]); 162 map.put("names", names[i]); 163 list.add(map); 164 } 165 166 SimpleAdapter adapter = new SimpleAdapter(this, list, 167 R.layout.gridview_item, new String[] { "images", "names" }, 168 new int[] { R.id.image_view, R.id.textview }); 169 170 return adapter; 171 172 } 173 }