- 浏览: 3025883 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (893)
- android (110)
- iphone (198)
- java (79)
- JavaScript手册-目录 (9)
- JavaScript手册-Array (19)
- JavaScript手册-Boolean (5)
- JavaScript手册-Date (50)
- JavaScript手册-Math (30)
- JavaScript手册-Number (14)
- JavaScript手册-RegExp (7)
- JavaScript手册-String (38)
- JavaScript手册-全局函数 (8)
- JavaScript实用脚本 (7)
- Others (21)
- java-jpcap (7)
- java-thread (1)
- ibm文章 (3)
- classloader (2)
- java-filter (2)
- 运行环境 (33)
- java-正则 (2)
- oracle (1)
- linux-shell (26)
- wap (1)
- sqlite (3)
- wow (1)
- jvm (1)
- git (5)
- unity3d (29)
- iap (2)
- mysql (23)
- nginx (14)
- tomcat (9)
- apache (2)
- php (1)
- ubuntu (40)
- rsa (1)
- golang (21)
- appstore (5)
- sftp (2)
- log4j (2)
- netty (18)
- 测试工具 (6)
- memcache (5)
- 设计模式 (1)
- centos (8)
- google_iab (5)
- iOS专题 (4)
- mac (10)
- 安装配置帮助手册 (2)
- im4java_graphicsmagick (5)
- inotify-tools (1)
- erlang (6)
- 微信支付 (1)
- redis (8)
- RabbitMQ (5)
最新评论
-
heng123:
Netty视频教程https://www.douban.com ...
netty4.0.23 初学的demo -
maotou1988:
使用Netty进行Android与Server端通信实现文字发 ...
netty4.0.23 初学的demo -
码革裹尸:
非常感谢,正好用上
android 呼入电话的监听(来电监听) -
rigou:
提示的/222.177.4.242 无法链接到ip地址,是什 ...
通过 itms:services://? 在线安装ipa ,跨过app-store -
duwanbo:
GridView与数据绑定
android开发中的UI控制(五)
转载自:http://www.android777.com/index.php/tutorial/android-view/androids-ui-control-v.html
下面看几个比较有意思的UI控件。
Spinner:
Spinner是AdaperView的子类,跟ListView、GridView一样,所以得设置Adapter提供数据源。
一般Spinner用来显示静态的数据源,所以我们现在res\values\string.xml中定义一个数据来源:
<string name="prompt_province">请选择省份</string> <string-array name="province"> <item>福建省</item> <item>湖南省</item> <item>湖北省</item> <item>浙江省</item> </string-array>
然后在java代码中,我们将这些值创建成ArrayAdapter,然后显示到Spinner中:
Spinner spinner; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //获取Spinner spinner = (Spinner)findViewById(R.id.spinner1); //准备Spinner的数据 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.province, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item); //配置Spinner的adapter. spinner.setAdapter(adapter); //监听Spinner的选择事件 spinner.setOnItemSelectedListener(new OnItemSelectedListener(){ @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { CharSequence[] data = getResources().getTextArray(R.array.province); Toast.makeText(getApplicationContext(), "选择了"+data[position] , Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> parent) { Toast.makeText(getApplicationContext(), "选择了nothing" , Toast.LENGTH_SHORT).show(); } }); }
Activity所用到的布局文件main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Spinner android:id="@+id/spinner1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:prompt="@string/prompt_province" /> </LinearLayout>
效果图如下:
Gallery:
Gallery是一个横向的可滚动的list容器,它的焦点一直是在区域的中间部分。它一般用来显示一系列照片,特别是在触摸屏中经常使用它。可以通过在xml中定义:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Gallery android:id="@+id/gallery01" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
然后跟其他的ListView、GridView、Spinner一样,我们将一个Adapter与它进行绑定,用来显示几张图片。这边还有一个额外的操作就是要定义一个样式,作为它里面item的样式。在这边我们通过在attrs.xml里定义一个样式来实现:
res\values\attrs.xml:
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyGallery"> <attr name="android:galleryItemBackground" /> </declare-styleable> </resources>
然后将需要显示的图片(附件中的图片js1.jpg,js2.jpg,js3.jpg,js4.jpg,js5.jpg)放到res\drawable或res\drawable-*中。
在显示的Activity里,定义一个内部类MyBaseAdapter用来将数据和Gallery进行绑定。
MyBaseAdapter.java
package com.zhouzijing.android; import java.util.List; import android.content.Context; import android.content.res.TypedArray; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; public class MyBaseAdapter extends BaseAdapter { private List<Person> persons; Context context; int mGalleryItemBackground; public MyBaseAdapter(Context context,List<Person> persons){ this.persons = persons; this.context = context; //获取自定义样式 TypedArray attr = context.obtainStyledAttributes(R.styleable.MyGallery); //获取样式里的资源 mGalleryItemBackground = attr.getResourceId( R.styleable.MyGallery_android_galleryItemBackground, 0); attr.recycle(); } @Override public int getCount() { return (persons==null)?0:persons.size(); } @Override public Object getItem(int position) { return persons.get(position); } @Override public long getItemId(int position) { return position; } public class ViewHolder{ TextView textViewItem01; ImageView imageView; } @Override public View getView(int position, View convertView, ViewGroup parent) { final Person person = (Person)getItem(position); ViewHolder viewHolder = null; if(convertView==null){ Log.d("MyBaseAdapter", "新建convertView,position="+position); convertView = LayoutInflater.from(context).inflate( R.layout.gallery1_item, null); viewHolder = new ViewHolder(); viewHolder.textViewItem01 = (TextView)convertView.findViewById( R.id.text_view_01); viewHolder.imageView = (ImageView)convertView.findViewById( R.id.image_view_01); convertView.setTag(viewHolder); }else{ viewHolder = (ViewHolder)convertView.getTag(); Log.d("MyBaseAdapter", "旧的convertView,position="+position); } viewHolder.textViewItem01.setText(person.title); viewHolder.imageView.setImageResource(person.photo); viewHolder.imageView.setBackgroundResource(mGalleryItemBackground); return convertView; } }
然后在Activity的onCreate方法中,找出Gallery,然后将之前定义的所有图片资源放到自定义的adapter:MyBaseAdapter中,跟Gallery绑定。
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gallery1); //要显示的图片 final List<Person> persons = new ArrayList<Person>(); persons.add(new Person("夜景1",R.drawable.js1)); persons.add(new Person("夜景2",R.drawable.js2)); persons.add(new Person("夜景3",R.drawable.js3)); persons.add(new Person("夜景4",R.drawable.js4)); persons.add(new Person("夜景5",R.drawable.js5)); //显示Gallery Gallery g = (Gallery) findViewById(R.id.gallery01); g.setAdapter(new MyBaseAdapter(this, persons)); g.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getApplicationContext(), "点击了"+persons.get(position).title, Toast.LENGTH_SHORT).show(); } }); }
效果图如下:
发表评论
-
Android Fragment 真正的完全解析(下)
2015-03-25 14:30 1145Android Fragment 真正 ... -
Android Fragment 真正的完全解析(上)
2015-03-25 10:14 942Android Fragment 真正的 ... -
Activity的生命周期方法
2015-03-25 09:54 609一:Activity的生命周期方法 Android ... -
Android在layout xml中使用include
2015-03-25 07:28 1025在Android的layout样式定义中,可以使 ... -
一个支持圆角的快速ImageView:RoundedImageView
2015-03-07 09:50 11125一个支持圆角的快速ImageView:Rounded ... -
ImageView图片设置
2015-03-05 23:08 990显示任意图像,例如图标。ImageView类可以加载 ... -
ListActivity的onListItemClick不响应的解决办法
2015-03-04 17:57 1136ListActivity的onListItemClic ... -
ListView中有控件隐藏或显示造成的显示错误问题
2015-03-03 23:03 1886ListView中有控件隐藏或显示造成的显示错误问题 ... -
Android中Application类用法
2015-03-03 09:12 1027Android中Application类用法 ... -
Android使用Application总结
2015-03-03 09:11 1219Android使用Application ... -
在android中运行java main方法
2015-02-27 10:38 1031在android中运行java main方法 ... -
android BitmapFactory.Options
2015-02-19 21:01 1059public Bitmap inBi ... -
android 基础demo例子
2015-02-16 21:06 860demoDatas.add(new DemoBe ... -
Android大图片裁剪终极解决方案
2015-02-15 17:08 2195Android大图片裁剪终 ... -
Android_照相机Camera_调用系统照相机返回data为空
2015-02-15 14:17 1317Android_照相机Camera_调用系统照相机返回 ... -
Android: 打印Bundle内容
2015-02-15 14:11 3026Android: 打印Bundle内容 有的时 ... -
android线程、UI、AsyncTask
2015-02-13 18:06 1307本文是转摘的,看过了觉得很好!所以转了过来!如果你想要 ... -
Fragment中ListView的使用
2015-02-06 23:01 2155Fragment中ListView的使用 直接 ... -
在安卓开发时用酷派手机无法打印出应用内的日志的解决方法
2014-12-11 20:39 1227在安卓开发时用酷派手机无法打印出应用内的日志的解决方法 ... -
查看安卓APK文件证书的方法
2014-12-04 10:05 1053************************** ...
相关推荐
6. **DialogFragment**:对话框在Android应用中广泛应用,DialogFragment是Android官方推荐的方式,它继承自Fragment,可以方便地管理和控制对话框的显示与消失。 7. **动画(Animation)**:Android支持属性动画...
本文将深入探讨Android 8.1版本的SystemUI源码,介绍其结构、工作原理以及如何利用提供的gradle配置进行开发。 首先,让我们来看看`SystemUI`的构成。SystemUI组件主要由以下几个部分组成: 1. **StatusBar**:...
在Android开发中,UI部分是构建用户界面的关键,它决定了应用程序的外观和用户体验。本教程主要涵盖Android UI设计的基础知识。 1. 用户界面(UI)理解 用户界面是人与机器交互的桥梁,尤其在当前高度竞争的软件...
在Android系统架构中,SystemUI位于应用层与系统服务层之间,它提供了通知中心、状态栏、快速设置面板、锁屏界面以及各种系统级别的交互控件。深入理解SystemUI的源代码对于开发者优化系统UI性能、自定义系统行为或...
尽管AbsoluteLayout在Android SDK 2.3.3之后不再推荐使用,但在早期版本中,它可以允许开发者精确控制每个子视图的位置,通过设置`android:layout_x`和`android:layout_y`属性。然而,由于其不适用于不同屏幕尺寸和...
Android开发自定义View之仿米家APP双色灯控制UI:做一个智能家居产品的简单智能灯UI https://blog.csdn.net/xh870189248/article/details/80486158
在本资源中,"老罗Android开发视频教程 (android常用UI编程) 26-33集源码.zip"是一个包含Android应用开发教学内容的压缩文件。老罗,可能指的是知名的技术讲师罗永浩,以其通俗易懂的讲解风格而闻名。这个教程聚焦于...
在Android开发领域,UI设计是至关重要的一环,它直接影响到应用程序的用户体验和视觉吸引力。"Android新手UI集合全"这个资源包,显然为初学者提供了一整套的UI设计元素,帮助他们快速理解和实践Android应用界面的...
在Android开发过程中,UI设计是至关重要的一个环节,而颜色管理是UI设计中的核心部分。开发者经常需要知道屏幕上的各种UI元素所使用的具体颜色值,以便在代码中精确地重现这些颜色。本教程将详细介绍如何获取UI的...
Android UI 设计器是Android开发中的一个重要工具,它允许开发者直观地设计应用程序的用户界面,无需手动编写XML布局代码。这个工具极大地提升了开发效率,使得非程序员也能参与到UI设计中来,实现快速预览和调整...
总之,Android Things提供了将Android的丰富UI开发经验应用于物联网设备的机会。通过理解如何在有限的硬件资源上构建和管理UI,开发者可以创造出功能强大且直观的物联网解决方案。sample-simpleui项目就是一个很好的...
在Android应用开发中,UI框架的设计是至关重要的,它直接影响到应用的用户体验和代码的可维护性。"android项目整体UI框架"这个主题主要涵盖了三个方面:自定义Android项目的底部任务栏、实用Fragment的切换以及项目...
在Android开发中,锤子手机以其独特的UI设计风格赢得了众多用户的喜爱。为了实现类似锤子UI的布局,开发者需要深入理解Android布局系统,并掌握一些特殊的设计技巧。本篇将主要探讨如何在Android中仿制锤子UI的格子...
"android 音乐开发 UI素材"这个主题涉及到的是应用程序用户界面中的图形元素,尤其是针对音乐播放功能的按钮和布局设计。酷狗音乐和网易云音乐是两款在中国非常流行的音乐应用,它们的UI设计被广大用户所接受和喜爱...
在Android开发中,UI设计和实现是至关重要的部分。为了提高代码的可维护性和复用性,开发者常常会构建一个统一的UI框架。这个框架旨在规范应用中的界面设计,简化多维度UI管理,减少代码冗余,提升开发效率。本文将...
在Android开发中,模仿流行的移动应用UI布局是提升用户体验和设计水平的重要步骤。易信,作为一款在中国广受欢迎的即时通讯应用,其简洁而高效的设计风格深受用户喜爱。本源码项目专注于重现易信的UI布局,帮助...
在Android应用开发中,线程管理和UI更新是至关重要的部分,因为Android系统为每个应用程序分配一个主线程,也称为UI线程。主线程主要负责处理用户界面的交互,包括绘制和更新视图。然而,执行耗时的操作(如网络请求...
在Android开发中,UI设计是至关重要的一环,它关乎到应用程序的用户体验和视觉吸引力。本压缩包中的"android UI 各种小例子"为初学者提供了丰富的实践资源,旨在帮助开发者掌握基本的Android用户界面设计技巧。每个...
在Android开发领域,初学者经常会面临许多挑战,如理解Android应用程序的基本架构、学习XML布局、掌握Java或Kotlin编程语言,以及如何与...在学习过程中,建议结合官方文档和其他教程,以全面、深入地学习Android开发。
在Android开发中,UI(用户界面)控件是构建应用程序不可或缺的部分。它们为用户提供与应用交互的方式,使得信息展示和操作更加直观。Android系统提供了多种控件,涵盖各种功能,从简单的按钮到复杂的布局。本篇文章...