自定義View_自定義時(shí)鐘ClockView

前段時(shí)間一直忙著學(xué)理財(cái)給自己充電鲤看,有一段時(shí)間沒寫代碼了缘揪,前兩天做了一個(gè)夢(mèng),夢(mèng)見自己在寫代碼义桂,是做了一個(gè)自定義時(shí)鐘的一個(gè)東西找筝,然后我醒來后就想著把這個(gè)效果實(shí)現(xiàn)以下,也算是“夢(mèng)”想成真了慷吊。先來看下效果圖吧~

OK袖裕,話不多說,直接安排~

1.初始化畫筆

定義好需要的畫筆溉瓶,這里我們先定義4個(gè)急鳄,分別是繪制背景谤民、基本元素、指針疾宏、數(shù)字四個(gè)Paint畫筆张足。然后初始化進(jìn)行畫筆的基本設(shè)置。

/**
 * 背景繪制畫筆
 */
private Paint mPaintBg;
/**
 * 時(shí)鐘元素畫筆
 */
private Paint mPaint;
/**
 * 繪制指針的畫筆
 */
private Paint mPaintLine;
/**
 * 繪制數(shù)字的畫筆
 */
private Paint mPaintText;

//------------------------------------------------------------------------------

/**
 * 初始化
 */
private void initView() {
    mPaintBg = new Paint();
    mPaintBg.setAntiAlias(true);
    mPaintBg.setColor(Color.BLACK);
    mPaintBg.setStrokeWidth(dip2px(mContext, 2));
    mPaintBg.setStyle(Paint.Style.STROKE);

    mPaint = new Paint();
    mPaint.setAntiAlias(true);
    mPaint.setColor(Color.RED);
    mPaint.setStyle(Paint.Style.FILL);

    mPaintLine = new Paint();
    mPaintLine.setAntiAlias(true);
    mPaintLine.setStyle(Paint.Style.FILL);
    mPaintLine.setStrokeWidth(dip2px(mContext, 2));

    mPaintText = new Paint();
    mPaintText.setAntiAlias(true);
    mPaintText.setColor(Color.BLACK);
    mPaintText.setStyle(Paint.Style.STROKE);
    mPaintText.setTextSize(30);
}

2.初始化變量

這里要定義三個(gè)變量來控制三個(gè)指針的長(zhǎng)度坎藐,也用于后面計(jì)算坐標(biāo)为牍。

/**
 * 指針長(zhǎng)度-時(shí)針
 */
private float mDistanceHour;
/**
 * 指針長(zhǎng)度-分針
 */
private float mDistanceMinute;
/**
 * 指針長(zhǎng)度-秒針
 */
private float mDistanceSecond;

//------------------------------------------------------------------------------

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    mDistanceHour = w / 5 - dip2px(mContext, 7);
    mDistanceMinute = mDistanceHour + dip2px(mContext, 18);
    mDistanceSecond = mDistanceHour + dip2px(mContext, 45);
}

3.定義相關(guān)變量

這里我對(duì)時(shí)分秒分別定義了變量進(jìn)行控制處理,主要是用來根據(jù)當(dāng)前時(shí)間來計(jì)算指針?biāo)枰獎(jiǎng)澾^的角度岩馍。

/**
 * 0-11
 */
private int mCurrentHour = 0;
/**
 * 0-59
 */
private int mCurrentMinute = 0;
/**
 * 0-59
 */
private int mCurrentSecond = 0;

OK俱尼,接下來上核心代碼狸眼,也就是繪制部分劈愚。為了方便計(jì)算镜硕,我們把畫筆移動(dòng)到正中央,也就是先調(diào)用一下canvas.translate(getWidth() / 2, getHeight() / 2);然后再進(jìn)行繪制双谆。

4.繪制時(shí)鐘基本元素

/**
 * 繪制時(shí)鐘基本的元素
 *
 * @param canvas
 */
private void drawClock(Canvas canvas) {
    //繪制圓圈背景
    canvas.drawCircle(0, 0, (getWidth() - dip2px(mContext, 2)) / 2, mPaintBg);
    //繪制文字和小圓點(diǎn)
    for (int i = 0; i < 12; i++) {
        float r = getWidth() / 2 - offset;
        float deg = i * 30 + 30;
        float x = (float) (r * Math.sin(Math.PI * deg / 180));
        float y = (float) (r * Math.cos(Math.PI * deg / 180));
        canvas.drawCircle(x, -y, dip2px(mContext, 3), mPaint);
        //繪制進(jìn)度數(shù)字
        String text = (i + 1) + "";
        //獲取文字寬度
        float textWidth = mPaintText.measureText(text, 0, text.length());
        float dx = x - x / 10 - textWidth / 2;
        Paint.FontMetricsInt fontMetricsInt = mPaintText.getFontMetricsInt();
        float dy = (fontMetricsInt.bottom - fontMetricsInt.top) / 2 - fontMetricsInt.bottom;
        float baseLine = -(y - y / 10) + dy;
        canvas.drawText(text, dx, baseLine, mPaintText);
    }
}

到這里我們就能看到基本的樣子已經(jīng)出來了壳咕,如下圖:


5.繪制時(shí)針

/**
 * 繪制時(shí)針
 *
 * @param canvas
 */
private void drawHour(Canvas canvas) {
    mPaintLine.setColor(Color.BLACK);
    /**
     * 找到時(shí)間和弧度的關(guān)系,先計(jì)算出總的時(shí)間加在一起是多少個(gè)小時(shí),
     * 然后根據(jù)小時(shí)數(shù)計(jì)算出在時(shí)鐘上需要繪制的角度是多少佃乘,再求出坐標(biāo)進(jìn)行繪制
     */
    float hour = (float) mCurrentHour + (float) mCurrentMinute / 60 + (float) mCurrentSecond / 3600;
    float deg1 = hour * 30;
    Log.i(TAG, "度數(shù)deg1:" + hour);
    float x1 = (float) (mDistanceHour * Math.sin(Math.PI * deg1 / 180));
    float y1 = (float) (mDistanceHour * Math.cos(Math.PI * deg1 / 180));
    //canvas.drawCircle(x1, -y1, 10, mPaintLine);
    canvas.drawLine(0, 0, x1, -y1, mPaintLine);
}

6.繪制分針

/**
 * 繪制分針
 *
 * @param canvas
 */
private void drawMinute(Canvas canvas) {
    mPaintLine.setColor(Color.BLACK);
    /**
     * 找到時(shí)間和弧度的關(guān)系
     */
    float minute = (float) mCurrentMinute + (float) mCurrentSecond / 60;
    float deg1 = minute * 6;
    Log.i(TAG, "===度數(shù)minute:" + minute + "===度數(shù)deg1:" + deg1);
    float x1 = (float) (mDistanceMinute * Math.sin(Math.PI * deg1 / 180));
    float y1 = (float) (mDistanceMinute * Math.cos(Math.PI * deg1 / 180));
    //canvas.drawCircle(x1, -y1, 10, mPaintLine);
    canvas.drawLine(0, 0, x1, -y1, mPaintLine);
}
7.繪制秒針

/**
 * 繪制秒針
 *
 * @param canvas
 */
private void drawSecond(Canvas canvas) {
    mPaintLine.setColor(Color.RED);
    /**
     * 找到時(shí)間和弧度的關(guān)系
     */
    float deg1 = mCurrentSecond * 6;
    Log.i(TAG, "===度數(shù)deg1:" + deg1);
    float x1 = (float) (mDistanceSecond * Math.sin(Math.PI * deg1 / 180));
    float y1 = (float) (mDistanceSecond * Math.cos(Math.PI * deg1 / 180));
    //canvas.drawCircle(x1, -y1, 10, mPaintLine);
    canvas.drawLine(0, 0, x1, -y1, mPaintLine);
}
8.動(dòng)起來

如何動(dòng)起來囱井,就很簡(jiǎn)單了驹尼,我們只要每隔1秒進(jìn)行繪制一次即可趣避,這里我使用了Handler+Runnable的方式進(jìn)行實(shí)現(xiàn)的,代碼很簡(jiǎn)單就不單獨(dú)列出來了新翎,下面直接上完整代碼程帕。

ClockView.java

/**
 * 自定義View系列-時(shí)鐘Clock
 */
public class ClockView extends View {

    private static final String TAG = ClockView.class.getSimpleName();

    /**
     * 上下文
     */
    private Context mContext;
    /**
     * 背景繪制畫筆
     */
    private Paint mPaintBg;
    /**
     * 時(shí)鐘元素畫筆
     */
    private Paint mPaint;
    /**
     * 繪制指針的畫筆
     */
    private Paint mPaintLine;
    /**
     * 繪制數(shù)字的畫筆
     */
    private Paint mPaintText;
    /**
     * 0-11
     */
    private int mCurrentHour = 0;
    /**
     * 0-59
     */
    private int mCurrentMinute = 0;
    /**
     * 0-59
     */
    private int mCurrentSecond = 0;

    /**
     * 指針長(zhǎng)度-時(shí)針
     */
    private float mDistanceHour;
    /**
     * 指針長(zhǎng)度-分針
     */
    private float mDistanceMinute;
    /**
     * 指針長(zhǎng)度-秒針
     */
    private float mDistanceSecond;
    /**
     * 偏移量
     */
    private float offset;
    /**
     * 時(shí)間間隔
     */
    private int TIME = 1000;//默認(rèn)每隔10ms重繪一次
    /**
     * Handler
     */
    Handler handler = new Handler();
    /**
     * Runnable
     */
    Runnable runnable = new Runnable() {

        @Override
        public void run() {
            try {
                handler.postDelayed(this, TIME);
                switch (mTypeModel) {
                    case CURRENT_MODEL:
                        getCurrentTime();
                        break;
                    case DEFAULT_MODEL:
                        getDefaultTime();
                        break;
                }
                invalidate();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    };

    public ClockView(Context context) {
        this(context, null);
    }

    public ClockView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public ClockView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        mContext = context;
        initView();
        offset = dip2px(mContext, 10);
    }

    /**
     * 初始化
     */
    private void initView() {
        mPaintBg = new Paint();
        mPaintBg.setAntiAlias(true);
        mPaintBg.setColor(Color.BLACK);
        mPaintBg.setStrokeWidth(dip2px(mContext, 2));
        mPaintBg.setStyle(Paint.Style.STROKE);

        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setColor(Color.RED);
        mPaint.setStyle(Paint.Style.FILL);

        mPaintLine = new Paint();
        mPaintLine.setAntiAlias(true);
        mPaintLine.setStyle(Paint.Style.FILL);
        mPaintLine.setStrokeWidth(dip2px(mContext, 2));

        mPaintText = new Paint();
        mPaintText.setAntiAlias(true);
        mPaintText.setColor(Color.BLACK);
        mPaintText.setStyle(Paint.Style.STROKE);
        mPaintText.setTextSize(30);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        mDistanceHour = w / 5 - dip2px(mContext, 7);
        mDistanceMinute = mDistanceHour + dip2px(mContext, 18);
        mDistanceSecond = mDistanceHour + dip2px(mContext, 45);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.translate(getWidth() / 2, getHeight() / 2);
        drawClock(canvas);
        drawHour(canvas);
        drawMinute(canvas);
        drawSecond(canvas);

        /**
         * 繪制中心點(diǎn)
         */
        canvas.drawCircle(0, 0, 20, mPaint);
    }

    /**
     * 繪制時(shí)鐘基本的元素
     *
     * @param canvas
     */
    private void drawClock(Canvas canvas) {
        //繪制圓圈背景
        canvas.drawCircle(0, 0, (getWidth() - dip2px(mContext, 2)) / 2, mPaintBg);
        //繪制文字和小圓點(diǎn)
        for (int i = 0; i < 12; i++) {

            float r = getWidth() / 2 - offset;
            float deg = i * 30 + 30;
            float x = (float) (r * Math.sin(Math.PI * deg / 180));
            float y = (float) (r * Math.cos(Math.PI * deg / 180));

            canvas.drawCircle(x, -y, dip2px(mContext, 3), mPaint);

            //繪制進(jìn)度數(shù)字
            String text = (i + 1) + "";
            //獲取文字寬度
            float textWidth = mPaintText.measureText(text, 0, text.length());
            float dx = x - x / 10 - textWidth / 2;
            Paint.FontMetricsInt fontMetricsInt = mPaintText.getFontMetricsInt();
            float dy = (fontMetricsInt.bottom - fontMetricsInt.top) / 2 - fontMetricsInt.bottom;
            float baseLine = -(y - y / 10) + dy;
            canvas.drawText(text, dx, baseLine, mPaintText);
        }
    }


    /**
     * 繪制時(shí)針
     *
     * @param canvas
     */
    private void drawHour(Canvas canvas) {
        mPaintLine.setColor(Color.BLACK);
        /**
         * 找到時(shí)間和弧度的關(guān)系,先計(jì)算出總的時(shí)間加在一起是多少個(gè)小時(shí),
         * 然后根據(jù)小時(shí)數(shù)計(jì)算出在時(shí)鐘上需要繪制的角度是多少地啰,再求出坐標(biāo)進(jìn)行繪制
         */
        float hour = (float) mCurrentHour + (float) mCurrentMinute / 60 + (float) mCurrentSecond / 3600;
        float deg1 = hour * 30;
        Log.i(TAG, "度數(shù)deg1:" + hour);
        float x1 = (float) (mDistanceHour * Math.sin(Math.PI * deg1 / 180));
        float y1 = (float) (mDistanceHour * Math.cos(Math.PI * deg1 / 180));
        //canvas.drawCircle(x1, -y1, 10, mPaintLine);
        canvas.drawLine(0, 0, x1, -y1, mPaintLine);
    }


    /**
     * 繪制分針
     *
     * @param canvas
     */
    private void drawMinute(Canvas canvas) {
        mPaintLine.setColor(Color.BLACK);
        /**
         * 找到時(shí)間和弧度的關(guān)系
         */
        float minute = (float) mCurrentMinute + (float) mCurrentSecond / 60;
        float deg1 = minute * 6;
        Log.i(TAG, "===度數(shù)minute:" + minute + "===度數(shù)deg1:" + deg1);
        float x1 = (float) (mDistanceMinute * Math.sin(Math.PI * deg1 / 180));
        float y1 = (float) (mDistanceMinute * Math.cos(Math.PI * deg1 / 180));
        //canvas.drawCircle(x1, -y1, 10, mPaintLine);
        canvas.drawLine(0, 0, x1, -y1, mPaintLine);
    }

    /**
     * 繪制秒針
     *
     * @param canvas
     */
    private void drawSecond(Canvas canvas) {
        mPaintLine.setColor(Color.RED);
        /**
         * 找到時(shí)間和弧度的關(guān)系
         */
        float deg1 = mCurrentSecond * 6;
        Log.i(TAG, "===度數(shù)deg1:" + deg1);
        float x1 = (float) (mDistanceSecond * Math.sin(Math.PI * deg1 / 180));
        float y1 = (float) (mDistanceSecond * Math.cos(Math.PI * deg1 / 180));
        //canvas.drawCircle(x1, -y1, 10, mPaintLine);
        canvas.drawLine(0, 0, x1, -y1, mPaintLine);
    }


    /**
     * 開始
     */
    public void start() {
        stop();
        handler.postDelayed(runnable, TIME); //每隔TIMEms執(zhí)行
    }

    public void stop() {
        try {
            handler.removeCallbacks(runnable);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 獲取當(dāng)前時(shí)間
     */
    private void getCurrentTime() {
        Calendar now = Calendar.getInstance();
        mCurrentHour = now.get(Calendar.HOUR_OF_DAY);
        mCurrentMinute = now.get(Calendar.MINUTE);
        mCurrentSecond = now.get(Calendar.SECOND);
    }

    private long timeSeconds = 32353450;

    private void getDefaultTime() {
        timeSeconds++;
        mCurrentHour = (int) (timeSeconds / 60 / 60 % 60);
        mCurrentMinute = (int) (timeSeconds / 60 % 60);
        mCurrentSecond = (int) (timeSeconds % 60);
    }

    private TYPE_MODEL mTypeModel = TYPE_MODEL.DEFAULT_MODEL;

    public enum TYPE_MODEL {
        CURRENT_MODEL, DEFAULT_MODEL;
    }

    public void startSpeed() {
        mTypeModel = TYPE_MODEL.DEFAULT_MODEL;
        TIME = 1;
    }

    public void defaultModel() {
        TIME = 1000;
        mTypeModel = TYPE_MODEL.CURRENT_MODEL;
    }


    /**
     * 根據(jù)手機(jī)的分辨率從 dp 的單位 轉(zhuǎn)成為 px(像素)
     */
    public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

}

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private ClockView mClockView;

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

        mClockView = findViewById(R.id.view);
        mClockView.start();
    }

    /**
     * 加快版
     *
     * @param view
     */
    public void clickSpeed(View view) {
        mClockView.startSpeed();
    }

    /**
     * 當(dāng)前時(shí)間
     *
     * @param view
     */
    public void clickDefault(View view) {
        mClockView.defaultModel();
    }

}

OK愁拭,結(jié)束,打完收工亏吝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末岭埠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蔚鸥,更是在濱河造成了極大的恐慌惜论,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件止喷,死亡現(xiàn)場(chǎng)離奇詭異馆类,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)弹谁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門乾巧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來句喜,“玉大人,你說我怎么就攤上這事沟于】任福” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵社裆,是天一觀的道長(zhǎng)拙绊。 經(jīng)常有香客問我,道長(zhǎng)泳秀,這世上最難降的妖魔是什么标沪? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮嗜傅,結(jié)果婚禮上金句,老公的妹妹穿的比我還像新娘。我一直安慰自己吕嘀,他們只是感情好违寞,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著偶房,像睡著了一般趁曼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棕洋,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天挡闰,我揣著相機(jī)與錄音,去河邊找鬼掰盘。 笑死摄悯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的愧捕。 我是一名探鬼主播奢驯,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼次绘!你這毒婦竟也來了瘪阁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤邮偎,失蹤者是張志新(化名)和其女友劉穎管跺,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钢猛,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伙菜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了命迈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贩绕。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡火的,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出淑倾,到底是詐尸還是另有隱情馏鹤,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布娇哆,位于F島的核電站湃累,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏碍讨。R本人自食惡果不足惜治力,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望勃黍。 院中可真熱鬧宵统,春花似錦、人聲如沸覆获。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)弄息。三九已至痊班,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間摹量,已是汗流浹背涤伐。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荆永,地道東北人废亭。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓国章,卻偏偏與公主長(zhǎng)得像具钥,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子液兽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,089評(píng)論 1 32
  • 聲明:原創(chuàng)作品骂删,轉(zhuǎn)載請(qǐng)注明出處http://www.reibang.com/p/c2abd6226897 在上篇文...
    蛇發(fā)女妖閱讀 4,671評(píng)論 6 56
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 6,358評(píng)論 0 17
  • 文|席曦染 心緒飄搖者,亂入是非門柑晒。 不知從何時(shí)起欧瘪,身邊的人開始啰哩啰嗦地去議論別人的故事,或嗤笑或品評(píng)匙赞。一個(gè)個(gè)都...
    亂世皈一閱讀 553評(píng)論 8 5
  • 2018年5月4日 星期五 晴 今天下班回家佛掖,在單元門口碰到了一樓的老人妖碉,六七十歲,去國(guó)外待了...
    周李揚(yáng)閱讀 81評(píng)論 0 0