Android开发Android开发经验谈Android技术知识

Android开发之简易倒计时器(Intent)

2018-12-07  本文已影响12人  没想好昵称呵

我想在一个活动中启动另一个活动怎么做?

Intent

  1. 显式启动:需要指定准备启动的Activity。
  2. 隐式启动:隐式启动不需要指定特定的Activity,只需要指定Intent指定对应的category(类别)、action(动作)、data(数据)即可,具体启动哪一个Activity由系统和用户共同来决定。启动的Activity可以是系统中自带的,也可以是已安装的第三方程序中的Activity。
Intent intent = new Intent(A.this,B.class);//A代表主活动,B代表要启动的活动
StartActivity(intent);//跳转到第二个活动
Intent it = new Intent(Intent.ACTION_DIAL);//.ACTION_DIAL指明启动动作
it.setData(Uri.parse(“tel:13550093021”));//调用setData()方法,设置数据
StartActivity(it);//启动并跳转到第二个活动
补充:
  1. ACTION_DIAL显示打电话面板。
  2. 通过Uri.parse()方法将电话号码解析成一个Uri对象,再通过setData()方法将这个Uri对象传进去。

实现简易倒计时器

  1. 设置一个主活动,主活动中提供用户输入倒计时的具体数值,点击倒计时按钮,页面跳转到第二个活动。
  2. 在一个Button控件中显示倒计时的具体过程。
public class MainActivity extends AppCompatActivity {
    Button button;
    EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText)findViewById(R.id.edit1);
        button = (Button)findViewById(R.id.button1);
    }

    public void Start(View view) {
        String data = editText.getText().toString();
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        intent.putExtra("extra_data", data);
        startActivity(intent);
    }
}
补充:
  1. public void Start(View view)是点击按钮后要实现的操作。在创建Intent对象后,通过putExtra()方法传递数据,其方法接收两个参数,第一个是键,第二个才是要传递的参数。
public class SecondActivity extends AppCompatActivity {
    Button button;
    TextView textView;
    Integer integer = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Intent intent = getIntent();
        String data = intent.getStringExtra("extra_data");
        long num = (long) integer.parseInt(data);
        textView = (TextView)findViewById(R.id.sectext1);
        button = (Button)findViewById(R.id.secbutton1);

        CountDownTimer timer = new CountDownTimer(num * 1000, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                button.setText("还剩" + millisUntilFinished / 1000 + "秒");
            }

            @Override
            public void onFinish() {
                button.setText("倒计时完毕");
            }
        };
        timer.start();
    }
补充:
  1. Intent intent = getIntent()这里使用getIntent()方法检索此Item中包含的原始Intent,并将此Intent赋值给一个intent变量。
  2. String data = intent.getStringExtra("extra_data")getStringExtra()方法传入第一个活动中定义的键,获得相应的数据并存放到data变量中。
  3. long num = (long) integer.parseInt(data)因为后面要使用的数据类型是long型,但我们这里传递进来的数据类型的String型,所以我们使用Integer类中parseInt()方法将data转换为Int型再强制转换成long型。
  4. CountDownTimer timer = new CountDownTimer(num * 1000, 1000)这里我们使用了CountDownTimer这个类来实现倒计时的功能。括号里第一个参数传入倒计时的总时间(毫秒为单位,所以我们需要乘以1000化为秒);第二个参数传入每次减去的时间(毫秒为单位,这里每次减去1s)。
  5. public void onTick(long millisUntilFinished)此函数的功能从传入参数的英文意思可知,传入倒计时结束的总毫秒数。然后调用button.setText()方法将倒计时提示传到按钮框中。
  6. public void onFinish()倒计时结束后执行此方法,在按钮控件中显示倒计时完毕提示。
  7. timer.start()只有调用了start()方法,倒计时的功能才能实现。

实际效果

GitHub地址

上一篇下一篇

猜你喜欢

热点阅读