3.1如何编写程序界面&3.2常见控件使用方法

Android 编写界面的两种方式:
1.DroidDraw 可视化界面编辑器
2.XML代码   

3常见控件的使用方法:
3.2.1 TextView
   
   
<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>
android:layout_width  指定宽度
android:layout_height 指定高度
match_parent      含义同fill_parent 官方推荐使用 让当前控件大小与父布局大小一样
fill_parent 含义同match_parent
wrap_parent 控件的大小刚好能包含住里面的内容,控件内容决定大小
android:text 指定了TextView中的内容 

android:gravity指定文字的对齐方式 可选top bottom left right center                      
  
  
center_veritical|center_horizontal //文字垂直和水平方向都居中对其

   
   
android:textSize="26sp"//调整文字大小
android:textColor="#00ff00"//调整文字颜色


3.2.2 Button
XML文件中添加定义
   
   
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />
MainActivity.java中注册监听器
(1)匿名类方式
   
   
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) {
//在此添加逻辑
}
});
(2)接口式方式
   
   
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




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和数据类型)找到最合适的组件来处理这个意图。


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文件定义
   
   
<ImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>
MainActivity.java定义
   
   
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文件为
   
   
style="?android:attr/progressBarStyleHorizontal"
android:max="100"
3.2.6 AlertDialog
可以再当前的界面弹出一个对话框  置于所有页面元素之上
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:
//在此添加逻辑
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;
}
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值