`
stephen830
  • 浏览: 2977771 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

android开发中的UI控制(四)

 
阅读更多

android开发中的UI控制(四)

 

转载自:http://www.android777.com/index.php/tutorial/android-view/androids-ui-control-d.html

 

 

列表多值显示是Android中一个常用的功能,像是显示所有联系人、所有信息、文件目录等就需要列表显示控制。列表显示可以分为:纵向列表显示、Grid网格排列、Gallery横向显示。 ListView: ListView主要用来显示纵向的列表。一般我们通过编写一个继承ListActivity的Activity类来做展示界面,因为 ListActivity内置了一个ListView对象。通过调用ListActivity.setListAdpater将需要显示的数据使用一个 Adapter绑定到ListView中。


上面可以看到ListView的类层次结构,它是一个ViewGroup,表明它是一个容器,里面可以放View对象,这边的View对象就是ListView里面的一条数据。详细使用方法请看ListView教程

 

 Grid: 很多UI界面都需要使用Grid来显示二维数据,Grid就像是Html中的table用来显示一个表的行列值,Grid也可以被用来显示图标,android系统启动后的菜单列出了所有应用就是用Grid控制。 用Grid显示数据:


这种用Grid显示数据在B/S和C/S中比较常见,在手机由于受到屏幕大小限制用这种方式显示数据很不方便,所有一般Grid用来显示一些图标,如系统的应用图片:


下面我们使用系统应用程序的图标创建一个Grid显示所有可运行的应用程序icon。首先需要获取系统所有应用程序列表,在这边可以通过Intent进行查询

 

        //使用Intent查询出所有的app启动Activity信息
        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        List<ResolveInfo> apps = getPackageManager().queryIntentActivities(mainIntent, 0);
 

查找出结果后将会存放在一个List<ResolveInfo>中,里面包含了所有应用程序的启动Activity信息。接着编写一个自定义ArrayAdapter 将List<ResolveInfo>显示到GridView中。代码如下:

	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gridview);
        
        GridView gridView = (GridView) findViewById(R.id.dataGrid);
        
        //使用Intent查询出所有的app启动Activity信息
        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        List<ResolveInfo> apps = getPackageManager().queryIntentActivities(mainIntent, 0);
 
        gridView.setAdapter(new AppAdapter(this, apps));
    }
    
    class AppAdapter extends ArrayAdapter<ResolveInfo>{
    	Context mContext;
    	 
        public AppAdapter(Context context,List<ResolveInfo> apps){
            super(context,0,apps);
            mContext = context;
        }

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ImageView  view ;
			 
            if(convertView == null){
                view = new ImageView(mContext);
                view.setLayoutParams(new GridView.LayoutParams(50, 50));
            }else{
                view = (ImageView) convertView;
            }
 
            ResolveInfo mResolveInfo = getItem(position);
            view.setImageDrawable(mResolveInfo.activityInfo.loadIcon(getPackageManager()));
 
            return view;
		}
        
        
    }
   
 

java代码引用的xml布局文件:res\layout\gridview.xml:

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dataGrid"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10px"
    android:verticalSpacing="10px"
    android:horizontalSpacing="10px"
    android:numColumns="auto_fit"
    android:columnWidth="80px"
    android:stretchMode="columnWidth"
    android:gravity="center" 
	/>

 

运行效果如下:


 

上面我们通过代码创建ImageView用来显示启动Activity的icon,将它的大小设置成50×50。在GridView布局中,使用自适应的 列布局,系统将根据GridView中每个Item的大小自动划分为n列,同时再设置每个Item之间的间距大小。

 

GridView和ListView的 用法很像,他们都继承了AbsListAdapter,不同的是GridView用网格布局可以有多个列,而ListView只是单列多行模式。


 

 

 

日期和事件控制,DatePicker和TimePicker: DatePicker用来选取日期而TimePicker用来选取时间。选择日期和时间,在很多应用程序中经常用到,android由于受到手机屏幕大小 的限制无法像其他GUI框架一样创建复杂的布局来显示日期和时间,所以它们在android中的展现比较简洁。


我们可以通过在xml布局文件中通过声明 DatePicker和TimePicker节点来创建者两个对象: res\layout\datetime.xml:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:orientation="vertical"
    android:layout_height="fill_parent"
    >
 
    <DatePicker 
    	android:id="@+id/datePicker"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        />
    <TimePicker 
    	android:id="@+id/timePicker"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        />
</LinearLayout>
 

 


 

代码很简单,上面就是显示的效果,看起来是不是太大了点,但是考虑到手机上的特殊国情,如果按钮太小可能用触摸屏就不好操作。如果你要控制具体的日期和时间,可以在程序中动态的修改。

 

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.datetime);
        
        DatePicker dp = (DatePicker) findViewById(R.id.datePicker);
        TimePicker tp = (TimePicker) findViewById(R.id.timePicker);
         
        dp.init(2012, //年
                11,   //月 基于0,所以11代表12月
                28,   //日
                null);
        tp.setIs24HourView(true); //使用24小时格式
        tp.setCurrentHour(new Integer(10)); //设置当前小时
        tp.setCurrentMinute(new Integer(10)); //设置分钟
    }

 

运行效果如下:


 

上面讲日期设置成2012-12-28,时间是10:10,如果我们没有在代码中修改时间,默认显示的是手机当前的日期和时间。Android还提供了 DatePickerDialog和TimePickerDialog两个对话框让用户可以在对话框中挑选日期和时间,避免这两个控件占用太多的空间。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 6.1 KB
  • 大小: 30.7 KB
  • 大小: 54.4 KB
  • 大小: 47.5 KB
  • 大小: 4.9 KB
  • 大小: 21.6 KB
  • 大小: 20.2 KB
分享到:
评论

相关推荐

    安卓Android源码——ui开发类库示例源码.zip

    6. **DialogFragment**:对话框在Android应用中广泛应用,DialogFragment是Android官方推荐的方式,它继承自Fragment,可以方便地管理和控制对话框的显示与消失。 7. **动画(Animation)**:Android支持属性动画...

    android 7.0 SystemUI

    在Android系统架构中,SystemUI位于应用层与系统服务层之间,它提供了通知中心、状态栏、快速设置面板、锁屏界面以及各种系统级别的交互控件。深入理解SystemUI的源代码对于开发者优化系统UI性能、自定义系统行为或...

    android 开发教程UI部分

    在Android开发中,UI部分是构建用户界面的关键,它决定了应用程序的外观和用户体验。本教程主要涵盖Android UI设计的基础知识。 1. 用户界面(UI)理解 用户界面是人与机器交互的桥梁,尤其在当前高度竞争的软件...

    android验证码界面ui实现

    在Android应用开发中,验证码界面UI的实现是一个常见的功能,主要用于身份验证或安全验证环节。本文将详细讲解如何在Android中实现一个具有60秒倒计时功能的验证码界面,以及如何通过PopupWindow来弹出这个界面。 ...

    老罗Android开发视频教程 (android常用UI编程) 26-33集源码

    在本资源中,"老罗Android开发视频教程 (android常用UI编程) 26-33集源码.zip"是一个包含Android应用开发教学内容的压缩文件。老罗,可能指的是知名的技术讲师罗永浩,以其通俗易懂的讲解风格而闻名。这个教程聚焦于...

    Android新手UI集合全

    在Android开发领域,UI设计是至关重要的一环,它直接影响到应用程序的用户体验和视觉吸引力。"Android新手UI集合全"这个资源包,显然为初学者提供了一整套的UI设计元素,帮助他们快速理解和实践Android应用界面的...

    Android8.1 SystemUI源码

    本文将深入探讨Android 8.1版本的SystemUI源码,介绍其结构、工作原理以及如何利用提供的gradle配置进行开发。 首先,让我们来看看`SystemUI`的构成。SystemUI组件主要由以下几个部分组成: 1. **StatusBar**:...

    android开发 获取UI十六进制颜色码 工具

    在Android开发过程中,UI设计是至关重要的一个环节,而颜色管理是UI设计中的核心部分。开发者经常需要知道屏幕上的各种UI元素所使用的具体颜色值,以便在代码中精确地重现这些颜色。本教程将详细介绍如何获取UI的...

    androidUI设计器

    Android UI 设计器是Android开发中的一个重要工具,它允许开发者直观地设计应用程序的用户界面,无需手动编写XML布局代码。这个工具极大地提升了开发效率,使得非程序员也能参与到UI设计中来,实现快速预览和调整...

    Android things简单的UI

    总之,Android Things提供了将Android的丰富UI开发经验应用于物联网设备的机会。通过理解如何在有限的硬件资源上构建和管理UI,开发者可以创造出功能强大且直观的物联网解决方案。sample-simpleui项目就是一个很好的...

    android项目整体UI框架

    在Android应用开发中,UI框架的设计是至关重要的,它直接影响到应用的用户体验和代码的可维护性。"android项目整体UI框架"这个主题主要涵盖了三个方面:自定义Android项目的底部任务栏、实用Fragment的切换以及项目...

    android 仿锤子UI布局

    在Android开发中,锤子手机以其独特的UI设计风格赢得了众多用户的喜爱。为了实现类似锤子UI的布局,开发者需要深入理解Android布局系统,并掌握一些特殊的设计技巧。本篇将主要探讨如何在Android中仿制锤子UI的格子...

    android 音乐开发 ui素材

    "android 音乐开发 UI素材"这个主题涉及到的是应用程序用户界面中的图形元素,尤其是针对音乐播放功能的按钮和布局设计。酷狗音乐和网易云音乐是两款在中国非常流行的音乐应用,它们的UI设计被广大用户所接受和喜爱...

    Android UI统一框架

    在Android开发中,UI设计和实现是至关重要的部分。为了提高代码的可维护性和复用性,开发者常常会构建一个统一的UI框架。这个框架旨在规范应用中的界面设计,简化多维度UI管理,减少代码冗余,提升开发效率。本文将...

    android模仿易信UI布局效果源码

    在Android开发中,模仿流行的移动应用UI布局是提升用户体验和设计水平的重要步骤。易信,作为一款在中国广受欢迎的即时通讯应用,其简洁而高效的设计风格深受用户喜爱。本源码项目专注于重现易信的UI布局,帮助...

    [毕设季 android开发]第六讲:Android线程及UI更新

    在Android应用开发中,线程管理和UI更新是至关重要的部分,因为Android系统为每个应用程序分配一个主线程,也称为UI线程。主线程主要负责处理用户界面的交互,包括绘制和更新视图。然而,执行耗时的操作(如网络请求...

    android UI 各种小例子

    在Android开发中,UI设计是至关重要的一环,它关乎到应用程序的用户体验和视觉吸引力。本压缩包中的"android UI 各种小例子"为初学者提供了丰富的实践资源,旨在帮助开发者掌握基本的Android用户界面设计技巧。每个...

    Android开发入门60个小案例+源代码

    在Android开发领域,初学者经常会面临许多挑战,如理解Android应用程序的基本架构、学习XML布局、掌握Java或Kotlin编程语言,以及如何与...在学习过程中,建议结合官方文档和其他教程,以全面、深入地学习Android开发。

    Android所有UI控件

    在Android开发中,UI(用户界面)控件是构建应用程序不可或缺的部分。它们为用户提供与应用交互的方式,使得信息展示和操作更加直观。Android系统提供了多种控件,涵盖各种功能,从简单的按钮到复杂的布局。本篇文章...

    原生android SystemUI源码

    总的来说,原生Android SystemUI源码是一个深度学习Android系统架构和用户界面设计的宝贵资源,通过它,开发者可以更深入地理解Android系统的工作原理,从而提高自己的开发技能和解决问题的能力。

Global site tag (gtag.js) - Google Analytics