Android(五)——控制UI界面的方法
文章目录
- 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界面的方法相关推荐
- 用户界面设计之关于控制UI界面的简单总结
用户界面设计是Android应用开发的一项重要内容.Android提供了四种控制UI界面的方法,分别为: 1.使用XML布局文件控制UI界面 2.在代码中控制UI界面 3.使用XML和Java代码混合 ...
- Java代码控制UI界面
介绍 在 Android 中,支持像 Java Swing 那样完全通过代码控制 UI 界面.也就是所有的 UI 组件都通过 new 关键字创建出来,然后将这些 UI 组件添加到布局管理器中,从而实现 ...
- qt ui界面无法移动控件_使用qt 键盘上的方向键只能控制ui界面上的按钮选择,不能实现我设定的功能...
已结贴√ 问题点数:20 回复次数:2 使用qt 键盘上的方向键只能控制ui界面上的按钮选择,不能实现我设定的功能 我做的是一个贪吃蛇游戏,现在我想实现的功能是:按下键盘上的上下左右箭头的方向按键时, ...
- python制作界面_详解python做UI界面的方法
详解python做UI界面的方法 更新时间:2019年02月27日 14:44:34 投稿:laozhang 在本文里我们给大家整理了关于python做UI界面的方法和具体步骤,对此有需要的朋友们可以 ...
- Android Studio 简单UI界面
Android Studio 简单UI界面 利用相对布局+线性布局进行设计,且支持国际化 运行效果图如下 实现过程: 1.将准备好的八个图标复制到res/drawable文件夹下 2.创建一个垂直的线 ...
- C#解冻Windows UI界面的方法的代码
下面的资料是关于C#解冻Windows UI界面的方法的代码. bool UserHitCancel = false; this.progressBar.Maximum = 100; for (int ...
- Android开发之UI界面设计
下面介绍五种不同样式的UI界面,它们的样式分别如下: 下面就来分别介绍各部分代码;当然我也将相应的代码上传了的:https://download.csdn.net/download/qq_434332 ...
- Android - 返回上一个界面finish()方法
返回上一个界面finish()方法 本文地址: http://blog.csdn.net/caroline_wendy Android能够使用finish()方法,实现函数返回的功能.当不是Activ ...
- 解决!Android Studio 设计 UI 界面控件全在左上角
Android Studio在进行界面设计的时候 UI 界面的 Layout 控件全在左上角 1.点击红色圈中的图标,Infer Constraints即可 2.这是之后的效果图 3.运行
最新文章
- 4、Python —— 函数
- windows tracert 命令 查看路由表
- .NET Core 如何禁止.resx文件自动生成Designer.cs
- Spring Async和Java的8 CompletableFuture
- python闭环最短路径_最短路径算法的实现(dijskstra):Python
- mysql my.cnf 配置_MySQL——my.cnf参数设置说明
- linux查看vnc服务加密修复,VNC远程管理Linux服务器安全指导
- python中文转拼音不用第三方库_又一个奇葩要求,Python是如何将“中文”转“拼音”的?...
- 云效支持自定义构建镜像 征集10家企业免费使用
- Linux工作笔记026---Centos7.3 yum提示Another app is currently holding the yum lock; waiting for it to exit.
- android遥控器用什么测试,Android编程调用红外线遥控功能示例
- 2004-6-22+ 用vs.net做的留言板
- 常用的Linux的命令
- WebService学习总结(四)——调用第三方提供的webService服务
- java实现打开新窗口_[Java教程]javascript 打开新窗口(window.open)
- 路由器密码破解:路由器登陆密码破解方法(仅用于丢失密码后
- 为什么要用 Tair 来服务低延时场景 - 从购物车升级说起
- rancher添加私有仓库_在Rancher2中部署Docker-Registry仓库服务
- 一个基于igv.js实现的python脚本,实现简单的网页版IGV
- rk3288 原子操作和原子位操作
热门文章
- 欧几里得空间——正交矩阵
- html图片查看器工作原理,五分钟了解浏览器的工作原理
- php中文歌词,详细介绍HTML5使用Audio标签实现歌词同步的效果
- ie浏览器修复_腾讯安全:IE浏览器曝远程执行代码漏洞 腾讯安全强势推出漏洞修复工具...
- html dom获得父div,获取元素的父div
- 2019-10-06 线性系统的理解
- 【Python】Cookie 和 Session
- web05-CounterServlet
- Angular2.0快速开始
- 对SqlCommandBuilder类理解