- 浏览: 675574 次
- 性别:
- 来自: 安徽
文章分类
- 全部博客 (252)
- Html/Div+CSS (12)
- Js/Jquery (34)
- Flex (2)
- Ajax (3)
- Java (35)
- C# (15)
- Spring (16)
- Hibernate (13)
- Struts2 (12)
- Struts1 (7)
- DWR (1)
- iBatis/myBatis (9)
- Tag(JSTL、EL) (1)
- Android (44)
- SQL (7)
- SEO (7)
- Exception (3)
- Tool (10)
- Other (3)
- WebService (9)
- Apache (7)
- Ext (0)
- Utils (12)
- thinking in programme (2)
- Hadoop (0)
- ActiveMQ (0)
- HTML5/CSS3 (0)
- WPF (1)
- NodeJs (1)
- 设计模式 (0)
- 程序人生 (1)
- 随笔 (1)
- Linux (1)
- Load Balance (0)
最新评论
-
drinkjava2:
太复杂了而且不通用,利用ThreadLocal可完美解决这一问 ...
JDBC的多条件动态查询 -
u013107014:
multipartRequest.getFiles(" ...
多文件上传 by MultipartFile and Multiple -
liyys:
可惜没讲你mysql数据库的表的设计
iBatis入门 -
Mapple_leave:
效果还是挺不错的,谢谢了。
中文简体与繁体的转换 -
arcpad:
JS禁用浏览器退格键
Android学习08-----Android中的基本控件(下)(4)_Toast ImageSwitcher TextSwitcher
- 博客分类:
- Android
一、信息提示框: Toast
1 、提示文字信息
Main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/butA" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="长时间显示Toast" /> <Button android:id="@+id/butB" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="短时间显示Toast" /> </LinearLayout>
Toast01Activity.java
package com.iflytek.demo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class Toast01Activity extends Activity { private Button butA = null; private Button butB = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.butA = (Button) super.findViewById(R.id.butA); this.butB = (Button) super.findViewById(R.id.butB); this.butA.setOnClickListener(new OnClickListenerImplLong()); this.butB.setOnClickListener(new OnClickListenerImplShort()); } private class OnClickListenerImplLong implements OnClickListener { @Override public void onClick(View v) { Toast.makeText(Toast01Activity.this, "长时间显示的Toast信息提示框", Toast.LENGTH_LONG).show(); } } private class OnClickListenerImplShort implements OnClickListener { @Override public void onClick(View v) { Toast.makeText(Toast01Activity.this, "短时间显示的Toast信息提示框", Toast.LENGTH_SHORT).show(); } } }
2 、自定义显示风格
Toast02Activity.java
package com.iflytek.demo; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; public class Toast02Activity extends Activity { private Button but = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.but = (Button) super.findViewById(R.id.but); this.but.setOnClickListener(new OnClickListenerImpl()); } private class OnClickListenerImpl implements OnClickListener { @Override public void onClick(View v) { Toast myToast = Toast.makeText(Toast02Activity.this, "安徽合肥", Toast.LENGTH_LONG); myToast.setGravity(Gravity.CENTER, 60, 30); LinearLayout myToastView = (LinearLayout) myToast.getView(); // 线性布局 ImageView img = new ImageView(Toast02Activity.this); img.setImageResource(R.drawable.ic_launcher); myToastView.addView(img, 0); // 放在最前面 myToast.show(); } } }
二、图片切换: ImageSwitcher
Main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ImageSwitcher android:id="@+id/myImageSwitcher" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <Button android:id="@+id/butPrevious" android:layout_width="wrap_content" android:layout_height="wrap_content" android:enabled="false" android:text="上一张图片" /> <Button android:id="@+id/butNext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:enabled="true" android:text="下一张图片" /> </LinearLayout> </LinearLayout>
ImageSwitcherActivity.java
package com.iflytek.demo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.ImageSwitcher; import android.widget.ImageView; import android.widget.ViewSwitcher.ViewFactory; public class ImageSwitcherActivity extends Activity { private Button butPrevious = null; private Button butNext = null; private ImageSwitcher myImageSwitcher = null; private int[] imgRes = new int[] { R.drawable.ispic_a, R.drawable.ispic_b, R.drawable.ispic_c, R.drawable.ispic_d, R.drawable.ispic_e }; private int foot = 0; // 表示当前已经显示的数组图片的脚标 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.myImageSwitcher = (ImageSwitcher) super .findViewById(R.id.myImageSwitcher); this.butPrevious = (Button) super.findViewById(R.id.butPrevious); this.butNext = (Button) super.findViewById(R.id.butNext); this.myImageSwitcher.setFactory(new ViewFactoryImpl()); this.myImageSwitcher.setImageResource(this.imgRes[this.foot++]); this.myImageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in)); this.myImageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out)); this.butPrevious.setOnClickListener(new OnClickListenerPrevious()); this.butNext.setOnClickListener(new OnClickListenerNext()); } private class OnClickListenerPrevious implements OnClickListener { @Override public void onClick(View view) { ImageSwitcherActivity.this.myImageSwitcher .setImageResource(ImageSwitcherActivity.this.imgRes[ImageSwitcherActivity.this.foot--]); ImageSwitcherActivity.this.checkButEnable(); } } private class OnClickListenerNext implements OnClickListener { @Override public void onClick(View view) { ImageSwitcherActivity.this.myImageSwitcher .setImageResource(ImageSwitcherActivity.this.imgRes[ImageSwitcherActivity.this.foot++]); ImageSwitcherActivity.this.checkButEnable(); } } private void checkButEnable() { // 判断按钮是否可用 if (this.foot < this.imgRes.length - 1) { this.butNext.setEnabled(true); } else { this.butNext.setEnabled(false); } if (this.foot == 0) { this.butPrevious.setEnabled(false); } else { this.butPrevious.setEnabled(true); } } private class ViewFactoryImpl implements ViewFactory { @Override public View makeView() { ImageView img = new ImageView(ImageSwitcherActivity.this); img.setBackgroundColor(0xFFFFFFFF); // 设置背景 img.setScaleType(ImageView.ScaleType.CENTER); img.setLayoutParams(new ImageSwitcher.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); // 定义组件 return img; } } }
三、文本切换: TextSwitcher
Main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextSwitcher android:id="@+id/myTextSwitcher" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:id="@+id/but" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示当前时间" /> </LinearLayout>
TextSwitcherActivity.java
package com.iflytek.demo; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.TextSwitcher; import android.widget.TextView; import android.widget.ViewSwitcher.ViewFactory; public class TextSwitcherActivity extends Activity { private TextSwitcher myTextSwitcher = null; private Button but = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.myTextSwitcher = (TextSwitcher) super .findViewById(R.id.myTextSwitcher); this.but = (Button) super.findViewById(R.id.but); this.myTextSwitcher.setFactory(new ViewFactoryImpl()); this.myTextSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in)); this.myTextSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out)); this.but.setOnClickListener(new OnClickListenerImpl()); } private class OnClickListenerImpl implements OnClickListener { @Override public void onClick(View v) { TextSwitcherActivity.this.myTextSwitcher.setText("当前时间为:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") .format(new Date())); } } private class ViewFactoryImpl implements ViewFactory { @Override public View makeView() { TextView txt = new TextView(TextSwitcherActivity.this); txt.setBackgroundColor(0xFFFFFFFF); txt.setTextColor(0xFF000000); txt.setLayoutParams(new TextSwitcher.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); txt.setTextSize(30); return txt; } } }
四、拖拉图片: Gallery
1 、 BaseAdapter 实现
Gallery01_BaseAdapterActivity.java
package com.iflytek.demo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Gallery; import android.widget.Toast; public class Gallery01_BaseAdapterActivity extends Activity { private Gallery gallery = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.gallery = (Gallery) super.findViewById(R.id.myGallery); this.gallery.setAdapter(new ImageGalleryAdapter(this)); this.gallery.setOnItemClickListener(new OnItemClickListenerImpl()) ; } private class OnItemClickListenerImpl implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(Gallery01_BaseAdapterActivity.this, String.valueOf(position), Toast.LENGTH_SHORT).show(); } } }
ImageGalleryAdapter.java
package com.iflytek.demo; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; public class ImageGalleryAdapter extends BaseAdapter { private Context context = null; // 里面的所有方法表示的是可以根据指定的显示图片的数量,进行每个图片的处理 private int[] imgRes = new int[] { R.drawable.ispic_a, R.drawable.ispic_b, R.drawable.ispic_c, R.drawable.ispic_d, R.drawable.ispic_e }; // 这些是所要显示的图片的资源 public ImageGalleryAdapter(Context context) { this.context = context; } @Override public int getCount() { // 取得要显示的内容的数量 return this.imgRes.length; // 资源的数量 } @Override public Object getItem(int position) { return this.imgRes[position]; } @Override public long getItemId(int position) { // 取得项的ID return this.imgRes[position]; } // 将资源设置到一个组件之中,很明显这个组件就是ImageView组件 @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView img = new ImageView(this.context); img.setBackgroundColor(0xFFFFFFFF); img.setImageResource(this.imgRes[position]); // 将指定的资源设置到ImageView中 img.setScaleType(ImageView.ScaleType.CENTER); // 居中显示 img.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); return img; } }
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Gallery android:id="@+id/myGallery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:spacing="3px" /> </LinearLayout>
2 、 SimpleAdapter 实现
grid_layout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#FFFFFF"> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center"/> </LinearLayout>
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Gallery android:id="@+id/myGallery" android:gravity="center_vertical" android:spacing="3px" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
Gallery02_SimpleAdapterActivity.java
package com.iflytek.demo; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Gallery; import android.widget.SimpleAdapter; import android.widget.Toast; public class Gallery02_SimpleAdapterActivity extends Activity { private Gallery gallery = null; private SimpleAdapter simpleAdapter = null; private List<Map<String, Integer>> list = new ArrayList<Map<String, Integer>>(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.initAdapter(); this.gallery = (Gallery) super.findViewById(R.id.myGallery); this.gallery.setAdapter(this.simpleAdapter); this.gallery.setOnItemClickListener(new OnItemClickListenerImpl()); } private void initAdapter() { Field[] fields = R.drawable.class.getDeclaredFields(); // 取得全部的属性 for (int x = 0; x < fields.length; x++) { if (fields[x].getName().startsWith("ispic_")) { // 我们所需要的图片 Map<String, Integer> map = new HashMap<String, Integer>(); try { map.put("img", fields[x].getInt(R.drawable.class)); // 必须定义好名称是img } catch (Exception e) { } this.list.add(map); } } this.simpleAdapter = new SimpleAdapter(this, this.list, R.layout.grid_layout, new String[] { "img" }, new int[] { R.id.img }); } private class OnItemClickListenerImpl implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(Gallery02_SimpleAdapterActivity.this, String.valueOf(position), Toast.LENGTH_SHORT).show(); } } }
3 、图片浏览
Gallery03_Activity.java
package com.iflytek.demo; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Gallery; import android.widget.ImageSwitcher; import android.widget.ImageView; import android.widget.SimpleAdapter; import android.widget.ViewSwitcher.ViewFactory; public class Gallery03_Activity extends Activity { private Gallery gallery = null; private SimpleAdapter simpleAdapter = null; private List<Map<String, Integer>> list = new ArrayList<Map<String, Integer>>(); private ImageSwitcher myImageSwitcher = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.initAdapter(); this.gallery = (Gallery) super.findViewById(R.id.myGallery); this.myImageSwitcher = (ImageSwitcher) super .findViewById(R.id.myImageSwitcher); this.gallery.setAdapter(this.simpleAdapter); this.myImageSwitcher.setFactory(new ViewFactoryImpl()); this.gallery.setOnItemClickListener(new OnItemClickListenerImpl()); } private void initAdapter() { Field[] fields = R.drawable.class.getDeclaredFields(); // 取得全部的属性 for (int x = 0; x < fields.length; x++) { if (fields[x].getName().startsWith("ispic_")) { // 我们所需要的图片 Map<String, Integer> map = new HashMap<String, Integer>(); try { map.put("img", fields[x].getInt(R.drawable.class)); // 必须定义好名称是img } catch (Exception e) { } this.list.add(map); } } this.simpleAdapter = new SimpleAdapter(this, this.list, R.layout.grid_layout, new String[] { "img" }, new int[] { R.id.img }); } private class OnItemClickListenerImpl implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Map<String, Integer> map = (Map<String, Integer>) parent .getAdapter().getItem(position); Gallery03_Activity.this.myImageSwitcher.setImageResource(map.get("img")); } } private class ViewFactoryImpl implements ViewFactory { @Override public View makeView() { ImageView img = new ImageView(Gallery03_Activity.this); img.setBackgroundColor(0xFFFFFFFF); img.setScaleType(ImageView.ScaleType.CENTER); img.setLayoutParams(new ImageSwitcher.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); return img; } } }
grid_layout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#FFFFFF"> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center"/> </LinearLayout>
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ImageSwitcher android:id="@+id/myImageSwitcher" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Gallery android:id="@+id/myGallery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:spacing="3px" /> </LinearLayout>
发表评论
-
This version of ADT requires android SDK
2013-07-25 16:45 1600Windows系统下用Eclipse开发工具开发An ... -
Android学习13-----网络通信(4) WebView组件
2012-11-27 09:18 2520WebView 是一个开发的浏览 ... -
Android学习13-----网络通信(3) 与Web Service进行通讯
2012-11-26 09:40 1898这里我们的WebService使用xFire开发。 ... -
Android学习13-----网络通信(2) 与Socket交换数据
2012-11-23 09:11 3311对于网络开发而言,最常用的交互模式:WebService、We ... -
Android学习13-----网络通信(1) 与WEB服务器交换数据
2012-11-22 09:11 2196与Web服务器交互: 如果手机要想与 web ... -
Android学习11-----多媒体技术(5) 媒体录制
2012-11-16 08:10 1896在Android中通过android.media ... -
Android学习11-----多媒体技术(4) 使用摄像头拍照,多点触控
2012-11-15 08:37 2892一、摄像头拍照 前面说媒体播放 时了解了 ... -
Android学习11-----多媒体技术(3) 媒体播放
2012-11-14 08:25 1421在 Androi ... -
Android学习11-----多媒体技术(2) Animation
2012-11-13 08:47 1998一、渐变动画, Tweened Animation ... -
Android学习11-----多媒体技术(1) 绘制简单图形,Bitmap,Matrix
2012-11-12 08:48 1627一、绘制简单图 ... -
Android学习12-----手机服务(4) 传感器
2012-11-19 09:13 2023传感器一般用于游戏中,在 Android 系统中为 ... -
Android学习12-----手机服务(1) 取得电池电量和声音服务:AudioManager
2012-11-18 11:18 3508一、取得电池电量信息 ... -
Android学习10-----Android组件通信 (8) 桌面显示组件:AppWidget
2012-11-02 08:36 2042一、 AppWidget 在使用 Androi ... -
Android学习10-----Android组件通信 (7) 广播机制:Broadcast
2012-11-01 08:43 1519一、 广播: 广播也是一种信息的发送机制,在 ... -
Android学习10-----Android组件通信 (6) PendingIntent
2012-10-31 08:20 2267Intent 的主要功能是表示用 ... -
Android学习10-----Android组件通信 (5) Service
2012-10-30 08:25 1741Service 基本组成: ... -
Android学习10-----Android组件通信 (4) 消息机制
2012-10-29 08:22 1556在 Android 操作系统中存在着消息队列的操作 ... -
Android学习10-----Android组件通信 (3) ActivityGroup
2012-10-26 08:23 2322导航栏在 Android 中的应用是很常见的,前面 ... -
Android学习10-----Android组件通信 (2) Activity生命周期
2012-10-25 08:16 1287Activity 是整个 Android 平台的基 ... -
Android学习10-----Android组件通信 (1) Intent
2012-10-24 08:43 2017在一个项目之中,会由多个 Activity ...
相关推荐
4、Android04--Android服务 5、Android05--Android服务通信 6、Android06--Android广播接收器 7、Android07--Android日志系统 8、Android08--Android权限系统 用户界面 9、Android09--Fragment初探 10、Android09--...
在Android开发中,自定义控件是提升应用用户体验和界面独特性的重要手段。本文将深入探讨如何创建一个自定义的联系人列表,并实现A-Z字母排序功能。首先,我们需要理解Android系统的视图(View)和视图组(ViewGroup)...
在Android 3.0(API级别11)及以上版本中引入,但v4库使其可以在低至Android 1.6(API级别4)的版本上使用。 - **Loader**: Loader是一种异步加载数据的机制,它在后台线程中执行,避免了主线程的阻塞。v4库提供了`...
在Android开发中,有时我们需要创建一些独特形状的视图,以实现特定的界面设计或交互效果。...通过研究其源码,我们可以学习到如何在Android中实现自定义视图的绘制和事件监听,进一步提升我们的Android开发技能。
Android Support Library V4,简称`android-support-v4`,是Android开发者广泛使用的库,旨在提供对Android早期版本的兼容性,同时包含许多先进的特性,使得应用能够运行在从Android 2.1 (API级别7)到最新的Android...
在实际开发中,`appcompat-v7`库的使用方法通常是将其导入到项目中,然后将Activity继承自`AppCompatActivity`,并使用`android.support.v7.widget`包下的控件来替代原生的Android控件,这样就能在所有支持的Android...
- **官方文档**:深入学习Android官方文档中关于UI控件的部分。 - **实战项目**:尝试在真实的项目中应用这些控件,加深理解。 - **社区资源**:参与社区讨论,了解最新的开发技巧和最佳实践。 通过上述介绍,我们...
该库包含的组件涵盖了Android系统中的常见控件,如按钮、文本框、列表视图、滑动选择器等,甚至包括了一些复杂组件,如滑动导航栏、底部导航、折叠式布局等。这些组件不仅外观逼真,还支持各种交互动作,如点击、...
4. **UI设计与布局**:XML文件用于创建Android应用的用户界面,包括Activity、Fragment和各种View控件。Android Studio的布局编辑器可以帮助快速设计和预览界面。 5. **权限管理**:在Android 6.0(API级别23)及...
《Android Times-Square:打造出色的日历控件》 在移动应用开发中,日历控件是不可或缺的一部分,它能够帮助用户方便地选择日期,进行时间管理。Square公司开源的`android-times-square`库,正是为Android平台量身...
`android-support-v4`库是为了保证在Android API Level 4(即Android 1.6)以上版本运行的功能兼容性,而`appcompat-v7`库则提供了对Android Material Design设计风格的支持,并且同样确保在低版本系统上的兼容。...
`android-support-v4.jar` 则是另一个广泛使用的库,它包含了大量在Android 4.0(API级别14)及更高版本中可用的功能,但向下兼容到Android 1.6(API级别4)。这个库提供了许多关键服务和组件,如Fragment、Loader、...
### Android Studio 基本控件详解 #### LinearLayout 布局详解 LinearLayout 是 Android 开发中最常用的布局之一,它可以将界面元素沿着一个方向(横向或纵向)排列。通过 `android:orientation` 属性可以控制布局...
它还提供了自定义视图和控件的工具,比如`android.support.v7.widget.CardView`和`android.support.v7.widget.RecyclerView`,这些都在早期版本的Android上提供原生支持。 总之,`android-support-v7-appcompat`是...
以上介绍了Android UI中常用的几种基本控件及其使用方法。这些控件是构建用户界面的基础,熟练掌握它们的使用可以帮助开发者快速搭建出美观实用的应用界面。希望本文能为初学者提供一定的帮助。
4. **Android UI设计**:DEMO中的用户界面展示了如何创建控件来显示无人机状态、操作飞行控制等,这涉及到Android的布局设计和事件监听机制。 5. **蓝牙与WiFi通信**:大疆无人机的控制通常通过蓝牙或WiFi进行,...
这个库名为`android-gif-drawable`,它优化了GIF在Android控件中的显示性能,解决了原生Android API在处理GIF时的一些局限性。 首先,我们要理解Android原生对GIF支持的不足。Android SDK并没有提供内置的API来直接...
•Android---UI篇---Tab Layout(选项卡布局) • •Andorid---UI篇---TableLayout(表格布局) • •Android---UI篇---RelativeLayout(相对布局) • •Android---UI篇---GridView(网格布局) • •Android---UI篇-...
Android-Chat-Widget 是像微信、WhatsApp、Line一样的聊天控件。 Demo 如何使用? 1.在Layout中 android:id="@ id/messageInputToolBox" android:layout_width="match_parent" ...
在Android开发中,`android-support-v4.jar`和`android-support-v7.jar`是两个非常重要的库文件,它们属于Google的Android Support Library。这个库是为了兼容Android的不同版本而设计的,尤其是在处理旧版本API时,...