文章目录
概述
作业: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。