zoukankan      html  css  js  c++  java
  • 机智的图灵机器人

    机智的图灵机器人

    主启动页面

    VideoListActivity.java

    package com.wangdeqiang.www.machine;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    import android.support.annotation.Nullable;
    import android.util.Log;
    import android.view.MotionEvent;
    import android.view.Window;
    
    /**
     * Created by Deligence on 2017/5/21.
     * @author 王德强
     * 功能:页面加载显示
     */
    
    class VideoListActivity extends Activity{
        private boolean isStartVideoList = false; //判断是否启动标志
        private Handler handler = new Handler(); 
        @Override
        protected void onCreate( Bundle savedInstanceState) {         //去除标题栏
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            super.onCreate(savedInstanceState);
            setContentView(R.layout.videolist_activity);
            //启动线程 让里面的方法运行2秒后关闭
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    startVideList();//启动方法
                }
            }, 2000);
        }
    
        private void startVideList() {
    
            if(!isStartVideoList){//判断是否第一次运行
                isStartVideoList = true;
                Intent intent = new Intent(this,MainActivity.class);//转到MainActivity页面
                startActivity(intent);
                //关闭当前的启动页面
                finish();
            }
        }
        @Override
        public boolean onTouchEvent(MotionEvent event) {
        //当触摸屏幕的时候 就会立马进入这个方法
            startVideList();
            return super.onTouchEvent(event);
        }
    
        @Override
        protected void onDestroy() {
            //把所有的消息和回调移除
            handler.removeCallbacksAndMessages(null);
            super.onDestroy();
        }
    }
    

    布局文件
    videolist_activity.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/beijing"
        >
        <ImageView
            android:id="@+id/iv_splash_icon"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_centerInParent="true"
            android:src="@mipmap/robot1" />
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/iv_splash_icon"
            android:layout_centerInParent="true"
            android:gravity="center_vertical"
            android:orientation="horizontal">
    
            <ProgressBar
                android:layout_width="30dp"
                android:layout_height="30dp" />
    
            <TextView
                android:layout_marginLeft="5dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:text="程序正在玩命加载中..."
                android:textColor="#ffffff"
                android:textSize="18sp" />
        </LinearLayout>
    
    
    </RelativeLayout>

    界面如图所示
    这里写图片描述

    MainActivity.java代码

    package com.wangdeqiang.www.machine;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.View;
    import android.view.Window;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ListView;
    
    import org.json.JSONObject;
    
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    /**
    * @author 王德强
    * @功能:图灵机器人数据收集与回复
    */
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener, HttpGetData {
    
        private HttpData httpData;
        //创建List集合,存放数据
        private List<ListData> list;
        private ListView lv;
        private Button send_btn;
        private EditText sendtext;
        private String content_str;
        private AdapterText adapter;
        private String [] welcomeArray; //界面欢迎语数组
        //显示时间
        private double currenttime,oldTime=0;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {        //消除页面标题
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
        }
    
    //初始化
    private void initView(){
    //实例化集合
            list = new ArrayList<ListData>();
            lv = (ListView) findViewById(R.id.lv);
            send_btn= (Button) findViewById(R.id.send_btn);
            sendtext = (EditText) findViewById(R.id.senText);
            send_btn.setOnClickListener(this);//设置点击时间
            adapter=new AdapterText(list,this);
            lv.setAdapter(adapter);
            ListData listData=null;
            listData=new ListData(getRandomWelcomeTips(),listData.receiver,getTime()); 
            list.add(listData);
        }
    
        @Override
        public void onClick(View v) {
            getTime();
            content_str=sendtext.getText().toString();
            //每次发送完数据都设为空
            sendtext.setText("");
            //解决数据不能有空格 回车 问题
            String dropk=content_str.replace(" ","");
            String droph=dropk.replace("
    ","");
            ListData listData = null;
            listData = new ListData(content_str,listData.send,getTime());
            Log.i("Tag","sfds"+listData);
            list.add(listData);
            //当数据过多的时候,移除数据
            if(list.size()>30){
                for(int i=0;i<list.size();i++){
                    list.remove(i);
                }
            }
            adapter.notifyDataSetChanged();
            //异步请求对象进行实例化
            //第一个参数传递url,第二个数据传递this
            httpData = (HttpData) new HttpData("http://www.tuling123.com/openapi/api?key=[图灵机器人API](www.tuling123.com)&info="+droph,this).execute();
    
    
        }
       //功能:将数据传递给其他页面进行使用
     //回调的方式创建这个接口
        public void getDataUrl(String data) {
        //调用解析的方法
            parseText(data);
        }
    //获得JSON中的键值对数据,解析数据
        public void parseText(String str){
            try {
            //传递JSON数据
                JSONObject jb=new JSONObject(str);
                /*Log.i("Tag",jb.getString("code"));
                Log.i("Tag",jb.getString("text"))*/
                //对象实例化
                ListData listData = null;
                listData=new ListData(jb.getString("text"),listData.receiver,getTime());
                //向集合中添加数据
                list.add(listData);
                adapter.notifyDataSetChanged();
            } catch (Exception e) {
                // TODO: handle exception
            }
        }
    //获得随机的见面欢迎语
    public String getRandomWelcomeTips() {
            String welcome_tips=null;
            welcomeArray=this.getResources().getStringArray(R.array.welcome_tips);
            //获取ID
            int index = (int)(Math.random()*(welcomeArray.length-1));
            welcome_tips=welcomeArray[index];
            return welcome_tips;
        }
        //获得现在时间
    public String getTime() {
            currenttime=System.currentTimeMillis();
            //创建显示时间的格式
            SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
            Date curdata=new Date();
            //把获取的时间给它
            String str = format.format(curdata);
            //判断是否超过5秒
            if (currenttime-oldTime>=5*60*1000){
                oldTime=currenttime;
                return str;
            }else {
                return "";
            }
    
        }
    
    }
    

    activity_main.xml

    <?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"
        android:background="@drawable/beijing2"
        >
    
        <ListView
            android:id="@+id/lv"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:divider="@null"
            android:listSelector="@android:color/transparent"
            android:transcriptMode="alwaysScroll"></ListView>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
            <EditText
                android:id="@+id/senText"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@drawable/bg_toast"
                />
    
            <Button
                android:id="@+id/send_btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/send" />
    
        </LinearLayout>
    
    </LinearLayout>

    运行界面如图所示
    这里写图片描述

    HttpData.java

    package com.wangdeqiang.www.machine;
    
    import android.os.AsyncTask;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    /**
     * Created by Deligence on 2017/5/21.
     * @author 王德强
     * 功能:异步数据请求
     */
    
    public class HttpData extends AsyncTask<String,Void,String>{
    //通过HttpClient请求
        private HttpClient httpClient; 
        //请求方式
        private HttpGet httpGet;
        private String url;
        //获取请求的返回
        private HttpResponse httpResponse;
        private HttpEntity httpEntity;
        private InputStream in;
        private HttpGetData listener;
        //指定一个构造方法请求url
        public HttpData(String url, HttpGetData listener) {
            this.url = url;
            this.listener = listener;
        }
    
        @Override
        protected String doInBackground(String... params) {
        //实例化客户端
            httpClient = new DefaultHttpClient();
            //Get方式进行请求,传递一个具体请求的url
            httpGet = new HttpGet(url);
            try {
            //通过客户端进行发送
                httpResponse = httpClient.execute(httpGet);
    /*通过Response获得数据 */           httpEntity=httpResponse.getEntity();
        //转化成流文件
      in=httpEntity.getContent();
      BufferedReader br = new BufferedReader(new    InputStreamReader(in));
                String line=null;
                //储存所有的数据
                StringBuffer sb = new StringBuffer();
                while ((line=br.readLine())!=null){
                    sb.append(line);
                }
                return sb.toString();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
    /*添加一个网络权限*/
        }
    //重载这个方法,通过这个方法获得数据
        @Override
        protected void onPostExecute(String s) {
        //返回数据
            listener.getDataUrl(s);
            super.onPostExecute(s);
        }
    
    }
    

    HttpGetData.interface

    package com.wangdeqiang.www.machine;
    
    /**
     * Created by Deligence on 2017/5/21.
     * @author 王德强
     */
    
    public interface HttpGetData {
        void getDataUrl(String Data);
    }
    

    ListData.java

    package com.wangdeqiang.www.machine;
    
    /**
     * Created by Deligence on 2017/5/21.
     * @author 王德强
     * 功能:数据封装
     */
    
    public class ListData {
        private String content;
        public static final int send = 1;
        public static final int receiver = 2;
        private int flag;
        private String time;
    //创建构造方法
        public ListData(String content, int flag, String time) {
            this.content = content;
            this.flag = flag;
            this.time = time;
        }
    //创建Getter和Setter
        public String getContent() {
            return content;
        }
    
        public void setContent(String content) {
            this.content = content;
        }
    
        public static int getSend() {
            return send;
        }
    
        public static int getReceiver() {
            return receiver;
        }
    
        public int getFlag() {
            return flag;
        }
    
        public void setFlag(int flag) {
            this.flag = flag;
        }
    
        public String getTime() {
            return time;
        }
    
        public void setTime(String time) {
            this.time = time;
        }
    }
    

    AdapterText.java

    package com.wangdeqiang.www.machine;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.RelativeLayout;
    import android.widget.TextView;
    
    import java.util.List;
    
    /**
     * Created by Deligence on 2017/5/21.
     * @author 王德强
     * 功能:自定义ListView的适配器
     */
    
    public class AdapterText extends BaseAdapter{
        private List<ListData> lists;
        private Context mContext;
        private RelativeLayout layout;
    
        public AdapterText(List<ListData> lists, Context mContext) {
            this.lists = lists;
            this.mContext = mContext;
        }
    
        @Override
        public int getCount() {
            return lists.size();
        }
    
        @Override
        public Object getItem(int position) {
            return lists.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater =LayoutInflater.from(mContext);
            if(lists.get(position).getFlag()==ListData.receiver){
                layout= (RelativeLayout) inflater.inflate(R.layout.leftitem,null);
            }
            if (lists.get(position).getFlag()==ListData.send)
            {
                layout = (RelativeLayout) inflater.inflate(R.layout.rightitem,null);
            }
            TextView tv = (TextView) layout.findViewById(R.id.tv);
            TextView time = (TextView) layout.findViewById(R.id.time);
            time.setText(lists.get(position).getTime());
            tv.setText(lists.get(position).getContent());
    
            return layout;
        }
    }
    

    leftitem.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:id="@+id/time"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal" />
    
        <TextView
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/time"
            android:layout_marginLeft="45dp"
            android:layout_marginTop="55dp"
            android:gravity="center"
            android:background="@drawable/aio_friend_bg_nor_11"
            />
    
        <com.makeramen.roundedimageview.RoundedImageView xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/iv"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:gravity="center_horizontal"
            android:src="@drawable/picture1"
            app:riv_border_color="#333333"
            app:riv_border_width="3dip"
            app:riv_corner_radius="10dip"
            app:riv_mutate_background="true"
            app:riv_oval="true" />
    </RelativeLayout>

    运行界面如图所示
    这里写图片描述

    rightitem.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:id="@+id/time"
    
            />
    
        <TextView
            android:layout_below="@id/iv"
            android:layout_marginLeft="55dp"
            android:layout_toLeftOf="@id/iv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv"
            android:background="@drawable/aio_user_bg_nor_11"
            android:gravity="center"
            />
    
        <com.makeramen.roundedimageview.RoundedImageView
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/iv"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/time"
            app:riv_border_color="#333333"
            app:riv_border_width="3dip"
            app:riv_corner_radius="10dip"
            app:riv_mutate_background="true"
            android:src="@drawable/pic1"
            app:riv_oval="true" />
    
    </RelativeLayout>

    运行界面如图所示
    这里写图片描述
    AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.wangdeqiang.www.machine">
        <!-- 打开网络连接 -->
        <uses-permission android:name="android.permission.INTERNET" />
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/robot"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".VideoListActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity android:name=".MainActivity"/>
        </application>
    
    </manifest>
  • 相关阅读:
    MIB Browser使用方法
    RestTemplate调用https接口跳过证书验证
    Looper&Handler
    Thread类以及常见得同步类
    Android 关键类(RefBase,sp, wp)
    JNI
    binder
    struct enum union区别
    Q_PROPERTY
    linux 命令
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11782020.html
Copyright © 2011-2022 走看看