使用xml及java代码混合的方式来设置图形界面
参考《疯狂android讲义》第2版2.1节
设置android的图形界面有三种方法:
1、使用纯xml文件
2、使用纯java,代码臃肿复杂,不建议使用
3、使用xml与java混合,前者用于固定基本不变的view,后者用于经常变化的view。
示例:使用xml+java,前者指定layout,后者指定一个imageView
MainAcitivity.java
package com.ljh.mixviewdemo; import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout; public class MainActivity extends Activity { //若这两个变量放到方法里面,则要求是final的。
int currentImage = 0;
int[] images = new int[]{R.drawable.ajax, R.drawable.classic, R.drawable.ee, R.drawable.java, R.drawable.xml}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //根据 id得到layout,注意要为layout添加一个id,而不是使用R.layout.activity_main作为 id来查找。
LinearLayout layout = (LinearLayout) this.findViewById(R.id.root); //定义一个ImageView,并将之添加至layout中。
final ImageView iv = new ImageView(this);
layout.addView(iv); //指定所要显示的图片
iv.setImageResource(images[0]); //setOnClickListener是View的方法,亦即所有的view都可点击的。
iv.setOnClickListener(new OnClickListener(){
public void onClick(View v){
iv.setImageResource(images[++currentImage%images.length]);
}
});
}
}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical" > </LinearLayout>
见归档代码MixViewDemo.zip
事实上,ImageView也不是经常变的,变的只是里面的内容,因此可以在xml中指定这个ImageView的属性,而在java中指定它所要显示的内容。代码修改如下:
MainActivity.java
package com.ljh.mixviewdemo; import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout; public class MainActivity extends Activity { //若这两个变量放到方法里面,则要求是final的。
int currentImage = 0;
int[] images = new int[]{R.drawable.ajax, R.drawable.classic, R.drawable.ee, R.drawable.java, R.drawable.xml}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //根据 id得到layout,注意要为layout添加一个id,而不是使用R.layout.activity_main作为 id来查找。
LinearLayout layout = (LinearLayout) this.findViewById(R.id.root); /* 定义一个ImageView,并将之添加至layout中。
final ImageView iv = new ImageView(this);
layout.addView(iv);*/
//不再需要新建一个ImageView,而是获取xml中的IamgeView
final ImageView iv = (ImageView) this.findViewById(R.id.iv_books); //指定所要显示的图片
iv.setImageResource(images[0]); //setOnClickListener是View的方法,亦即所有的view都可点击的。
iv.setOnClickListener(new OnClickListener(){
public void onClick(View v){
iv.setImageResource(images[++currentImage%images.length]);
}
});
}
}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical" > <ImageView
android:id="@+id/iv_books"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/my_published_book"
/> </LinearLayout>
使用xml及java代码混合的方式来设置图形界面的更多相关文章
- AndroidStudio中使用XML和Java代码混合控制UI界面实现QQ相册照片列表页面
场景 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建Androi ...
- 使用xml和java代码混合控制UI界面
main.xml.................... <?xml version="1.0" encoding="utf-8"?> <Li ...
- xml与java代码相互装换的工具类
这是一个java操作xml文件的工具类,最大的亮点在于能够通过工具类直接生成xml同样层次结构的java代码,也就是说,只要你定义好了xml的模板,就能一键生成java代码.省下了自己再使用工具类写代 ...
- 使用XML布局文件和Java代码混合控制UI界面
完全使用Java代码来控制UI界面不仅烦琐.而且不利于解耦:而完全利用XML布局文件来控制UI界面虽然方便.便捷,但难免有失灵活.因此有些时候,可能需要混合使用XML布局文件和代码来控制UI界面. 当 ...
- 不使用spring的情况下原生java代码两种方式操作mongodb数据库
由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常. 主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...
- JSP中嵌入java代码的标签方式(转)
(1)声明变量或方法 : <%! 声明; %> :慎重使用,因为此方法定义的是全局变量 (2)java片段(scriptlet): <% java代码; %> (3)表达式 ...
- 服务端发送xml请求java代码示例
/** * */ package com.autoyol.pay.cmb.core; import java.io.ByteArrayOutputStream; import java.io.IOEx ...
- Windows和Linux执行Java代码的不同方式
一.Windows 下编译并执行 Java 字节码文件(类文件) 1.编译 Hello.java 源码文件: java -d . Hello.java 2.执行 Hello.class 字节码文件: ...
- JAVA代码(GET方式)请求URL(HTTP,HTTPS)
/** * * @param url 这个只支持http地址,不支持https * @param request * @return */ public static String sendMessa ...
随机推荐
- 从配置文件中读取数据获取Connection
配置文件 db.driver=com.mysql.jdbc.Driver db.url=jdbc\:mysql\://localhost\:3306/mybase db.user=root db.ps ...
- javascript操作DOM的方法与属性
文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构. 将HTML代码分解为DOM节点层次图: ...
- struts.custom.i18n.resources国际化详解(一)
每种框价都会有国际化的支持,struts2的国际化大致上分为页面的国际化,Action的国际化以及xml的国际化 首先在struts.properties文件中加入以下内容:struts.custom ...
- Java compiler level does not match the version of the installed Java project facet.解决办法
问题原因: 出现这个问题的原因是因为,eclipse/myeclipse的jdk编译版本与出现问题的项目JDK编译版本不一致所导致! 解决办法: 工程名---->右键properties-- ...
- IOS 保存图片至相册
IOS 保存图片至相册 应用中有时我们会有保存图片的需求,如利用UIImagePickerController用IOS设备内置的相机拍照,或是有时我们在应用程序中利用UIKit的 UIGraphi ...
- [TYVJ] P1005 采药
采药 背景 Background NOIP2005复赛普及组第三题 描述 Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师 ...
- CloudStack添加新的API注意事项
1.***Cmd上面的@APICommand里的responseObject关联对于的Response: 2.在tomcatconf/command.properties.in添加新API的权限: 3 ...
- 【转】各个层次的gcc警告 #pragma GCC diagnostic ignored "-Wunused-parameter" --不错
原文网址:http://blog.csdn.net/lizzywu/article/details/9419145 各个层次的gcc警告从上到下覆盖 变量(代码)级:指定某个变量警告 int a __ ...
- 通过expdp/impdp进行oracle数据库的备份恢复详细指导
假定导出oracle数据库home目录为/opt/oracle,数据库用户为exp_user/test,导入用户为imp_user/test,给出如下样例,具体使用时根据实际情况修改路径及用户名/密码 ...
- C/C++内存存储问题
#include <stdio.h> #include "string.h" #include "malloc.h" void Swap(int a ...