一、使用XML布局文件控制UI界面

res\layout\activity_main.xml代码如下:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/FrameLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/title"
style="@style/text"
>
</TextView>
<TextView
android:id="@+id/startButton"
android:layout_gravity="center_vertical|center_horizontal"
android:text="@string/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/text"
> </TextView>
</FrameLayout>

一个TextView组件用于显示提示文字,一个在窗体正中间显示开始游戏按钮

其中res\values\styles.xml代码如下

<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="text">
<item name="android:textSize">24dp</item>
<item name="android:textColor">#111111</item>
</style>
</resources>

用于指定应用的样式,指定文字的大小和颜色。

最后在主活动中也就是MainActivity中,应用一下代码指定应用的布局文件。

setContentView(R.layout.activity_main);

二、用代码来控制UI界面

package com.basil_lee.ui;

import android.os.Bundle;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
FrameLayout frameLayout=new FrameLayout(this);//创建帧布局管理器
frameLayout.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.background));//设置背景图片
setContentView(frameLayout);//设置在Activity中显示frameLayout
//创建一个TextView组件
TextView text1=new TextView(this);
text1.setText("在代码中控制UI界面");
text1.setTextSize(TypedValue.COMPLEX_UNIT_PX,24);//设置文字的大小,单位为像素
text1.setTextColor(Color.rgb(1, 1, 1));
frameLayout.addView(text1);
//创建另外一个TextView组件
TextView text2=new TextView(this);
text2.setText("单击进入游戏。。。。。。");
text2.setTextSize(TypedValue.COMPLEX_UNIT_PX,50);//设置文字的大小,单位为像素
text2.setTextColor(Color.rgb(1, 1, 1));
LayoutParams params=new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);//创建保存布局参数的对象
params.gravity=Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL;
text2.setLayoutParams(params);
//为text2组件添加单击事件,并将组件添加到布局管理器中
text2.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
new AlertDialog.Builder(MainActivity.this).setTitle("系统提示")
.setMessage("游戏有风险,进入需谨慎,真的要进入吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(MainActivity.this, "进入游戏", Toast.LENGTH_LONG).show();
}
}).setNegativeButton("退出",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(MainActivity.this, "退出游戏", Toast.LENGTH_LONG).show();
finish();
}
}).show();
}
}); frameLayout.addView(text2);
} }

三、虽然完全通过XML布局文件控制UI界面,实现起来比较方便快捷,但是有失灵活性;而完全通过Java代码控制UI界面,虽然比较灵活,但是开发过程比较繁琐。因此常常两者结合。

首先是界面布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:background="@drawable/background"
android:id="@+id/mylayout"> </LinearLayout>

然后Java代码如下:

    setContentView(R.layout.test);
LinearLayout linearLayout=(LinearLayout)findViewById(R.id.mylayout);
for(int i=;i<imgPath.length;i++){
img[i]=new ImageView(this);//创建一个ImageView组件
img[i].setImageResource(imgPath[i]);
img[i].setPadding(, , , );//设置ImageView组件的内边距
LayoutParams params=new LayoutParams(,);//设置组件的宽度和高度
img[i].setLayoutParams(params);//为ImageView组件设置布局参数
linearLayout.addView(img[i]);//将ImageView组件添加到布局管理器中
}

以上代码在窗体中横向并列的显示4张图片

四、除了以上三种我们还可以开发自定义的View

开发自定义的View组件大致分为以下三个步骤:

  • 创建一个继承android.view.View类的View类,并且重写构造方法
  • 根据需要重写相应的方法。
  • 在项目中创建并实例化自定义的View类,并将其添加到布局管理器中。

下面是类似飞机大战中的一个例子:

class MyView extends View{

	public float bitMapX;
public float bitMapY;
public MyView(Context context) {
super(context);
bitMapX=750;
bitMapY=750;
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint paint=new Paint();
Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.air1);
canvas.drawBitmap(bitmap, bitMapX,bitMapY,paint);
if(bitmap.isRecycled()){
bitmap.recycle();
}
}
}

  

	protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test2);
FrameLayout frameLayout=(FrameLayout)findViewById(R.id.mylayout);
final MyView air=new MyView(getApplicationContext());
air.setOnTouchListener(new OnTouchListener() { @Override
public boolean onTouch(View arg0, MotionEvent arg1) {
air.bitMapX=arg1.getX();
air.bitMapY=arg1.getY();
air.invalidate();
return true;
}
});
frameLayout.addView(air);

这样就可以使飞机那种图片跟随者手指去移动了。

以上就是三种UI的控制方法。

Android——控制UI界面的更多相关文章

  1. Android控制UI界面

    ⒈使用XML布局文件控制UI界面[推荐] Android推荐使用XML布局文件来控制视图,这样不仅简单.明了,而且可以将应用的视图控制逻辑从Java或Kotlin代码中分离出来,放入XML文件中控制, ...

  2. 使用XML布局文件和Java代码混合控制UI界面

    完全使用Java代码来控制UI界面不仅烦琐.而且不利于解耦:而完全利用XML布局文件来控制UI界面虽然方便.便捷,但难免有失灵活.因此有些时候,可能需要混合使用XML布局文件和代码来控制UI界面. 当 ...

  3. 在代码中控制UI界面

    虽然Android推荐使用XML布局文件来控制UI界面,但如果开发者愿意,Android允许开发者完全抛弃XML布局文件,完全在Java代码中控制UI界面. 实例:用编程的方式开发UI界面 packa ...

  4. 控制UI界面

    在android中,一共有四种方式. 第一种:使用XML布局文件控制UI界面 关键步骤有2个: 1.在Android应用的res/layout目录下编写,创建一个项目,eclipse会自动生成一个xm ...

  5. 家庭记账本app进度之ui相关概念控制ui界面与布局管理

    ui就是用户界面设计的意思. 首先是view,view相当于窗户上的玻璃. 1.android:id属性.android:id="@+id/user".他的id是user前面的@+ ...

  6. Android学习笔记(9):使用XML文件和Java代码控制UI界面

    Android推荐使用XML文件设置UI界面.然后用Java代码控制逻辑部分,这体现了MVC思想. MVC全名是Model View Controller.是模型(model)-视图(view)-控制 ...

  7. 使用XML文件和Java代码控制UI界面

    Android推荐使用XML文件设置UI界面,然后用Java代码控制逻辑部分,这体现了MVC思想. MVC全名是Model View Controller,是模型(model)-视图(view)-控制 ...

  8. Android学习:代码控制UI界面示例

    package allegro.test2; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; im ...

  9. android脚步---UI界面修改,增加按钮和监听

    我的UU界面,其布局如下: 需要修改的部分: 意见反馈居中,还有增加backbutton 首先在mainactivity中找到我的UU的定义:dialogue public void showAbou ...

随机推荐

  1. Google maps library的使用

    公司的项目中用到了google地图API, 使用Google API开发就会用到Marker, 用来在google 地图上标注位置 但是google marker使用过程中也有个问题,就是如果在goo ...

  2. 发布maven的web项目,tomcat显示已启动,但是访问出错

    sts中如果是maven的web工程,一定要先进行maven install,再发布工程,否则不会出任何错误,tomcat还访问不了

  3. Windows 窗体启动和关闭的事件顺序

    本文系转载学习. 对于关注对 Windows 窗体应用程序中引发的每个事件按次序进行处理的开发人员来说,事件引发的顺序特别重要.当某种情况需要小心处理事件时(如重绘窗体的某些部分时),必须知道事件在运 ...

  4. Arrays 类操作 Java 的数组排序

    使用 Arrays 类操作 Java 中的数组 Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等( ...

  5. 有如下Student 对象,  private String name;       private int age;       private int score;   private String classNum;  其中,classNum

    package homework003; import java.util.ArrayList; import java.util.List; public class Text { public s ...

  6. centos7 挂载ntfs移动硬盘

    第一步:下载安装rpmforge ,下载地址 http://pkgs.repoforge.org/rpmforge-release/  安装 rpm -ivh rpmforge-release-0.5 ...

  7. Android开发日志问题

    以前在Android开发中发现,日志打印好多,调试的时候各种加Log,之后就各种不删除,导致项目后期花大把时间删除日志打印. 学到一个好方法: 在所有尽可能高的父类里面加上一个常量 DEBUG ,一开 ...

  8. 9 个让 JavaScript 调试更简单的 Console 命令

    一.显示信息的命令 <!DOCTYPE html> <html> <head> <title>常用console命令</title> < ...

  9. eclipse项目导入到Android Studio Plugin with id 'android-library' not found

    在主项目的build.gradle 中加入以下代码buildscript { repositories { mavenCentral() } dependencies { classpath 'com ...

  10. 作为平台的Windows PowerShell(二)

    在此系列文章的前一篇,我们看到了怎样使用System.Management.Automation.PowerShell 类来在c#应用程序中运行PowerShell 命令.在那些例子中,我们创建的都是 ...