【移动安全技术】_第二站_Intent的使用



概述

作业:Intent的使用

  实验目的:加深安卓逻辑和视图分离的编程理念;熟悉和使用Intent

1、为原本为空的Activity添加一个按钮,并使按钮的点击响应为一个提示,提示内容为自己的学号和姓名。

2、两个Acitivity之间的跳转
1)通过按钮显示跳转 new Intent(context, toActivity)
2)通过action和category隐式地跳转
3)跳转到浏览器

附加题:启动页面停留5秒,自动跳转下一个页面

评分标准:完成基本题目,起评分为80分;附加题加10分。其余根据内容和格式酌情加分和减分。


课堂印象

  《Android官方培训课程中文版(v0.9.7)》
官网Training:https://github.com/kesenhoo/android-training-course-in-chinese
文档在线阅读:http://hukai.me/android-training-course-in-chinese/

  安卓编程理念:逻辑和视图是严格分开的。



实验

1.按钮响应

  在主页面文件MyMainActivity.class文件中添加按钮,传入响应文本值:

	Button mybutton_jump = (Button) findViewById(R.id.First_button);

    mybutton_jump.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            // 点击按钮弹出文本
            Toast.makeText(MyMainActivity.this, "xxxxxxx.",Toast.LENGTH_SHORT).show();    
									}
            }
    );

  在主页面的布局文件mylayout.xml中添加按钮:

<Button
    android:id="@+id/First_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="按钮值" />

  运行安卓模拟器,实验截图:

在这里插入图片描述



2-1.通过按钮实现页面的显式跳转

  在主页面文件MyMainActivity.class文件中添加按钮,定义Intent变量,此时mylayout.xml文件不变:

Button mybutton_jump = (Button) findViewById(R.id.First_button);
    mybutton_jump.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            
			//页面交互Intent
            Intent intent = new Intent(MyMainActivity.this, SecondActivity.class);
            intent.putExtra("name","trans data");
            startActivity(intent);
                }
            }
    );

  运行安卓模拟器,具体过程如下:
在这里插入图片描述


2-2.通过action和category实现页面的隐式跳转

  隐式Intent不明确指出想要启动哪一个Activity,而是指定了更为抽象的action和category等信息,然后交由系统去分析这个Intent,并找出合适的Activity去启动。

  通过在标签下配置的内容,可以指定当前Activity能够响应的action和category。

  打开仓库文件AndroidManifest.xml,添加如下代码:

在标签中指明了可以响应com.example.zere_do.ACTION_START的action,

在标签更精确地指明了能够响应的Intent可能带有的category,

只有和中的内容同时匹配Intent时,这个Activity才能响应Intent。

<activity android:name=".SecondActivity">
	<intent-filter>
		<action android:name="com.example.zere_do.ACTION_START" />
		<category android:name="android.intent.category.DEFAULT" />
	</intent-filter>
</activity>

  为主Activity赋予action:

Button mybutton_jump = (Button) findViewById(R.id.First_button);
mybutton_jump.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
			
			//隐式跳转
			Intent intent = new Intent();
            intent.setAction("second_activity");
            startActivity(intent);
                }
            }
    );
编辑器报错:Cannot resolve symbol val

  问题:使用第一行代码的Intent定义语句会报错

val intent = Intent(“com.example.zero_do.ACTION_START”);

  解决办法:修改Intent语句的定义方式

Intent intent = new Intent(“com.example.zero_do.ACTION_START”);

  运行安卓模拟器,具体过程如下:
在这里插入图片描述


2-3.通过按钮跳转到浏览器

  使用隐式Intent,不仅可以启动自己程序内的Activity,还可以启动其他程序的Activity。

  修改MainActivity.java中点击事件的代码:

	Button mybutton_jump = (Button) findViewById(R.id.First_button);
    mybutton_jump.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
			//隐式打开浏览器
            Intent intent = new Intent();
            Uri uri = Uri.parse("https://www.baidu.com");
            intent.setData(uri);
            startActivity(intent);
                }
            }
    );

  运行安卓模拟器,具体过程如下:

在这里插入图片描述


附加题:启动页面停留5秒,自动跳转页面

  MainActivity代码:

public class MyMainActivity extends AppCompatActivity {

private final int SKIP_DELAY_TIME = 5000;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mylayout);

    Timer time = new Timer();
    TimerTask task = new TimerTask(){
        @Override
        public void run() {
            startActivity(new Intent(MyMainActivity.this,SecondActivity.class));
        }
    };
    time.schedule(task, SKIP_DELAY_TIME);
	}
}

  仓库Manifest.xml代码:

<activity android:name=".SecondActivity"></activity>

  运行安卓模拟器,具体过程如下:

在这里插入图片描述

使用markdown pad2

插入图片

  (1)插入本地图片:![avatar](/home/picture/1.png)。缺点:不灵活不好分享,本地图片的路径更改或丢失都会造成markdown文件调不出图。

  (2)插入网络图片。缺点:将图片存在网络服务器上,非常依赖网络。

  √(3)把图片转base64编码,存入markdown文件。一劳永逸使用base64编码:

![avatar][base64str]

[base64str]:data:image/png;base64,iVBxxx)。

  python代码,把图片转base64编码,尝试成功:

import base64

f=open('723.png','rb') #二进制方式打开图文件
ls_f=base64.b64encode(f.read()) #读取文件内容,转换为base64编码
f.close()
print(ls_f)

插入视频

  嵌入网络视频,没有看到编码格式,不知是该庆幸还是可惜:

 <video src="https://xxx" width="800px" height="600px" controls="controls"></video>

  问题来了,视频放在网络哪呢?

  解决办法:CSDN,但是CSDN不允许上传视频,可以上传GIF。在线转换网站https://ezgif.com/video-to-gif,把mp4转换成GIF,上传GIF到CSDN,然后引用图片地址。



参考

  《自学安卓开发,有什么教材推荐?》
文章地址https://www.zhihu.com/question/30287741

  《intent 显示/隐式跳转actiivty》,2018-04。
文章地址https://blog.csdn.net/sinat_22949049/article/details/80064261

  《第一行代码 Android》。可能是由于包缺失的缘故,使用书中的代码进行实验常常会报错,不得不查找百度。初步体验,官方文档暂时用不习惯,感觉不太好用。

  《Activity之间定时跳转》, 2014-10。
文章地址https://blog.csdn.net/u012572172/article/details/39778581

  《markdown如何嵌入视频、音频》,2019.10。
文章地址https://www.jianshu.com/p/3525536f9dcd

  在线转换网站MP4->GIF,
网站地址https://ezgif.com/video-to-gif。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值