[note]Android小Demo之Activity跳转

本项目需求为:

做一个简单android应用,包含2个activity,第一个activity展示一个可输入的文本框和一个按钮(点击按钮进入下一个activity),第二个activity展示从第一个文本框输入的内容。

----------------------------------------------------------------------------------------------------------------------------------------------------------

一、Whhhat is Activity?

Activity是android四大组件之一,所有控件都在activity中运行,每个activity之间的通信通过Intent实现。

对于一个android程序:

App中一个屏幕的抽象:Activity

屏幕之间的跳转:Intent

构成屏幕展示的视图组件:显示图片的ImageView,显示文字的TextView,把组件组成一个列表的视图ListView。

通过事件来处理用户的交互:OnClickListener

android工程中非常重要的一个配置文件app/src/main/AndroidManifest.xml描述Android应用的基本信息,并定义了应用中的各个组件(Activity是一种组件)。

app/src/main/res目录下包含了应用所需要的资源文件:

drawable<density>/ - 图片资源文件

layout/ - 用户界面布局描述文件

menu/ - 应用的菜单布局

values/ 常量值例如字符串、颜色数值等

strings/ 国际化数据


二、组件

本项目很简单,涉及组件只有EditText、Button以及TextView三个组件,下面罗列其较为重要的几个属性:

1.文本输入框EditText:

android:id:View的唯一标识符

android:layout_width 和android:layout_height:对于宽和高不建议指定具体的大小,使用wrap_content指定之后,这个视图将只占据内容大小的空间。如果使用了match_parent,这时EditText将会布满整个屏幕,因为它将适应父布局的大小。

android:hint:当文本框为空的时候,会默认显示这个字符串。对于字符串@string/edit的值所引用的资源应该是定义在单独的文件里,而不是直接使用字符串。

因为使用的值是存在的资源,所以不需要使用+号。然而,由于还没有定义字符串的值,所以在添加@string/edit时候会出现编译错误。下边可以定义字符串资源值来去除这个错误。

Note: 该字符串资源与id使用了相同的名称(edit)。然而,对于资源的引用是区分类型的(比如id和字符串),因此,使用相同的名称不会引起冲突。)

/res/values/string.xml下定义:<string name="edit">Please Enter Your Text</string>。

2.按钮Button:

android:layout_gravity 和 android:gravity 的区别从名字上可以看到,android:gravity是对元素本身说的,元素本身的

文本显示在什么地方靠着换个属性设置,不过不设置默认是在左侧的。

android:layout_gravity是相对与它的父元素说的,说明元素显示在父元素的什么位置。

比如说button:android:layout_gravity 表示按钮在界面上的位置。

android:gravity表示button上的字在button上的位置。

这两个属性可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、

center、fill、clip_vertical。而且这些属性是可以多选的,用“|”分开。

3.文本展示框TextView:

//设置显示文本

android:text="我爱Java"

//设置文本颜色

android:textColor="#f00"

//设置文本大小

android:textSize="20pt"

//不管内容多长,单行显示

android:singleLine="true"

//文字过长时,中间部分省略

android:ellipsize="middle"

//全部字母大写

android:textAllCaps="true"


三、Activity跳转

Activity的跳转通过Intent实现,Intent几个重要的方法:

intent.setClass(ActivityA.this, ActivityB.class):从ActivityA跳转到ActivityB

intent.putExtra("键","值"):以键值对的形式附加数据

startActivity(intent):携带附加数据跳转到ActivityB

getIntent():捕获到intent

intent.getExtras():获取intent对象中的附加数据


本Demo部分代码:

MainActivity:

    //onCreate方法用来初始化Activity实例对象
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //super.onCreate(savedInstanceState)的作用是调用其父类
        //Activity的onCreate方法来实现对界面的图画绘制工作
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main)的作用是加载一个界面
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.btn);
        button.setOnClickListener(listener);
        editText = (EditText)findViewById(R.id.edit);
    }
onClick监听事件:
    private View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            //从MainActivity跳转到另DetailActivity
            intent.setClass(MainActivity.this, DetailActivity.class);
            //将MainActivity.EditText的内容put到intent中
            intent.putExtra("str",editText.getText().toString());
            //intent传递给DetailActivity
            startActivity(intent);
        }
    };
DetailActivity:
public class DetailActivity extends AppCompatActivity {

    private TextView textView = null;

    //DetailActivity初始化
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        //接收intent对象,通过key值获取value
        String text = this.getIntent().getExtras().getString("text");
        textView = (TextView) findViewById(R.id.txv);
        textView.setText(text);
    }
}




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值