第1章 使用视图UI组件

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 }
时间: 2024-11-03 22:23:50

第1章 使用视图UI组件的相关文章

【Anroid】第9章 列表视图(1)--ListView相关类及其适配器

分类:C#.Android.VS2015: 创建日期:2016-02-18 一.简介 列表视图(ListView)是Android应用程序中使用最频繁的UI组件,从无处不在短菜单选项列表到冗长的联系人或internet收藏夹列表--都会用它来实现. ListView控件的用法非常灵活,既可以使用内置的视图呈现基本的样式,也可以用自定义视图呈现各种特殊的视觉效果. 要完全掌握Android提供的ListView控件的用法,需要解决下面的问题: (1)如何用Android内置的视图呈现列表视图中的每

交互设计:隐藏或显示大段文本的UI组件有哪些?

应用场景: 在手机上要给列表中的每一项添加一个大段的介绍,应该用什么UI组件 A: 这里可以用,模态对话框,弹出提示,工具提示这类组件.模态对话框的好处,就是用关闭的按钮,用户操作方便:而弹出提示和工具提示只能通过点击来切换 模态对话框: http://v2.bootcss.com/javascript.html#modals http://www.runoob.com/bootstrap/bootstrap-modal-plugin.html Bootstrap 模态框(Modal)插件 模态

Android UI组件进阶(2)——仿Windows对话框

Android UI组件进阶(2)--仿Windows对话框 在开始本章前先祝大家中秋节快乐哈,相信很多上班的朋友都是放三天假的哈! 有时间的话回家陪陪父母吧!树欲静而风不止,子欲养而亲不待!岁月不饶人! 好了,道理和祝福语就说到这里了,今天给大家准备的是模仿Windows风格对话框! 效果图: 相信大部分的AlertDialog都是下面这个样子的: 今天给大家讲解的对话框是下面这样的: 对比两种对话框,站在用户的角度,相信你更加钟情于第二种颜色鲜明的对话框 好了下面就开始讲解如何制作模仿win

关于Android界面编程与视图(View)组件

UI组件--------------->android.widget.* View组件------------->android.view.* 视图(View)组件 所有UI组件都是建立在视图(View)组件.容器(ViewGroup)组件基础之上的. UI组件继承之View组件 ViewGroup----------->作为其他组件的容器使用. ViewGroup包含View组件即 (UI组件---->继承自View组件. ViewGroup组件---->继承自View组件

界面编程与视图(View)组件

1.视图组件与容器组件 Android应用绝大部分UI组件都放在Android.widget包及其子包.android.view包及其子包中,其所有UI组件都继承了view类,view组件代表一个空白的矩形区域. View类还有一个重要的子类:ViewGroup,它通常作为其他组件的容器使用.ViewGroup除了包含普通view组件外,还可包含ViewGroup组件. 所有组件都提供了两种方式来控制组件的行为: a.在XML布局文件中通过XML属性进行控制. b.在JAVA程序代码中通过调用方

推荐 11 款 React Native 开源移动 UI 组件

推荐 11 款 React Native 开源移动 UI 组件 oschina 发布于 10个月前,共有 14 条评论 本文推荐 11 个非常棒的 React Native 开源组件,希望能给移动应用开发者提供帮助. React Native 是近期 Facebook 基于 MIT 协议开源的原生移动应用开发框架,已经用于 Facebook 的生产环境.React Native 可以使用最近非常流行的 React.js 库来开发 iOS 和 Android 原生 APP. 1. iOS 表单处理

重要的ui组件——Behavior

v7包下的组件类似CoordinatorLayout推出也有一段时间了,大家使用的时候应该会体会到其中很多的便利,今天这篇文章带大家来了解一个比较重要的ui组件——Behavior.从字面意思上就可以看出它的作用,就是用来规定某些组件的行为的,那它到底是什么,又该怎么用呢?看完这篇文章希望大家会有自己的收获- 前言 写这篇文章的起因是因为我无意中在GitHub上发现了Jake Wharton大神新建了一个Repo,内容是JakeWharton/DrawerBehavior.有兴趣的同学可以去看看

Android界面编程——Android高级UI组件(三)

Android界面编程 Android高级UI组件 2.4.1适配器组件 适配器的作用 适配器充当适配器控件和该视图数据之间的桥梁.适配器提供访问的数据项,并负责产生数据组中的每个项的视图. 常用的适配器 BaseAdapter:抽象类,具有较高的灵活性. ArrayAdapter:最为简单,智能展示一行文字. SimpleAdapter:有较好的扩充性,可以自定义出各种效果. SimpleCursorAdapter:主要用于操作数据库. 常用的适配器控制 适配器控件扩展自ViewAdapter

Android常见UI组件之ListView(一)

使用ListView显示一个长的项列表 1.新建一个名为"BasicView5"的Android项目: 2.修改BasicView5.java文件,修改后的程序如下: package com.example.basicview5; import android.os.Bundle; import android.app.Activity; import android.app.ListActivity; import android.view.Menu; import android.