文章目录

  • 1. 使用XML布局文件控制UI界面(推荐)
  • 2. 在Java代码中控制UI界面
  • 3. 使用XML和Java代码混合控制UI界面
  • 4. 开发自定义的View

1. 使用XML布局文件控制UI界面(推荐)

步骤:

(1)在Android应用的res/layout目录下编写XML布局文件

(2)在Activity中使用以下Java代码显示XML文件中的布局内容

setContentView(R.layout.activity_main)


实例:使用XML布局文件实现游戏的开始界面

(1)添加名为xmllayout的Module


(2)将背景图片bg.png复制到mipmap目录下


(3)activity_main.xml文件和strings.xml文件



(4)运行结果

出现如下错误:


在xmllayout对应的build.gradle文件中添加如下图的两行代码


再次运行后,成功运行

2. 在Java代码中控制UI界面

实例:实现游戏的进入界面

(1)添加名为javalayout的Module





(2)创建成功名为javalayout的Module后,删除layout目录下的activity_main.xml文件


(3)修改MainActivity文件如下:

package com.zz;
import android.content.DialogInterface;
import android.graphics.Color;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);FrameLayout frameLayout=new FrameLayout(this); //创建布局管理器对象frameLayout.setBackgroundResource(R.mipmap.bg);  //设置背景setContentView(frameLayout);  //添加布局管理器TextView text1 = new TextView(this);  //创建文本框组件text1.setText("开始游戏");  //设置显示文本text1.setTextSize(TypedValue.COMPLEX_UNIT_SP,18);  //设置字体大小text1.setTextColor(Color.rgb(255,222,173));  //设置字体颜色FrameLayout.LayoutParams params=new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);   //设置布局参数,布局高度和布局宽度params.gravity= Gravity.CENTER;  //设置居中text1.setLayoutParams(params);     //为text1设置布局参数//为文本框组件设置一个单击事件text1.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {new AlertDialog.Builder(MainActivity.this).setTitle("系统提示").setMessage("游戏有风险,进入需谨慎,真的要进入吗?").setPositiveButton("确定",new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {Log.i("桌面台球","进入游戏");}}).setNegativeButton("退出",new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {Log.i("桌面台球","退出游戏");finish();}}).show();}});frameLayout.addView(text1);  //将文本框组件添加到布局管理器中}
}

(4)运行结果:


点击开始运行按钮

3. 使用XML和Java代码混合控制UI界面

实例:实现QQ相册照片列表界面

(1)添加名为xmljavalayout的Module,并把12张图片资源复制到mipmap目录中


(2)修改activity_main.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/layout"android:orientation="horizontal"android:rowCount="3"android:columnCount="4"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="16dp"android:paddingLeft="16dp"android:paddingRight="16dp"android:paddingTop="16dp"tools:context="com.zz.MainActivity">
</GridLayout>

(3)修改MainActivity.java文件如下:

package com.zz;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.GridLayout;
import android.widget.ImageView;public class MainActivity extends AppCompatActivity {private ImageView[] img=new ImageView[12];  //创建保存图形视图的数组,放置12张图片private int[] imagePath=new int[]{R.mipmap.img01,R.mipmap.img02,R.mipmap.img03,R.mipmap.img04,R.mipmap.img05,R.mipmap.img06,R.mipmap.img07,R.mipmap.img08,R.mipmap.img09,R.mipmap.img10,R.mipmap.img11,R.mipmap.img12};   //要访问的图片资源@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);GridLayout layout=(GridLayout) findViewById(R.id.layout);  //获取网格布局管理器对象layout,for(int i=0;i<imagePath.length;i++){img[i]=new ImageView(MainActivity.this);  //创建ImageView组件img[i].setImageResource(imagePath[i]);   //设置要显示的图片img[i].setPadding(2,2,2,2);  //设置内边距ViewGroup.LayoutParams params=new ViewGroup.LayoutParams(116,68);  //设置图片的宽度和高度img[i].setLayoutParams(params);layout.addView(img[i]);  //把图片添加到布局管理器中}}
}

(4)运行结果:

4. 开发自定义的View

实例:实现跟随手指的兔子

(1)添加名为myview的Module,并把背景图片和兔子图片复制到mipmap目录中


(2)修改activity_main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="16dp"android:paddingLeft="16dp"android:paddingRight="16dp"android:paddingTop="16dp"android:background="@mipmap/background"android:id="@+id/mylayout"tools:context="com.zz.MainActivity"></FrameLayout>

(3)在java/com.zz目录下创建RabbitView类

package com.zz;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;public class RabbitView extends View{//小兔子横坐标public float bitmapX;//小兔子纵坐标public float bitmapY;//在构造方法中设置兔子初始位置public RabbitView(Context context) {super(context);bitmapX = 290;bitmapY = 130;}//重写一个方法:鼠标右键-->Generate-->Override Methods(覆盖方法)-->直接输入就可查找//根据小兔子的图片来绘制小兔子@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);//定义画笔对象Paint paint = new Paint();//定义绘图对象Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),R.mipmap.rabbit);//需要指定四个参数:1.创建的bitmap对象 2.x坐标 3.y坐标 4.画笔对象canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint);//强制回收图片if(bitmap.isRecycled()){bitmap.recycle();}}
}

(4)修改MainActivity.java文件:

package com.zz;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取布局管理器FrameLayout frameLayout = (FrameLayout)findViewById(R.id.mylayout);//实例化兔子对象final RabbitView rabbit = new RabbitView(this);//为小兔子设置触摸事件监听器,参数用匿名内部类来指定rabbit.setOnTouchListener(new View.OnTouchListener(){@Overridepublic boolean onTouch(View view, MotionEvent motionEvent) {rabbit.bitmapX = motionEvent.getX();rabbit.bitmapY = motionEvent.getY();//重绘这只兔子rabbit.invalidate();return true;}});frameLayout.addView(rabbit);}
}

(5)运行结果



可以看到兔子图片随着鼠标位置的移动而移动

Android(五)——控制UI界面的方法相关推荐

  1. 用户界面设计之关于控制UI界面的简单总结

    用户界面设计是Android应用开发的一项重要内容.Android提供了四种控制UI界面的方法,分别为: 1.使用XML布局文件控制UI界面 2.在代码中控制UI界面 3.使用XML和Java代码混合 ...

  2. Java代码控制UI界面

    介绍 在 Android 中,支持像 Java Swing 那样完全通过代码控制 UI 界面.也就是所有的 UI 组件都通过 new 关键字创建出来,然后将这些 UI 组件添加到布局管理器中,从而实现 ...

  3. qt ui界面无法移动控件_使用qt 键盘上的方向键只能控制ui界面上的按钮选择,不能实现我设定的功能...

    已结贴√ 问题点数:20 回复次数:2 使用qt 键盘上的方向键只能控制ui界面上的按钮选择,不能实现我设定的功能 我做的是一个贪吃蛇游戏,现在我想实现的功能是:按下键盘上的上下左右箭头的方向按键时, ...

  4. python制作界面_详解python做UI界面的方法

    详解python做UI界面的方法 更新时间:2019年02月27日 14:44:34 投稿:laozhang 在本文里我们给大家整理了关于python做UI界面的方法和具体步骤,对此有需要的朋友们可以 ...

  5. Android Studio 简单UI界面

    Android Studio 简单UI界面 利用相对布局+线性布局进行设计,且支持国际化 运行效果图如下 实现过程: 1.将准备好的八个图标复制到res/drawable文件夹下 2.创建一个垂直的线 ...

  6. C#解冻Windows UI界面的方法的代码

    下面的资料是关于C#解冻Windows UI界面的方法的代码. bool UserHitCancel = false; this.progressBar.Maximum = 100; for (int ...

  7. Android开发之UI界面设计

    下面介绍五种不同样式的UI界面,它们的样式分别如下: 下面就来分别介绍各部分代码;当然我也将相应的代码上传了的:https://download.csdn.net/download/qq_434332 ...

  8. Android - 返回上一个界面finish()方法

    返回上一个界面finish()方法 本文地址: http://blog.csdn.net/caroline_wendy Android能够使用finish()方法,实现函数返回的功能.当不是Activ ...

  9. 解决!Android Studio 设计 UI 界面控件全在左上角

    Android Studio在进行界面设计的时候 UI 界面的 Layout 控件全在左上角 1.点击红色圈中的图标,Infer Constraints即可 2.这是之后的效果图 3.运行

最新文章

  1. 4、Python —— 函数
  2. windows tracert 命令 查看路由表
  3. .NET Core 如何禁止.resx文件自动生成Designer.cs
  4. Spring Async和Java的8 CompletableFuture
  5. python闭环最短路径_最短路径算法的实现(dijskstra):Python
  6. mysql my.cnf 配置_MySQL——my.cnf参数设置说明
  7. linux查看vnc服务加密修复,VNC远程管理Linux服务器安全指导
  8. python中文转拼音不用第三方库_又一个奇葩要求,Python是如何将“中文”转“拼音”的?...
  9. 云效支持自定义构建镜像 征集10家企业免费使用
  10. Linux工作笔记026---Centos7.3 yum提示Another app is currently holding the yum lock; waiting for it to exit.
  11. android遥控器用什么测试,Android编程调用红外线遥控功能示例
  12. 2004-6-22+ 用vs.net做的留言板
  13. 常用的Linux的命令
  14. WebService学习总结(四)——调用第三方提供的webService服务
  15. java实现打开新窗口_[Java教程]javascript 打开新窗口(window.open)
  16. 路由器密码破解:路由器登陆密码破解方法(仅用于丢失密码后
  17. 为什么要用 Tair 来服务低延时场景 - 从购物车升级说起
  18. rancher添加私有仓库_在Rancher2中部署Docker-Registry仓库服务
  19. 一个基于igv.js实现的python脚本,实现简单的网页版IGV
  20. rk3288 原子操作和原子位操作

热门文章

  1. 欧几里得空间——正交矩阵
  2. html图片查看器工作原理,五分钟了解浏览器的工作原理
  3. php中文歌词,详细介绍HTML5使用Audio标签实现歌词同步的效果
  4. ie浏览器修复_腾讯安全:IE浏览器曝远程执行代码漏洞 腾讯安全强势推出漏洞修复工具...
  5. html dom获得父div,获取元素的父div
  6. 2019-10-06 线性系统的理解
  7. 【Python】Cookie 和 Session
  8. web05-CounterServlet
  9. Angular2.0快速开始
  10. 对SqlCommandBuilder类理解