目录:
一、效果图:
二、架构:
Activity、Fragment、使用压缩文件包提供数据信息。
三、目录结构:
四、代码:
1、配置文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.a15518.movies">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DetailsFileActivity"/>
</application>
</manifest>
2、主页Activity:
(1)布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/fragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<Button
android:id="@+id/btnone"
android:layout_width="0dp"
android:layout_weight="1"
android:drawableTop="@drawable/btn_one"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_height="match_parent"
android:text="首页"
android:textSize="8sp"
android:textColor="@color/gray"
android:background="#FFFFFF"
android:gravity="center"/>
<Button
android:id="@+id/btntwo"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_height="match_parent"
android:text="电影"
android:textSize="7sp"
android:textColor="@color/gray"
android:background="#FFFFFF"
android:drawableTop="@drawable/btn_two"
android:gravity="center"/>
<Button
android:id="@+id/btnthree"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:text="视频"
android:textSize="8sp"
android:textColor="@color/gray"
android:background="#FFFFFF"
android:drawableTop="@drawable/btn_three"/>
<Button
android:id="@+id/btnfour"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:text="演出"
android:textSize="8sp"
android:textColor="@color/gray"
android:background="#FFFFFF"
android:drawableTop="@drawable/btn_four"/>
<Button
android:id="@+id/btnfive"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:text="我的"
android:textSize="8sp"
android:textColor="@color/gray"
android:background="#FFFFFF"
android:drawableTop="@drawable/btn_five"/>
</LinearLayout>
</LinearLayout>
(2)java:
package com.example.a15518.movies;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
private Button btn_two;//电影按钮
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_two = (Button) findViewById(R.id.btntwo);
btn_two.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("clh","点击电影按钮");
//修改背景色
btn_two.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark));
//第一步:创建Fragment的实例对象
Fragment_two fragment_two = new Fragment_two();
//第二步:调用activity的getSupportFragmentManager()获取FragmentManager对象
FragmentManager fragmentManager = getFragmentManager();
//第三步:获取FragmentTrasction对象
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
//第四步:FragmentTrasction对象调用需要执行的方法add()、replace()、remove()
fragmentTransaction.add(R.id.fragment,fragment_two);
//第五步:FragmentTrasction对象调用commit()方法提交事务到Activity
fragmentTransaction.commit();
}
});
}
}
3、详情页Activity:
(1)布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="2dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:background="@drawable/backgroundimg">
<Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp">
<TextView
android:id="@+id/ret"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回"
android:textColor="@color/gray"
android:textSize="10sp"
android:gravity="left"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="电影"
android:textSize="15sp"
android:textColor="@color/gray"
android:layout_gravity="center"
android:gravity="center"/>
</Toolbar>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="15dp">
<ImageView
android:id="@+id/img1"
android:layout_width="100dp"
android:layout_height="150dp"
android:layout_marginRight="10dp"
android:scaleType="fitXY"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textStyle="bold"
android:textColor="#FFFFFF"
android:text="你好,李焕英"/>
<TextView
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorAccent"
android:textSize="12dp"
android:text="猫眼评分 9.3"
android:paddingTop="5dp"/>
<TextView
android:id="@+id/text4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/gray"
android:text="主演:贾玲"
android:paddingTop="20dp"/>
<TextView
android:id="@+id/text6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/gray"
android:text="上映类型"/>
<TextView
android:id="@+id/text7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/gray"
android:text="上映时间"
android:ellipsize="end"
android:lines="1"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="简介"
android:textColor="#FFFFFF"
android:textSize="20sp"/>
<TextView
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:text="收起^"
android:textSize="10dp"
android:layout_gravity="center"
android:textColor="@color/gray"/>
</LinearLayout>
<TextView
android:id="@+id/text8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="#FFFFFF"/>
</LinearLayout>
(2)java:
package com.example.a15518.movies;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.a15518.util.BitmapIOUtil;
public class DetailsFileActivity extends Activity {
private TextView btn1;//“收起”按钮
boolean flag = true; //简介是否可见
private TextView ret;//返回按钮
private TextView textView1;
private TextView textView3;
private TextView textView4;
private TextView textView6;
private TextView textView7;
private TextView textView8;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.item_detail);
//接收数据
String imgpath=this.getIntent().getStringExtra("imgPath");
String text1=this.getIntent().getStringExtra("text1");
String text3=this.getIntent().getStringExtra("text3");
String text4=this.getIntent().getStringExtra("text4");
String text6=this.getIntent().getStringExtra("text6");
String text7=this.getIntent().getStringExtra("text7");
final String text8=this.getIntent().getStringExtra("text8");
//设置控件文本
textView1=(TextView)this.findViewById(R.id.text1);
textView1.setText(text1);
textView3=(TextView)this.findViewById(R.id.text3);
textView3.setText(text3);
textView4=(TextView)this.findViewById(R.id.text4);
textView4.setText(text4);
textView6=(TextView)this.findViewById(R.id.text6);
textView6.setText(text6);
textView7=(TextView)this.findViewById(R.id.text7);
textView7.setText(text7);
textView8=(TextView)this.findViewById(R.id.text8);
textView8.setText(text8);
ImageView imgView=(ImageView)this.findViewById(R.id.img1);
Bitmap bit= BitmapIOUtil.getSBitmap(imgpath);
imgView.setImageBitmap(bit);
//收起&展开按钮
btn1 = (TextView) findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (flag == true){
flag = false;
btn1.setText("展开v");
textView8.setVisibility(View.INVISIBLE);
}else{
flag = true;
textView8.setVisibility(View.VISIBLE);
btn1.setText("收起^");
}
}
});
//返回按钮
ret = (TextView) findViewById(R.id.ret);
ret.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(DetailsFileActivity.this,MainActivity.class);
startActivity(intent);
}
});
}
}
4、Fragment:
(1)布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<GridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="0dp"
android:numColumns="2">
</GridView>
</LinearLayout>
(2)java:
package com.example.a15518.movies;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import com.example.a15518.util.BitmapIOUtil;
import com.example.a15518.util.PubMethod;
import com.example.a15518.util.ZipUtil;
import java.util.ArrayList;
import java.util.HashMap;
public class Fragment_two extends Fragment {
private String[] infor=new String[40]; //文件内容,获取图片、名字、影片源、评分、主演、放映量、电影类型、上映时间、简介。
private String[] imgPath=new String[20]; //图片路径
private String[] texts1=new String[20]; //名字
private String[] texts2=new String[20]; //影片源
private String[] texts3=new String[20]; //评分
private String[] texts4=new String[20]; //主演
private String[] texts5=new String[20]; //放映量
private String[] texts6=new String[20]; //电影类型
private String[] texts7=new String[20]; //上映时间
private String[] texts8=new String[20]; //简介
private Bitmap[] imgBp=new Bitmap[20]; //图片数组
private GridView gridview;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_two, container, false);
gridview=(GridView) view.findViewById(R.id.gridView1);
try
{
//解压缩data.zip到sd卡中
ZipUtil.unZip(getActivity(), "data.zip", "/sdcard/");
}
catch(Exception e)
{
System.out.println("解压出错!");
}
//获取文本内容,获取图片名和商品名。
String information= PubMethod.loadFromFile("movies/filename.txt");
//split方法把字符串按照指定的分割符进行分割,然后返回字符串数组。
infor=information.split("\\|");
final int count=infor.length/9;//计算商品数量
//获取图片和商品名的路径
for(int i=0;i<count;i++)
{
imgPath[i]="movies/img/"+infor[9*i];
texts1[i]=infor[9*i+1];
texts2[i]=infor[9*i+2];
texts3[i]=infor[9*i+3];
texts4[i]=infor[9*i+4];
texts5[i]=infor[9*i+5];
texts6[i]=infor[9*i+6];
texts7[i]=infor[9*i+7];
texts8[i]=infor[9*i+8];
}
//获取图片
for(int i=0;i<count;i++)
{
imgBp[i]= BitmapIOUtil.getSBitmap(imgPath[i]);
}
//生成动态数组,并且转入数据
ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();
for(int i=0;i<count;i++)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("img1",imgBp[i]); //添加图像资源
map.put("text1",texts1[i]);
map.put("text2",texts2[i]);
map.put("text3",texts3[i]);
map.put("text4",texts4[i]);
map.put("text5",texts5[i]);
lstImageItem.add(map);
}
//生成适配器的ImageItem <====> 动态数组的元素,两者一一对应
SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity(),
lstImageItem, //数据来源
R.layout.gridview_item, //night_item的XML实现
new String[] {"img1","text1","text2","text3","text4","text5"}, //动态数组与ImageItem对应的子项
//ImageItem的XML文件里面的一个ImageView,一个TextView ID
new int[] {R.id.img1,R.id.text1,R.id.text2,R.id.text3,R.id.text4,R.id.text5});
//以下代码将位图数据data设置到ImageView中,以实现子布局绑定显示图片功能。
simpleAdapter.setViewBinder(new SimpleAdapter.ViewBinder(){
public boolean setViewValue(View view, Object data, String textRepresentation) {
if( (view instanceof ImageView) & (data instanceof Bitmap) ) {
ImageView iv = (ImageView) view;
Bitmap bm = (Bitmap) data;
iv.setImageBitmap(bm);
return true;
}
return false;
}
});
//设置GridView的适配器为新建的simpleAdapter
gridview.setAdapter(simpleAdapter);
//点击GridView每个子项时的监听事件
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.d("clh","点击");
//选中项目,跳转到下一界面
Intent intent=new Intent(getActivity(),DetailsFileActivity.class);
intent.putExtra("text1",texts1[i]);
intent.putExtra("text3",texts3[i]);
intent.putExtra("text4",texts4[i]);
intent.putExtra("text6",texts6[i]);
intent.putExtra("text7",texts7[i]);
intent.putExtra("text8",texts8[i]);
intent.putExtra("imgPath",imgPath[i]);
startActivity(intent);
}
});
return view;
}
}
(3)GridView单个列表项布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center"
android:paddingBottom="1dp"
android:descendantFocusability="blocksDescendants">
<ImageView
android:id="@+id/img1"
android:layout_width="100dp"
android:layout_height="150dp"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textStyle="bold"
android:text="你好,李焕英"/>
<TextView
android:id="@+id/text2"
android:text="影院"
android:textSize="12sp"
android:gravity="center"
android:textColor="#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/gray"/>
</LinearLayout>
<TextView
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorPrimary"
android:textSize="16dp"
android:text="猫眼评分 9.3" />
<TextView
android:id="@+id/text4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/gray"
android:text="主演:贾玲"/>
<TextView
android:id="@+id/text5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/gray"
android:text="今天63家电影院放映491场"/>
</LinearLayout>
<Button
android:id="@+id/btn"
android:textColor="#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="购票"
android:background="@drawable/shape_corner"
android:clickable="false"/>
</LinearLayout>
5、压缩文件类:
(1)BitmapIOUtil:
package com.example.a15518.util;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
public class BitmapIOUtil {
static PubMethod pub=new PubMethod();
static Bitmap bp=null;
public static Bitmap getSBitmap(String subPath)
{
try
{
String path=Constant.ADD_PRE+subPath;
bp = BitmapFactory.decodeFile(path);
}
catch(Exception e)
{
System.out.println("出现异常!");
}
return bp;
}
}
(2)Constant:
package com.example.a15518.util;
public class Constant {
public static final String ADD_PRE="/sdcard/data/";
}
(3)PubMethod:
package com.example.a15518.util;
import android.app.Activity;
import java.io.File;
import java.io.FileInputStream;
public class PubMethod
{
Activity activity;
public PubMethod()
{
}
public PubMethod(Activity activity)
{
this.activity=activity;
}
//获取文件信息
public static String loadFromFile(String fileName)
{
String result=null;
try
{
String filepath= Constant.ADD_PRE+fileName;
File file=new File(filepath);
int length=(int)file.length();
byte[] buff=new byte[length];
FileInputStream fin=new FileInputStream(file);
fin.read(buff);
fin.close();
result=new String(buff,"UTF-8");
System.out.println("找到文件"+fileName);
result=result.replaceAll("\\r\\n","");
}
catch(Exception e)
{
System.out.println("对不起,没有找到指定文件!"+fileName);
//Toast.makeText(activity, "对不起,没有找到指定文件!", Toast.LENGTH_SHORT).show();
}
return result;
}
}
(4)ZipUtil:
package com.example.a15518.util;
import android.content.Context;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class ZipUtil {
public static void unZip(Context context, String assetName, String outputDirectory) throws IOException
{
//创建解压目标目录
File file = new File(outputDirectory);
//如果目标目录不存在,则创建
if (!file.exists())
{
file.mkdirs();
}
InputStream inputStream = null;
//打开压缩文件
inputStream = context.getAssets().open(assetName);
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
//读取一个进入点
ZipEntry zipEntry = zipInputStream.getNextEntry();
//使用1Mbuffer
byte[] buffer = new byte[1024 * 1024];
//解压时字节计数
int count = 0;
//如果进入点为空说明已经遍历完所有压缩包中文件和目录
while (zipEntry != null)
{
//如果是一个目录
if (zipEntry.isDirectory())
{
//String name = zipEntry.getName();
//name = name.substring(0, name.length() - 1);
file = new File(outputDirectory + File.separator + zipEntry.getName());
file.mkdir();
} else
{
//如果是文件
file = new File(outputDirectory + File.separator
+ zipEntry.getName());
//创建该文件
file.createNewFile();
FileOutputStream fileOutputStream = new FileOutputStream(file);
while ((count = zipInputStream.read(buffer)) > 0)
{
fileOutputStream.write(buffer, 0, count);
}
fileOutputStream.close();
}
//定位到下一个文件入口
zipEntry = zipInputStream.getNextEntry();
}
zipInputStream.close();
}
}
6、filename.txt格式:
movie1.jpg|你好,李焕英|杜比 2D|猫眼评分 9.5|主演:贾玲,张小斐,沈腾|今天63家影院放映491场|喜剧/剧情|2021-02-12 8:00中国大陆上映/126分钟>|2001年的某一天,刚刚考上大学的贾晓玲(贾玲饰)经历了人生中的一次大起大落。一心想要成为母亲骄傲的她却因母亲突遭严重意外,而悲痛万分。在贾晓玲情绪崩溃的状态下,竟意外的回到了1981年,并与年轻的母亲李焕英(张小斐饰)相遇,二人形影不离,宛如闺蜜。与此同时,也结识了一群天真善良的好朋友。晓玲以为来到了这片“广阔天地”,她可以凭借自己超前的思维,让母亲“大有作为”,但结果却让晓玲感到意外.....|
movie2.jpg|阿凡达|IMAX 3D|猫眼评分 9.3|主演:萨姆,佐伊|今天61家影院放映531场|动作/科幻/冒险|2021-03-12 8:00中国大陆重映/162分钟>|战斗中负伤而下身瘫痪的前海军战士杰克·萨利(萨姆·沃辛顿饰)决定替死去的同胞哥哥到潘多拉星控操纵格蕾丝博士(西格妮·韦弗饰)用人类基因与当地纳美部族基因结合创造出的“阿凡达“混血生物。"杰克的目的是打入纳美部落,外交说服他们自愿离开世代居住的家园,从而SecFor公司可砍伐殆尽该地区的原始森林,开采地下昂贵的“不可得"矿。在探索潘多拉星的过程中,杰克遇到了纳美部落的公主娜蒂瑞(佐伊·索尔达娜饰),向她学习了纳美人的生存技能与对待自然的态度。与此同时,SecFor公司的经理和军方代表上校迈尔斯(史蒂芬·朗饰)逐渐丧失耐心,决定诉诸武力驱赶纳美人。|
movie3.jpg|人潮汹涌|巨幕 2D|猫眼评分 9.1|主演:刘德华|今天43家影院放映520场|喜剧/剧情/爱情|2021-02-12 8:00中国大陆上映/119分钟>|2021年,你做好准备换个活法,牛转乾坤了吗?顶级杀手周全(刘德华饰)和落寞群演陈小萌(肖央饰)在一次意外中交换了身份。杀手在跌入谷底的过程中,重新审视了爱情和生活;群演在冒充杀手的过程中,彻底重塑了人生。两个人一起历经的荒诞,有啼笑皆非,更有热血沸腾。|
movie4.jpg|唐人街探案3|杜比 2D|猫眼评分 8.8|主演:王宝强|今天69家影院放映425场|喜剧/悬疑|2021-02-12 8:00中国大陆上映/130分钟>|继曼谷、纽约之后,东京再出大案。唐人街神探唐仁(王宝强饰)、秦风(刘昊然饰)受侦探野田昊(妻夫木聪饰)的邀请前往破案。“CRIMASTER世界侦探排行榜”中的侦探们闻讯后也齐聚东京,加入挑战,而排名第一Q的现身,让这个大案更加扑朔迷离,一场亚洲最强神探之间的较量即将爆笑展开......|
movie5.jpg|刺杀小说家|杜比 2D|猫眼评分 8.6|主演:雷佳音|今天81家影院放映874场|动作/奇幻/冒险|2021-02-12 8:00中国大陆上映/137分钟>|异世界皇都,天神赤发鬼残暴统治,滥杀无辜。少年空文因被赤发鬼追杀,决定奋起反击。在黑甲的指引下,踏上了凡人弑神之路。这是小说家路空文笔下的奇幻世界。没想到小说的进程,竟然影响着现实世界。这时一名男子接下了刺杀他的任务|