android分享2

public class Items {

    private  int img_id;

    private  String name;


    public int getImg_id() {

        return img_id;

    }


    public void setImg_id(int img_id) {

        this.img_id = img_id;

    }


    public String getName() {

        return name;

    }


    public void setName(String name) {

        this.name = name;

    }


    public String getExplain() {

        return explain;

    }


    public void setExplain(String explain) {

        this.explain = explain;

    }


    private  String explain;

}














二、

[if !supportLists]1. [endif]编写一个程序,可以显示实时时间,按返回时有弹出对话框提示是否退出程序,按确认后退出程序。

[if !supportLists]2. [endif]编写一个程序,按下按钮后间隔10秒自动弹出一个Toast显示当前时间,按返回时有弹出对话框提示是否退出程序,按确认后退出程序。


public class MainActivity extends Activity implements OnClickListener{

private AnalogClock clock;

private Button btn,btn2;

private DateFormat df;



public void onClick(View v) {

// TODO Auto-generated method stub

switch (v.getId()) {

case R.id.button1:

new AlertDialog.Builder(MainActivity.this)

.setTitle("退出提醒").setMessage("是否退出程序!")

.setNegativeButton("否", null)

.setPositiveButton("确定", new DialogInterface.OnClickListener() {  

                public void onClick(DialogInterface dialog, int whichButton) {  

                    finish();            }     }).show(); break;

case R.id.button2:

Date curDate =  new Date(System.currentTimeMillis());

df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dfs =  df.format(curDate);

new AlertDialog.Builder(MainActivity.this)

.setTitle("时间").setMessage(dfs)

.setPositiveButton("返回", new DialogInterface.OnClickListener() {  

                public void onClick(DialogInterface dialog, int whichButton) {  

                 new AlertDialog.Builder(MainActivity.this)

         .setTitle("退出提醒").setMessage("是否退出程序!")

         .setNegativeButton("否", null)

         .setPositiveButton("确定", new DialogInterface.OnClickListener() {  

                        public void onClick(DialogInterface dialog, int whichButton) {  

                            finish();  

                        }      }).show();  }   }).show(); break;

default:

break;}}



[if !supportLists]3. [endif]编写一个程序,实现一个登录界面,在登录界面中包含一个复选按钮“记住我”,选择时保存用户名和密码,否则不保存,打开登录界面时,如果有保存的用户名和密码,则将保存的用户名和密码显示到对应控件中。


public void onClick(View v) {

// TODO Auto-generated method stub

boolean chk = ck.isChecked();

if(chk){

namet.setText("用户名:"+String.valueOf(name.getText().toString()));

pwdt.setText("密码:"+String.valueOf(pwd.getText().toString()));

new AlertDialog.Builder(MainActivity.this)

.setMessage("登陆记住密码 ").setPositiveButton("确认 ", null).show();

}

else{

new AlertDialog.Builder(MainActivity.this)

.setMessage("登陆未记住密码").setPositiveButton("确认", null).show(); }
























[if !supportLists]4. [endif]编写一个程序,实现一个日记功能,将写好的日记保存到文件Diary中,点击浏览的时候查看日记内容。


public void onClick(View v) {

// TODO Auto-generated method stub

String neirong = et.getText().toString();

String dizi = "riji.text";

switch (v.getId()) {

case R.id.button1:

 FileOutputStream out = null;

try {

out = context.openFileOutput(dizi, Context.MODE_PRIVATE);

out.write(neirong.getBytes("UTF-8"));

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

finally{  

                try {  

                    out.close();  

                } catch (Exception e) {  

                    e.printStackTrace();  

                }  

            }

break;

         case R.id.button2:

             FileInputStream in = null;  

             ByteArrayOutputStream bout = null;  

             byte[]buf = new byte[1024];  

             bout = new ByteArrayOutputStream();  

             int length = 0;  

             try {  

                 in = context.openFileInput(dizi); //获得输入流  

                 while((length=in.read(buf))!=-1){  

                     bout.write(buf,0,length);  

                 }  

                 byte[] content = bout.toByteArray();  

                 tv.setText(new String(content,"UTF-8")); //设置文本框为读取的内容  

             } catch (Exception e) {  

                 e.printStackTrace();  

             }  

             tv.invalidate(); //刷新屏幕  

             try{  

                 in.close();  

                 bout.close();  

             }  

             catch(Exception e){}  


break;


[if !supportLists]5. [endif]编写一个程序,实现图片的浏览,向左滑动显示下一张图片,向右滑动显示上一张图片。


package com.example.img;

 

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

import android.widget.ImageView;

 

public class MainActivity extends Activity implements OnTouchListener{

   int caozuo = 0;

   float x1 = 0;

   float x2 = 0;

   public ImageView image;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        image = (ImageView)findViewById(R.id.imageView1);

    }

 

 

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }

 

 

 

 

 

 

 

@Override

public boolean onTouch(View v, MotionEvent event) {

    

if(event.getAction() == MotionEvent.ACTION_DOWN)

x1 = event.getX();

if(event.getAction() == MotionEvent.ACTION_UP){

x2 = event.getX();

if(x1-x2>=5){

caozuo =caozuo+1;

caozuo = caozuo%8;

if(caozuo==0)

{

caozuo ++;

}

image.setImageResource(R.drawable.a_1+caozuo);

}

if(x2-x1>=5){

caozuo =caozuo-1;

if(caozuo<=0){

caozuo = 7;

}

image.setImageResource(R.drawable.a_1+caozuo);

}

}

return false;

}

    

}//注意要添加照片进入文件中



[if !supportLists]6. [endif]编写一个程序,通过Handler和Thread或Runnable实现以10秒时间显示完进度条进度。


private ProgressBar progress;

private int max = 100,current = 0,step = 0;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        progress = (ProgressBar)findViewById(R.id.progressBar3);


        progress.setMax(max);

        progress.setProgress(0);

        step = max/10;


        new Thread(new Runnable() {

         int i =1;

@Override

public void run() {

// TODO Auto-generated method stub

try {

while (max!=progress.getProgress()) {

   Log.i("次数", i + "");  

                       i++;  

                       progress.setProgress(current + step);  

                       current = progress.getProgress();  

                       Thread.sleep(1000);

}

} catch (Exception e) {

// TODO: handle exception

}}

}).start();


    }


[if !supportLists]7. [endif]编写一个程序,通过AsyncTask实现以20秒时间显示完进度条进度。


package com.example.jindutiao20s;


import android.os.AsyncTask;

import android.os.Bundle;

. import android.app.Activity;. import android.view.Menu;

import android.widget.ProgressBar;

import android.widget.TextView;.

. public class MainActivity extends Activity {.

private ProgressBar myBar;

private TextView textView;

    @Override

.     protected void onCreate(Bundle savedInstanceState) {

.         super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);

        myBar = (ProgressBar)findViewById(R.id.progressBar1);

           textView = (TextView)findViewById(R.id.textView1);

           MyAsync my = new MyAsync();

        my.execute();

    }

    class MyAsync extends AsyncTask{


     int index = 0;

     @Override

.      protected void onPreExecute() {

.      // TODO Auto-generated method stub

     super.onPreExecute();

.      textView.setText("0%");

    }

protected Integer doInBackground(Void... params) {.             

try {

for(int i =0;i<=20;i++){

Thread.sleep(1000);

index ++;

publishProgress(index);

}

. } catch (Exception e) {

// TODO: handle exception

}

return null;

}

. @Override

. protected void onProgressUpdate(Integer... values) {

// TODO Auto-generated method stub

. super.onProgressUpdate(values);

. textView.setText(values[0]*5+"%");

. myBar.setProgress(index*5);

. }

.      @Override

.      protected void onPostExecute(Integer result) {

.      // TODO Auto-generated method stub

.      super.onPostExecute(result);

.      }

.     

.     

.     }

.

.

.     @Override.     public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;.     }


}

[if !supportLists]8. [endif]编写一个程序,手动绑定列表控件ListView,每条记录中包含图片,名称和描述。

两个布局布局1  listview布局二 对一个item进行布局 图片文字

三类主类调用该

package com.example.bangding;


import java.util.ArrayList;

import java.util.List;


import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.widget.ListView;


public class MainActivity extends Activity {


private List list;

private ListView listview;

    private  MyAdapter adapter;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        list = new ArrayList();

        listview = (ListView)findViewById(R.id.listView1);

        init();


    }

    private void init()

    {

        for (int i =1;i<=10;i++)

        {

         Items items = new Items();

            items.setImg_id(R.drawable.a_1+i);

items.setName("名字:" + i);

items.setExplain("解释: "+ i);

            list.add(items);

            adapter = new MyAdapter(MainActivity.this,list);

            listview.setAdapter(adapter);


        }

    }


    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }


}

Items类 声明   

package com.example.bangding;


public class Items {

   public int getImg_id() {

return img_id;

}

public void setImg_id(int img_id) {

this.img_id = img_id;

}

public String getExplain() {

return explain;

}

public void setExplain(String explain) {

this.explain = explain;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

   private int img_id;

   private String name;

   private  String explain;

}


Myadapter进行布局    线程

package com.example.bangding;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.TextView;

import java.util.List;

public class MyAdapter extends BaseAdapter {

    private List list ;

    private LayoutInflater inflater;

    public  MyAdapter(Context context,List list)

    {

        this.list = list;

        inflater = LayoutInflater.from(context);

    }

    @Override

    public int getCount() {

        return list.size();

    }


    @Override

    public Object getItem(int position) {

        return list.get(position);

    }


    @Override

    public long getItemId(int position) {

        return position;

    }


    @Override

    public View getView(int position, View convertView, ViewGroup parent) {

        View view;

        ViewHolder holder;


        if(convertView==null)

        {

            view = inflater.inflate(R.layout.myactivity,null);

            holder = new ViewHolder(view);

            view.setTag(holder);

        }

        else

        {

            view = convertView;

            holder = (ViewHolder) view.getTag();

        }

        Items items =  list.get(position);

        holder.img.setImageResource(items.getImg_id());

        holder.name.setText(items.getName());

        holder.explain.setText(items.getExplain());

        return view;

    }

    class  ViewHolder

    {

        private ImageView img;

        private TextView name;

        private  TextView explain;

        public ViewHolder(View view)

        {

            img = (ImageView)view.findViewById(R.id.imageView1);

            name = (TextView)view.findViewById(R.id.textView1);

            explain = (TextView)view.findViewById(R.id.textView2);

        }

    }

}



[if !supportLists]9. [endif]编写一个程序,通过使用Service来实现简单的播放器。

public class Myservice extends Service {

   private MediaPlayer player;

    private boolean ispaused = false;

    private  int position =0;

    @Override

public void onCreate() {//最一开始会执性这个方法 如果服务在启动之中就不会启动这个方法直接调用onStartCommand 方法

        super.onCreate();

Log.i("TAG","开始播放");

        player = MediaPlayer.create(this,R.raw.qiyueshang);}

public void onDestroy() {//停止服务

        super.onDestroy();

        if(player != null)

            player.stop();    }

public  void Play(int pos)//播放

    {

        if(player!=null)       {

            player.start();

Log.i("TAG","开始播放");

            player.seekTo(pos);      }   }

public void Pause()//暂停

    {

        if(player != null && player.isPlaying())   {

position = player.getCurrentPosition();//获取播放位置

player.pause();//暂停音乐

            ispaused = true;    }

        else if(ispaused)   {

            Play(position);   }  }

public  void Rest()//重放

{  if(player!=null)

            Play(0);  }

    @Override

public int onStartCommand(Intent intent, int flags, int startId) {//开始服务

        int flag = intent.getIntExtra("MSG",0);

        if(flag==1)

        {Play(0);}

        else if(flag==2)

        {Pause();}

        else if(flag==3)

        {Rest();}

        Log.i("MSG",flag+"");

        return super.onStartCommand(intent, flags, startId);

}

    public IBinder onBind(Intent intent) {

        return null;

    }

}

[if !supportLists]10. [endif]编写一个程序,实现在状态栏提示有新短消息,展开状态栏点击消息时弹出详细信息界面。

public class NotifaicationActivity extends AppCompatActivity  implements View.OnClickListener{

    private  Notification notification;

    private Button send_notifiaction,stop_notification;

    private   NotificationManager manager;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        send_notifiaction = (Button)findViewById(R.id.send_notification);

        stop_notification = (Button)findViewById(R.id.stop_notification);

        send_notifiaction.setOnClickListener(this);

        stop_notification.setOnClickListener(this);

//第一步首先获取Notification管理对象

        manager   = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

//第二步获取Notification.Builder对象

        Notification.Builder builder = new Notification.Builder(this);

//设置小图标

        builder.setSmallIcon(R.mipmap.ic_launcher);

//提示音 振动 闪烁都是默认

        builder.setDefaults(Notification.DEFAULT_ALL);

builder.setTicker("短信");

builder.setContentTitle("有短信");

builder.setContentText("短信来了");

        Intent intent = new Intent(this,NotifaicationActivity.class);

//生成PendingIntene对象

        PendingIntent pendingIntent = PendingIntent.getActivity(this,1,intent,0);

//设置跳转页面

        builder.setContentIntent(pendingIntent);

//获得Notifaication对象

        notification = builder.build();



    }


    @Override

    public void onClick(View v) {

        switch (v.getId())

        {

            case R.id.send_notification:

manager.notify(1,notification);//第一个时标识号 第二个是对象

                break;

            case R.id.stop_notification:

                manager.cancel(1);

                break;


        }

    }

}

[if !supportLists]11. [endif]编写一个程序,实现ListView显示好友列表信息,要求使用BaseAdapter。

public class MyAdapter extends BaseAdapter {

    private List list ;

    private LayoutInflater inflater;

    public  MyAdapter(Context context,List list)

    {

        this.list = list;

        inflater = LayoutInflater.from(context);

    }

    @Override

    public int getCount() {

        return list.size();

    }


    @Override

    public Object getItem(int position) {

        return list.get(position);

    }


    @Override

    public long getItemId(int position) {

        return position;

    }


    @Override

    public View getView(int position, View convertView, ViewGroup parent) {

        View view;

        ViewHolder holder;


        if(convertView==null)

        {

            view = inflater.inflate(R.layout.item,null);

            holder = new ViewHolder(view);

            view.setTag(holder);

        }

        else

        {

            view = convertView;

            holder = (ViewHolder) view.getTag();

        }

        Items items =  list.get(position);

        holder.img.setImageResource(items.getImg_id());

        holder.name.setText(items.getName());

        holder.explain.setText(items.getExplain());

        return view;

    }

    class  ViewHolder

    {

        private ImageView img;

        private TextView name;

        private  TextView explain;

        public ViewHolder(View view)

        {

            img = (ImageView)view.findViewById(R.id.imageView);

            name = (TextView)view.findViewById(R.id.name);

            explain = (TextView)view.findViewById(R.id.explain);

        }

    }

}


[if !supportLists]12. [endif]编写一个程序,实现点击一个按钮,打开一个新的Activity并传递“hello”,在新的Activity,接收传递过来的“hello”,将“hello”改成“hello world”,结束当前Activity并将需要修改后的值返回并关闭当前窗体。

public class IntentFirstActivity extends AppCompatActivity {

    private Button send;

    private EditText edit;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_intent_first);

        send = (Button)findViewById(R.id.send_message);

        edit = (EditText)findViewById(R.id.input);

        send.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Intent intent = new Intent(IntentFirstActivity.this,IntentSecondActivity.class);

                intent.putExtra("MSG",edit.getText().toString());

                startActivityForResult(intent,2);

            }

        });

    }

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

       edit.setText(data.getStringExtra("MSG"));

Toast.makeText(this,"收到新的值了",Toast.LENGTH_SHORT).show();

    }

}



  protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_intent_second);

        send = (Button)findViewById(R.id.transition_msg);

        Msg = (EditText)findViewById(R.id.return_msg);

        receive_msg = (TextView)findViewById(R.id.receive);

receive_msg.setText("收到的信息为:" + getIntent().getStringExtra("MSG"));

        send.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Intent intent = new Intent();

                intent.putExtra("MSG",Msg.getText().toString());

//将修改的结果返回给上一个intent

                setResult(1,intent);

                finish();

            }

        });

    }

}


三、

1.实现个人通讯录管理,主界面中包含添加按钮和ListView,能实现通讯录的添加和管理;所有通讯录信息通过ListView控件显示,长按ListView中的一项,出现以下功能选项:

呼叫、编辑联系人、删除联系人,分别实现这几个功能。

2.实现个人通讯录管理,主界面中包含添加按钮和ListView,能实现通讯录的添加和管理;所有通讯录信息通过ListView控件显示,长按ListView中的一项,出现以下功能选项:

复制、浏览联系人、删除联系人,分别实现这几个功能。

3.实现个人备忘录管理,主界面中包含添加按钮和ListView,能实现对备忘录的添加和管理;所有备忘录信息通过ListView控件显示,长按ListView中的一项,出现以下功能选项:

复制、编辑、删除,分别实现这几个功能。

4.实现个人备忘录管理,主界面中包含添加按钮和ListView,能实现对备忘录的添加和管理;所有备忘录信息通过ListView控件显示,长按ListView中的一项,出现以下功能选项:

复制、浏览、删除,分别实现这几个功能。

5.实现学生管理,登录界面,实现用户的登录,登录成功后,显示添加学生信息界面,学生信息包括学号、姓名、学院、专业和性别,输入完成后点击添加按钮添加到数据库中。要求:选择学院时专业发生相应的变化,性别采用单选按钮。

6.实现收货管理,包括以下功能:

1)用户登录功能;

2)货物管理功能,长按某条记录进行编辑和删除,或点击全部删除,清空所有收到的货物列表;

3)收货功能,货物信息:货物名称、件数、运费、目的地、收货人、电话等信息。

7.实现挂号预约系统,包括以下功能:

1)挂号预约,包括姓名、性别、年龄、地址、所挂科室等;

2)挂号预约管理,使用ListView实现,可删除或重新预约。

8.个人理财系统,包括以下功能:

1)支出录入:日期、金额、项目

2)收入录入:日期、金额、项目

3)支出收入列表,查询一个时间段的收入或支出情况并汇总。

9.日记系统,包括以下功能:

1)写日记,包括日期、天气、标题、内容等;

2)日记列表,根据条件查询日记,能实现对日记信息的显示,点击一条日记信息,显示日记详细内容,长按每条记录,能弹出对日记信息的修改、删除。

10.作业系统,包括以下功能:

1)记录作业,包括日期、作业类型(语文或数学等)、作业内容

2)显示作业列表,点击某项作业,转到作业详细信息界面,在该界面,可设置作业已完成、未做、不会等标识。

11.考勤系统,包括以下功能:

1)记录考勤,包括日期,年级,班级,总人数,旷课人数,请假人数;

2)记录旷课人具体信息,包括日期,年级,班级,旷课人姓名

3)显示考勤列表

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,009评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,808评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,891评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,283评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,285评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,409评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,809评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,487评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,680评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,499评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,548评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,268评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,815评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,872评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,102评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,683评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,253评论 2 341

推荐阅读更多精彩内容