3.1如何编写程序界面&3.2常见控件使用方法
16lz
2022-05-18
Android 编写界面的两种方式: 1.DroidDraw 可视化界面编辑器 2.XML代码
3常见控件的使用方法: 3.2.1 TextView
android:text 指定了TextView中的内容
android:gravity指定文字的对齐方式 可选top bottom left right center
3.2.2 Button XML文件中添加定义
来源:http://blog.csdn.net/zht666/article/details/7869383
1.Bundle类的作用
Bundle类用作携带数据,它类似于Map,用于存放key-value名值对形式的值。相对于Map,它提供了各种常用类型的putXxx()/getXxx()方法,如:putString()/getString()和putInt()/getInt(),putXxx()用于往Bundle对象放入数据,getXxx()方法用于从Bundle对象里获取数据。Bundle的内部实际上是使用了HashMap<String, Object>类型的变量来存放putXxx()方法放入的值:
在调用Bundle对象的getXxx()方法时,方法内部会从该变量中获取数据,然后对数据进行类型转换,转换成什么类型由方法的Xxx决定,getXxx()方法会把转换后的值返回。 3.Intent(意图)
Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递Intent来执行动作和产生事件。使用Intent可以激活Android应用的三个核心组件:活动、服务和广播接收器。
Intent可以划分成显式意图和隐式意图。
显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
来源: http://android.sunplusedu.com/answer/2013/0225/922.html
3.2.3EditText XM文件内添以下内容
控件定义基本方式: 1.给控件一个id 2.指定控件的高度和宽度
指定提示性文本
指定EditText的最大行数
3.2.4ImageView 用于在界面上展示图片 XML文件定义
3.2.5 ProgressBar 用于在界面上显示一个进度条 表示程序正在加载一些数据 XMS添加
MainActivity.java文件中修改为
之前默认进度条为圆形进度条 若想改为水平进度条可修改XML文件为
3.2.7 ProgressDialog 类似于AlertDialog ,但会在对话框中显示一个进度条,一般是表示当前操作比较费时,需要耐心等候、 修改MainActivity如下
3常见控件的使用方法: 3.2.1 TextView
android:layout_width 指定宽度 android:layout_height 指定高度<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="This is TextView"/>
</LinearLayout>
match_parent | 含义同fill_parent 官方推荐使用 让当前控件大小与父布局大小一样 |
fill_parent | 含义同match_parent |
wrap_parent | 控件的大小刚好能包含住里面的内容,控件内容决定大小 |
android:gravity指定文字的对齐方式 可选top bottom left right center
center_veritical|center_horizontal //文字垂直和水平方向都居中对其
android:textSize="26sp"//调整文字大小
android:textColor="#00ff00"//调整文字颜色
3.2.2 Button XML文件中添加定义
MainActivity.java中注册监听器 (1)匿名类方式<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />
(2)接口式方式private Button button;
//为Button的点击事件注册一个监听器
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onclick(View v) {
//在此添加逻辑
}
});
public class MainActivity extends Activity implements OnClickListener {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
//在此添加逻辑
break;
default:
break;
}
}
}
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:
1、可以当注释用,方便阅读;
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。
举例:在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。
@Override
public void onCreate(Bundle savedInstanceState)
{…….}
这种写法是正确的,如果你写成:
@Override
public void oncreate(Bundle savedInstanceState)
{…….}
编译器会报如下错误:The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,以确保你正确重写onCreate方法(因为oncreate应该为onCreate)。而如果你不加@Override,则编译器将不会检测出错误,而是会认为你为子类定义了一个新方法:oncreate
来源:http://blog.csdn.net/zht666/article/details/7869383
1.Bundle类的作用
Bundle类用作携带数据,它类似于Map,用于存放key-value名值对形式的值。相对于Map,它提供了各种常用类型的putXxx()/getXxx()方法,如:putString()/getString()和putInt()/getInt(),putXxx()用于往Bundle对象放入数据,getXxx()方法用于从Bundle对象里获取数据。Bundle的内部实际上是使用了HashMap<String, Object>类型的变量来存放putXxx()方法放入的值:
在调用Bundle对象的getXxx()方法时,方法内部会从该变量中获取数据,然后对数据进行类型转换,转换成什么类型由方法的Xxx决定,getXxx()方法会把转换后的值返回。 3.Intent(意图)
Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递Intent来执行动作和产生事件。使用Intent可以激活Android应用的三个核心组件:活动、服务和广播接收器。
Intent可以划分成显式意图和隐式意图。
显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
来源: http://android.sunplusedu.com/answer/2013/0225/922.html
3.2.3EditText XM文件内添以下内容
<EditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_parent" />
控件定义基本方式: 1.给控件一个id 2.指定控件的高度和宽度
指定提示性文本
android:hint="Type something here"
指定EditText的最大行数
android:maxLines="2"
输入内容超过两行时文字会自动向上滚动 3.2.4ImageView 用于在界面上展示图片 XML文件定义
MainActivity.java定义<ImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>
public class MainActivity extends Activity implements OnClickListener {
private Button button;
private EditText editText;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
editText = (EditText) findViewById(R.id.edit_text);
imageView = (ImageView) findViewById(R.id.image_view);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
//在此添加逻辑
imageView.setImageResource(R.drawable.jelly_bean);
break;
default:
break;
}
}
}
3.2.5 ProgressBar 用于在界面上显示一个进度条 表示程序正在加载一些数据 XMS添加
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
MainActivity.java文件中修改为
public class MainActivity extends Activity implements OnClickListener {
private Button button;
private EditText editText;
private ImageView imageView;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
editText = (EditText) findViewById(R.id.edit_text);
imageView = (ImageView) findViewById(R.id.image_view);
progressBar = (ProgressBar) findViewById(R.id.progress_bar);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
//在此添加逻辑
if (progressBar.getVisibility() == View.GONE) {
progressBar.setVisibility(View.VISIBLE);
} else {
progressBar.setVisibility(View.GONE);
}
break;
default:
break;
}
}
}
之前默认进度条为圆形进度条 若想改为水平进度条可修改XML文件为
3.2.6 AlertDialog 可以再当前的界面弹出一个对话框 置于所有页面元素之上 MainActivity.java文件修改如下style="?android:attr/progressBarStyleHorizontal"
android:max="100"
public class MainActivity extends Activity implements OnClickListener {
private Button button;
private EditText editText;
private ImageView imageView;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
editText = (EditText) findViewById(R.id.edit_text);
imageView = (ImageView) findViewById(R.id.image_view);
progressBar = (ProgressBar) findViewById(R.id.progress_bar);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
//在此添加逻辑
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("This is Dialog");
dialog.setMessage("Something important");
dialog.setCancelable(false);
dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.show();
break;
default:
break;
}
}
}
3.2.7 ProgressDialog 类似于AlertDialog ,但会在对话框中显示一个进度条,一般是表示当前操作比较费时,需要耐心等候、 修改MainActivity如下
public class MainActivity extends Activity implements OnClickListener {
private Button button;
private EditText editText;
private ImageView imageView;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
editText = (EditText) findViewById(R.id.edit_text);
imageView = (ImageView) findViewById(R.id.image_view);
progressBar = (ProgressBar) findViewById(R.id.progress_bar);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
//在此添加逻辑
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("This is progressDialog");
progressDialog.setCancelable(true);
progressDialog.show();
break;
default:
break;
}
}
}
更多相关文章
- IBM详解 Android(安卓)的 Activity 组件
- eclipse 开发 android 快捷键
- Android(安卓)四大组件(Activity、Service、BroadCastReceiver、
- Android(安卓)实现沉浸式只需一行代码
- 第99章、Android调用Javascript(从零开始学Android)
- Android属性动画Property Animation系列二之ObjectAnimator
- Android中WebView使用规范
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用