Android实验活动与Intent的使用
实验内容:
-
设计一个新闻类用于存储新闻内容,如:
class News{ public String title; public String content; public String Source; public String Time; }
-
让程序默认加载ListActivity,创建长度为2的News对象数组,并为其硬编码赋值,将两个数组元素中的值分别加载到两个新闻列表项中
-
点击列表项,进入Detail,使用Intent将该列表项对应的News对象值传入,并显示在界面中
-
进入DetailActivity和退出DetailActivity时,分别记录时间,如果用户停留时间超过30秒,则向List传值,表示该新闻已读,ListActivity将标记为已读的文字显示为灰色
实验截图:
Java代码:
DetailActivity.java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class DetailActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
News news = (News) getIntent().getSerializableExtra("news");
TextView title = findViewById(R.id.title);
title.setText(news.getTitle());
TextView source = findViewById(R.id.source);
source.setText(news.getSource());
TextView time = findViewById(R.id.date);
time.setText(news.getTime());
TextView content = findViewById(R.id.content);
content.setText(news.getContent());
}
}
News.java:
package com.example.myapplication;
import java.io.Serializable;
public class News implements Serializable {
public String title;
public String content;
public String source;
public String time;
public int id;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
NewsActivity.java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class NewsActivity extends AppCompatActivity {
public News[] news = new News[2];
public static long stopTime1,stopTime2;
public static int id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news);
news[0] = new News();
news[0].setTitle("海绵宝宝快乐的一天");
news[0].setContent("海绵宝宝和派大星打架,派大星:你这个黄色块块!海绵宝宝:你这个粉红尖尖!");
news[0].setSource("来源:新华网");
news[0].setTime("2020/10/15");
news[0].setId(1);
news[1] = new News();
news[1].setTitle("派大星星开心的一天");
news[1].setContent("派大星:他真是可怕了,一看到他我就恶心!那双大牛眼睛、方身体、两颗大门牙,还有那个愚蠢的领带!真是太可怕了! 海绵宝宝:呃…… 派大星:但是这些在你身上就很好看~");
news[1].setSource("来源:新华网");
news[1].setTime("2020/10/15");
news[1].setId(2);
RelativeLayout news1 = findViewById(R.id.news1);
news1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stopTime1=System.currentTimeMillis();
id=news[0].getId();
Intent intent = new Intent(NewsActivity.this,DetailActivity.class);
intent.putExtra("news",news[0]);
startActivity(intent);
}
});
RelativeLayout news2 = findViewById(R.id.news2);
news2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stopTime1=System.currentTimeMillis();
id=news[1].getId();
Intent intent = new Intent(NewsActivity.this,DetailActivity.class);
intent.putExtra("news",news[1]);
startActivity(intent);
}
});
}
@Override
protected void onRestart() {
super.onRestart();
stopTime2=System.currentTimeMillis();
if((stopTime2-stopTime1)/1000>30){
if (id==1){
TextView title = findViewById(R.id.listtitle1);
title.setTextColor(Color.GRAY);
}
else if(id==2){
TextView title = findViewById(R.id.listtitle2);
title.setTextColor(Color.GRAY);
}
}
}
}
布局文件代码
Activity_detail.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".DetailActivity">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/title" android:layout_gravity="center_horizontal" android:layout_marginTop="20dp" android:textColor="#000000" android:textSize="25sp" />
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_marginRight="10dp" android:orientation="horizontal">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/source" android:textColor="#000000" android:textSize="15sp" />
<TextView android:id="@+id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000000" android:textSize="15sp" android:gravity="right" android:layout_weight="1"/>
</LinearLayout>
<ImageView android:layout_width="match_parent" android:layout_height="33dp" android:src="@drawable/timg" android:layout_marginLeft="5dp" android:layout_marginRight="5dp"/>
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/content" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_marginRight="10dp" android:textColor="#000000" android:textSize="17sp" />
</LinearLayout>
Activity_news.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="5dp" android:orientation="vertical" tools:context=".NewsActivity">
<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" android:id="@+id/news1">
<ImageView android:id="@+id/listimage1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:adjustViewBounds="true" android:maxWidth="90dp" android:maxHeight="80dp" android:src="@drawable/haibao" />
<TextView android:id="@+id/listtitle1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_toRightOf="@id/listimage1" android:text="海绵宝宝快乐的一天" android:textColor="#000000" android:textSize="20sp" />
<TextView android:id="@+id/listsource1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/listtitle1" android:layout_marginLeft="20dp" android:layout_marginTop="15dp" android:layout_toRightOf="@id/listimage1" android:text="来源:新华网" android:textSize="15sp" />
<TextView android:id="@+id/listdate1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/listtitle1" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginTop="15dp" android:text="时间:2020/10/09" android:textSize="15sp" />
</RelativeLayout>
<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/news2" android:clickable="true">
<ImageView android:id="@+id/listimage2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:adjustViewBounds="true" android:maxWidth="90dp" android:maxHeight="80dp" android:src="@drawable/paidaxing" />
<TextView android:id="@+id/listtitle2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_toRightOf="@id/listimage2" android:text="派大星星开心的一天" android:textColor="#000000" android:textSize="20sp" />
<TextView android:id="@+id/listsource2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/listtitle2" android:layout_marginLeft="20dp" android:layout_marginTop="15dp" android:layout_toRightOf="@id/listimage2" android:text="来源:新华网" android:textSize="15sp" />
<TextView android:id="@+id/listdate2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/listtitle2" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginTop="15dp" android:text="时间:2020/10/09" android:textSize="15sp" />
</RelativeLayout>
</LinearLayout>