Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 795|回复: 0

开发交流:无xml布局的activity

[复制链接]

该用户从未签到

发表于 2011-10-24 10:51:25 | 显示全部楼层 |阅读模式
刚刚接触 android 学不久,自己开始研究,知道 activity 总要有一个 xml 的布局文件相对应,但如果没有这个 xml 而用 java 直接在代码中简单实现,也就是说,这个负责布局的 xml现在我不在写他。而是直接有 java 帮助我们生成,有些朋友会问,有这个必要么,自己单写个 java 类实现不和 xml 布局是同样的功能。但实际上,很多时候我们的界面不是完全不变的,如果一个 view 中出现了大量的变化,那原来的 xml 也就成了鸡肋。而且一旦我们想要将写好的一个 activity 自己封装成 JAR 包,这时多余的 xml 很可能就变成了累赘。为解决这个问题,自己做了一点测试。感觉效果能简单的解决这个问题,所以发出来,大家权当参考。
在一个 activity 中在重写的 onCreate 方法里,我们必须将布局文件指定进来 setContentView(R.layout.XXXX ); 现在我们将这个指定的 xml 放弃
Java代码 import android.app.Activity;  

import android.content.Context;  

import android.content.res.Resources;  

import android.graphics.Bitmap;  

import android.graphics.BitmapFactory;  

import android.graphics.drawable.BitmapDrawable;  

import android.os.Bundle;  

import android.view.View;  

import android.widget.ImageView;  

import android.widget.LinearLayout;  

import android.widget.TextView;  

  

public class IndexActivity extends Activity {  

  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        // TODO Auto-generated method stub  

        super.onCreate(savedInstanceState);  

                  

        newView view = newView.buildView(IndexActivity.this);  

        //原来需要指定xml的地方,换成创建相应布局的对象  

        setContentView(view);  

         

        Resources res = getResources();  

        //指定加载的图片  

        Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.back_1);  

        BitmapDrawable bmp1 = new BitmapDrawable(bmp);  

        view.imageView.setImageDrawable(bmp1);  

         

         

         

  

    }  

    //这里实验了LinearLayout布局,其他的布局暂时没做尝试,不过基本原理类似  

    static class newView extends LinearLayout {  

  

        private ImageView imageView;  

         

        public newView(Context c) {  

            super(c);  

/*

这里只创建了个ImageView 同理,如TextView EditText Button

等等都在这里创建最后只要添加到addView()中即可,补充下,

这里创建的布局规则同xml布局时的规则相同。

*/  

  

            imageView = new ImageView(c);     

/*

可以设定多种参数如大小,高度,颜色等等,

这些方法在android提供的api中很容易找到,这里列出几种常用的

            TextView mTitle = new TextView(c);

                //添加文字

mTitle.setText(title);

//居中

                mTitle.setGravity(Gravity.CENTER);

                //字体颜色

                mTitle.setTextColor(Color.WHITE);

*/  

/*



addView实际有多种构造方法,对于位置变化的需求,

需要自己添加这里举例一个常用的

addView(mTitle, new LinearLayout.LayoutParams(

                                LayoutParams.WRAP_CONTENT,

LayoutParams.WRAP_CONTENT,Gravity.CENTER_HORIZONTAL));

*/  

  

            addView(imageView);  

  

/*

对于LinearLayout本身的属性设置,

我们直接利用继承后提供的方法,直接传参数即可

如:setBackgroundResource(imgId);

setPadding(0, 8, 0, 8);等

*/  

  

              

        }  

  

        public static newView buildView(Context c) {  

            return new newView(c);  

        }  

  

    }  

}  
复制代码至此一个没有 xml 布局文件的 activity 就生成出来。写的不足的地方希望大家见谅。如有错误,请大家帮忙提出。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-19 00:29 , Processed in 0.434373 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表