Andorid-XML和JAVA代码混合控制UI

1.修改res/layout目录下的布局文件main.xml,删除默认创建的<TextView>组件,将默认创建的线性布局的orientation属性设置为vertical(垂直),并且为该线性布局设置背景以及id属性。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/back"
    android:id="@+id/layout"
    >
</LinearLayout>

2.在MainActivity中,声明img和imagepath两个属性,其中img是一个imageView类型的一维数组,用于保存ImageView组件;imagepath是一个int型的一维数组,用于保存要访问的图片资源。

public class MainActivity extends Activity {
    private  ImageView[] img=new ImageView[4];//声明一个保存ImageView组件的数组
    private int[] imagePath=new int[]{
        R.drawable.img01,R.drawable.img02,R.drawable.img03,R.drawable.img04
    };//声明并初始化一个保存访问图片的数组
    /** Called when the activity is first created. */


3.在MainActivity的OnCreate()办法中,首先获取在XML布局文件中创建的线性布局管理器,然后通过一个for循环创建4个显示图片的ImageView组件,并将其添加到管理器中。
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);              
        LinearLayout layout=(LinearLayout)findViewById(R.id.layout); //获取XML文件中定义的线性布局管理器
        for(int i=0;i<imagePath.length;i++){
            img[i]=new ImageView(this);                             //创建一个ImageView组件
            img[i].setImageResource(imagePath[i]);                  //为ImageView指定要显示的图骗
            img[i].setPadding(5, 5, 5, 5);                          //设置ImageView组件的内边距
            LayoutParams params=new LayoutParams(200,120);          //设置图片的宽度和高度
            img[i].setLayoutParams(params);                         //为ImageView组件设置布局参数
            layout.addView(img[i]);                                 //将ImageView组件添加到布局管理器中
        }
    }
}

ImageView属性详解
一、结构
java.lang.Object
android.view.View
android.widget.ImageView

已知直接子类:
ImageButton, QuickContactBadge

已知间接子类:
ZoomButton

二、类概述
显示任意图像,例如图标。ImageView类可以加载各种来源的图片(如资源或图片库),需要计算图像的尺寸,比便它可以在其他布局中使用,并提供例如缩放和着色(渲染)各种显示选项。

三、XML属性

属性名称
描述
android:adjustViewBounds
是否保持宽高比。需要与maxWidth、MaxHeight一起使用,否则单独使用没有效果。

android:cropToPadding
是否截取指定区域用空白代替。

android:maxHeight
设置View的最大高度,单独使用无效,需要与setAdjustViewBounds一起使用。如果想设置图片固定大小,又想保持图片宽高比,需要如下设置:
1) 设置setAdjustViewBounds为true;
2) 设置maxWidth、MaxHeight;
3) 设置设置layout_width和layout_height为wrap_content。

android:maxWidth
设置View的最大宽度。同上。

android:scaleType
设置图片的填充方式

android:src
设置View的drawable(如图片,也可以是颜色,但是需要指定View的大小)

android:tint
将图片渲染成指定的颜色。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
。感谢您的提问。针对您的问题,可以使用以下代码将XML转换为JSON: ```java public static JSONObject xmlToJson(String xml) throws JSONException { JSONObject jsonObject = new JSONObject(); try { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); XmlPullParser parser = factory.newPullParser(); parser.setInput(new StringReader(xml)); parse(parser, jsonObject); } catch (XmlPullParserException | IOException e) { e.printStackTrace(); } return jsonObject; } private static void parse(XmlPullParser parser, JSONObject jsonObject) throws XmlPullParserException, IOException, JSONException { int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { String tagName; switch (eventType) { case XmlPullParser.START_DOCUMENT: break; case XmlPullParser.START_TAG: tagName = parser.getName(); if (tagName.equalsIgnoreCase("item")) { jsonObject.put("item", parseItem(parser)); } break; case XmlPullParser.END_TAG: break; default: break; } eventType = parser.next(); } } private static JSONObject parseItem(XmlPullParser parser) throws XmlPullParserException, IOException, JSONException { JSONObject jsonObject = new JSONObject(); int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { String tagName; switch (eventType) { case XmlPullParser.START_DOCUMENT: break; case XmlPullParser.START_TAG: tagName = parser.getName(); if (tagName.equalsIgnoreCase("title")) { jsonObject.put("title", parseText(parser)); } else if (tagName.equalsIgnoreCase("link")) { jsonObject.put("link", parseText(parser)); } else if (tagName.equalsIgnoreCase("pubDate")) { jsonObject.put("pubDate", parseText(parser)); } break; case XmlPullParser.END_TAG: if (parser.getName().equalsIgnoreCase("item")) { return jsonObject; } break; default: break; } eventType = parser.next(); } return jsonObject; } private static String parseText(XmlPullParser parser) throws XmlPullParserException, IOException { String text = null; int eventType = parser.next(); if (eventType == XmlPullParser.TEXT) { text = parser.getText(); parser.nextTag(); } return text; } ``` 这段代码将XML数据解析为JSON对象,您可以将其用于您的Android应用的XML转JSON功能。 希望这些信息能够帮助到您。如果您还有其他问题,请随时提出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值