Java转Android:第2天 用Button做了个抽奖App

2,709 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情


如果你认真看,读800字就可以学会这个App。

抽奖.gif

一、我讲

今天,我先讲Android MVC模型的界面操作,再说TextView、Button两个控件的使用。

1.1 MVC

Android开发给Java开发讲MVC模型,多此一举了。

graph TD
M[Model模型] --> V[View视图]
C[Controller 控制器] --> V
C --> M

优弧说不要讲烂大街的东西。我此处稍微一提MVC在Android中是如何界定的。

看这个皮影戏,艺人按照剧本操作皮影人物在幕布上表演,这就是典型的MVC。 image.png

在安卓项目里,Activity就是艺人(控制器Controller)。layout下的xxx.xml就是皮影幕布(视图View)。 image.png

今天就说这俩, 模型Model用不到,所以不说。

1.2 控件:文本和按钮

Android中,展示文本的控件叫TextView,按钮叫Button。

视图的代码在layout文件夹中,控件的定义采用的是xml格式。

比如,文本控件TextView在xml中这么定义:

<TextView 
    android:id="@+id/tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"/>

它有很多属性:

image.png

其实,按钮Button也是一样:

<Button 
    android:id="@+id/btn"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="点击开始"/>

说完了视图View,再说控制器Controller。我们如何来控制这些控件呢?

比如,让文本显示指定的内容,再比如点击按钮触发一个操作。

首先第一步就是找到控件。然后,给它赋值或者绑定监听事件。

// 第一步:根据ID属性找到对象
TextView textView = findViewById(R.id.tv);
// 第二步:让他的内容改变
textView.setText("hi, 船长");

//第一步:根据ID属性找到对象
Button button = findViewById(R.id.btn);
//第二步:给它设置监听
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        textView.setText("hi,优弧"); // 点击之后执行操作
    }
});

上面的代码,要在Activity中执行。

二、你做

下面,我想让你做下面这个功能,也是开头那张图。

抽奖.gif

新建项目之后,会自动生成一个Activity和一个xml布局,就用那两个文件就可以了。

2.1 写布局

首先我们找到layout下的activity_main.xml布局,可以看到它有Code和Design两种模式。 Untitled.gif

你可以在Code模式下写入控件的xml定义。当然,也可以拖对应的控件到画布上。 Untitled2.gif

但是效果都是一样的,最终都是生成了代码。

<android.support.constraint.ConstraintLayout>
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="幸运大奖,会是谁呢???" />
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="抽取幸运掘友,你真掘了" />
</android.support.constraint.ConstraintLayout>

2.2 写逻辑

然后再找到MainActivity,加入如下代码:

public class MainActivity extends AppCompatActivity {

    String[] names = new String[]{"优弧","船长","托尼","春哥","若川巨","南方佬"};
    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.textView);
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int i = new Random().nextInt(names.length);
                textView.setText(names[i]);
            }
        });
}

很惊喜,全是Java代码,我都不用解释了。总体上就是搞了一个字符串数组,然后点击一下按钮,给文本随机设置一个数组里的值。

最后,点击顶部的Run图标,选择模拟器,程序就跑起来了。

三、关于

现在,行业内多是Android转Java,很少有Java转Android的。

但是,这并不妨碍Java同学了解Android开发,从学习的角度去拓宽自己的知识面。

所以,我会以最精简的语言来编写一个系列教程《Java转Android》(第一季30篇,日更)。

其实,不管是Java还是python,只要有编程基础的同学,一天看800字,30天可入门安卓。