Android事件分發(fā)機(jī)制

準(zhǔn)備工作

對(duì)于Android事件處理分為兩類:
  1. 對(duì)于Activity和View: 只有兩種事件:
    分發(fā): dispatchTouchEvent函數(shù)
    消費(fèi): onTouchEvent函數(shù)

  2. 對(duì)于ViewGroup: 全部三種事件:
    分發(fā): dispatchTouchEvent函數(shù)
    攔截:onInterceptTouchEvent函數(shù)
    消費(fèi): onTouchEvent函數(shù)

重寫一個(gè)ViewGroup和一個(gè)View硝皂,代碼如下
EventViewGroup.java

public class EventViewGroup extends LinearLayout {
    public EventViewGroup(Context context) {
        super(context);
    }

    public EventViewGroup(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        Log.e("event","----------->dispatchTouchEvent:::ViewGroup----" + ev.getAction());
        return super.dispatchTouchEvent(ev);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        Log.e("event","----------->onInterceptTouchEvent:::ViewGroup----" + ev.getAction());
        return super.onInterceptTouchEvent(ev);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        Log.e("event","----------->onTouchEvent:::ViewGroup----" + event.getAction());
        return super.onTouchEvent(event);
    }
}

EventView.java

public class EventView extends View {

    public EventView(Context context) {
        super(context);
    }

    public EventView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        Log.e("event", "----------->dispatchTouchEvent:::View----" + ev.getAction());
        return super.dispatchTouchEvent(ev);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        Log.e("event", "----------->onTouchEvent:::View----" + event.getAction());
        return super.onTouchEvent(event);
    }
}

MainActivity.java

package com.gerry.dispatchevent;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;

import com.gerry.dispatchevent.view.EventView;
import com.gerry.dispatchevent.view.EventViewB;
import com.gerry.dispatchevent.viewgroup.EventViewGroup;
import com.gerry.dispatchevent.viewgroup.EventViewGroupB;

public class MainActivity extends AppCompatActivity {
    private EventViewGroup evg;
    private EventView ev;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        evgA= findViewById(R.id.evg);
        evA= findViewById(R.id.ev);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        Log.e("event", "----------->dispatchTouchEvent:::MainActivity----" + ev.getAction());
        return super.dispatchTouchEvent(ev);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        Log.e("event", "----------->onTouchEvent:::MainActivity----" + event.getAction());
        return super.onTouchEvent(event);
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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=".MainActivity">

     <com.gerry.dispatchevent.viewgroup.EventViewGroup
        android:id="@+id/evg"
        android:layout_width="match_parent"
        android:layout_height="500px"
        android:layout_marginTop="250px"
        android:background="@android:color/holo_green_dark"
        android:gravity="center"
        android:orientation="vertical">

        <com.gerry.dispatchevent.view.EventView
            android:id="@+id/ev"
            android:layout_width="200px"
            android:layout_height="150px"
            android:background="@android:color/holo_blue_light" />
    </com.gerry.dispatchevent.viewgroup.EventViewGroup>
</FrameLayout>

開始分析

0為按下動(dòng)作佛致,1為抬起動(dòng)作峻黍。

1. 對(duì)事件不進(jìn)行任何修改

  • 觸摸Activity
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1
  • 觸摸ViewGroup
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1
  • 觸摸View
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->dispatchTouchEvent:::View----0
E/event: ----------->onTouchEvent:::View----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1

結(jié)論:

在默認(rèn)情況下昨寞,Activity會(huì)把事件向下依次按照層級(jí)分發(fā)到觸摸的最后一個(gè)ViewGroup或者View糙臼,然后會(huì)執(zhí)行最后一個(gè)ViewGroup或者View的onTouchEvent()方法凑保,然后又向上依次按照層級(jí)去觸發(fā)onTouchEvent()事件敌完,中途若沒有被消費(fèi)徐裸,就會(huì)傳遞直到activity,整個(gè)流程呈U形刻撒,隧道式向下分發(fā)骨田,然后冒泡式向上處理。

2. 修改ViewGroup的dispatchTouchEvent方法声怔,返回false态贤。

  • 觸摸ViewGroup
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1
  • 觸摸View
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1

3. 修改View的dispatchTouchEvent方法,返回false醋火。

  • 觸摸ViewGroup
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1
  • 觸摸View
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->dispatchTouchEvent:::View----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1

4. 修改ViewGroup的dispatchTouchEvent方法悠汽,返回true箱吕。

  • 觸摸ViewGroup
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->dispatchTouchEvent:::ViewGroup----1

  • 觸摸View
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->dispatchTouchEvent:::ViewGroup----1

5. 修改View的dispatchTouchEvent方法,返回true柿冲。

  • 觸摸ViewGroup
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1
  • 觸摸View
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->dispatchTouchEvent:::View----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->dispatchTouchEvent:::ViewGroup----1
E/event: ----------->onInterceptTouchEvent:::ViewGroup----1
E/event: ----------->dispatchTouchEvent:::View----1

從2茬高,3,4假抄,5可以得出的結(jié)論:

  1. 當(dāng)dispatchTouchEvent返回false時(shí)怎栽,事件不會(huì)繼續(xù)往下分發(fā),無論是ViewGroup還是View宿饱,都會(huì)從上一級(jí)的onTouchEvent事件向上傳遞熏瞄,不會(huì)執(zhí)行自己的onTouchEvent()方法
  2. 當(dāng)dispatchTouchEvent返回true時(shí),表示事件直接被消費(fèi)谬以,這個(gè)事件也就停止分發(fā)且不會(huì)逆向向上傳遞强饮,直接結(jié)束了。
  3. 返回super:事件將會(huì)繼續(xù)向下分發(fā)为黎,直到事件被消費(fèi)為止邮丰。

6. 修改ViewGroup的onInterceptTouchEvent方法,返回false铭乾。

  • 觸摸ViewGroup
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1
  • 觸摸View
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->dispatchTouchEvent:::View----0
E/event: ----------->onTouchEvent:::View----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1

7. 修改ViewGroup的onInterceptTouchEvent方法柠座,返回true。

  • 觸摸ViewGroup
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1
  • 觸摸View
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1

從6片橡,7可以得出的結(jié)論:

  1. 當(dāng)onInterceptTouchEvnt返回false/super(默認(rèn))時(shí)妈经,事件將會(huì)正常向下分發(fā),分發(fā)至下級(jí)的dispatchTouchEvent方法 再次判斷是否分發(fā)事件捧书。
  2. 當(dāng)onInterceptTouchEvent返回true時(shí)吹泡,表示ViewGroup容器攔截后續(xù)事件,會(huì)執(zhí)行該ViewGroup的onTouchEvent()方法然后停止向下分發(fā)轉(zhuǎn)而通過onTouchEvent()向上傳遞经瓷,直到最終被消費(fèi)

8. 修改ViewGroup的onTouchEvent方法求橄,返回false隘马。

  • 觸摸ViewGroup
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1
  • 觸摸View
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->dispatchTouchEvent:::View----0
E/event: ----------->onTouchEvent:::View----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1

9. 修改ViewGroup的onTouchEvent方法素邪,返回true庐舟。

  • 觸摸ViewGroup
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->dispatchTouchEvent:::ViewGroup----1
E/event: ----------->onTouchEvent:::ViewGroup----1
  • 觸摸View
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->dispatchTouchEvent:::View----0
E/event: ----------->onTouchEvent:::View----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->dispatchTouchEvent:::ViewGroup----1
E/event: ----------->onTouchEvent:::ViewGroup----1

10. 修改View的onTouchEvent方法,返回false色冀。

  • 觸摸ViewGroup
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1
  • 觸摸View
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->dispatchTouchEvent:::View----0
E/event: ----------->onTouchEvent:::View----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1

11. 修改View的onTouchEvent方法潭袱,返回true。

  • 觸摸ViewGroup
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::ViewGroup----0
E/event: ----------->onTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->onTouchEvent:::MainActivity----1
  • 觸摸View
E/event: ----------->dispatchTouchEvent:::MainActivity----0
E/event: ----------->dispatchTouchEvent:::ViewGroup----0
E/event: ----------->onInterceptTouchEvent:::ViewGroup----0
E/event: ----------->dispatchTouchEvent:::View----0
E/event: ----------->onTouchEvent:::View----0
E/event: ----------->dispatchTouchEvent:::MainActivity----1
E/event: ----------->dispatchTouchEvent:::ViewGroup----1
E/event: ----------->onInterceptTouchEvent:::ViewGroup----1
E/event: ----------->dispatchTouchEvent:::View----1
E/event: ----------->onTouchEvent:::View----1

從8锋恬,9屯换,10,11可以得出的結(jié)論:

  1. 當(dāng)onTouchEvent返回false/super(默認(rèn))時(shí),不消費(fèi)掉此次事件彤悔,事件將會(huì)層層向上傳遞嘉抓,直到被消費(fèi)。
  2. 當(dāng)onTouchEvent返回true時(shí)晕窑,立即消費(fèi)掉事件抑片,事件將不會(huì)向上傳遞,事件到此終止杨赤。

最終結(jié)論

dispatchTouchEvent 分發(fā)
  1. 當(dāng)dispatchTouchEvent返回false時(shí)敞斋,事件不會(huì)繼續(xù)往下分發(fā),無論是ViewGroup還是View望拖,都會(huì)從上一級(jí)的onTouchEvent事件向上傳遞,不會(huì)執(zhí)行自己的onTouchEvent()方法
  2. 當(dāng)dispatchTouchEvent返回true時(shí)挫鸽,表示事件直接被消費(fèi)说敏,這個(gè)事件也就停止分發(fā)且不會(huì)逆向向上傳遞,直接結(jié)束了丢郊。
  3. 返回super:事件將會(huì)繼續(xù)向下分發(fā)盔沫,直到事件被消費(fèi)為止。
onInterceptTouchEvent 攔截
  1. 當(dāng)onInterceptTouchEvnt返回false/super(默認(rèn))時(shí)枫匾,事件將會(huì)正常向下分發(fā)架诞,分發(fā)至下級(jí)的dispatchTouchEvent方法 再次判斷是否分發(fā)事件。
  2. 當(dāng)onInterceptTouchEvent返回true時(shí)干茉,表示ViewGroup容器攔截后續(xù)事件谴忧,會(huì)執(zhí)行該ViewGroup的onTouchEvent()方法然后停止向下分發(fā)轉(zhuǎn)而通過onTouchEvent()向上傳遞,直到最終被消費(fèi)
onTouchEvent 消費(fèi)
  1. 當(dāng)onTouchEvent返回false/super(默認(rèn))時(shí)角虫,不消費(fèi)掉此次事件沾谓,事件將會(huì)層層向上傳遞,直到被消費(fèi)戳鹅。
  2. 當(dāng)onTouchEvent返回true時(shí)均驶,立即消費(fèi)掉事件,事件將不會(huì)向上傳遞枫虏,事件到此終止妇穴。

參考鏈接:
http://www.reibang.com/p/fc0590afb1bf
http://www.reibang.com/p/66a80ff0133b

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市隶债,隨后出現(xiàn)的幾起案子腾它,更是在濱河造成了極大的恐慌,老刑警劉巖死讹,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件携狭,死亡現(xiàn)場離奇詭異,居然都是意外死亡回俐,警方通過查閱死者的電腦和手機(jī)逛腿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門稀并,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人单默,你說我怎么就攤上這事碘举。” “怎么了搁廓?”我有些...
    開封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵引颈,是天一觀的道長。 經(jīng)常有香客問我境蜕,道長蝙场,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任粱年,我火速辦了婚禮售滤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘台诗。我一直安慰自己完箩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開白布拉队。 她就那樣靜靜地躺著弊知,像睡著了一般。 火紅的嫁衣襯著肌膚如雪粱快。 梳的紋絲不亂的頭發(fā)上秩彤,一...
    開封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音事哭,去河邊找鬼呐舔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛慷蠕,可吹牛的內(nèi)容都是我干的珊拼。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼流炕,長吁一口氣:“原來是場噩夢啊……” “哼澎现!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起每辟,我...
    開封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤剑辫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后渠欺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妹蔽,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胳岂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片编整。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖乳丰,靈堂內(nèi)的尸體忽然破棺而出掌测,到底是詐尸還是另有隱情,我是刑警寧澤产园,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布汞斧,位于F島的核電站,受9級(jí)特大地震影響什燕,放射性物質(zhì)發(fā)生泄漏粘勒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一屎即、第九天 我趴在偏房一處隱蔽的房頂上張望庙睡。 院中可真熱鬧,春花似錦剑勾、人聲如沸埃撵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饺谬,卻和暖如春捂刺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背募寨。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來泰國打工族展, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拔鹰。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓仪缸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親列肢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子恰画,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容