Android开发 模仿京东登录注册

需要导入的依赖:
compile 'com.squareup.okhttp3:okhttp:3.3.0'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'

compile'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

添加的权限:

<uses-permissionandroid:name="android.permission.INTERNET"/>

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<---------------- model层 ---------------->
------------- Callback -------------------------
package com.example.earl.baipenggui1511j20170108.model;

public interface Callback {
    void onFailure(String error);
    void onSuccess(String json);
}

------------- Contanst -------------------------
package com.example.earl.baipenggui1511j20170108.model;

public class Contanst {
    public static final String login_url="https://www.zhaoapi.cn/user/login ";
    public static final String register_url="https://www.zhaoapi.cn/user/reg ";
    public static final String data_url="https://www.zhaoapi.cn/quarter/getJokes";
}


------------- GoodsBean -------------------------
package com.example.earl.baipenggui1511j20170108.model;

import java.util.List;

/**
 * Created by Earl on 2018/1/8.
 */

public class GoodsBean {

    /**
     * msg : 获取段子列表成功
     * code : 0
     * data : [{"commentNum":null,"content":"好好学习","createTime":"2018-01-06T08:41:13","imgUrls":null,"jid":1009,"praiseNum":null,"shareNum":null,"uid":221,"user":{"age":null,"fans":"null","follow":false,"icon":null,"nickname":"张倩","praiseNum":"null"}},{"commentNum":null,"content":"1111","createTime":"2017-12-31T14:48:44","imgUrls":null,"jid":1008,"praiseNum":null,"shareNum":null,"uid":10622,"user":{"age":null,"fans":"null","follow":false,"icon":null,"nickname":null,"praiseNum":"null"}},{"commentNum":null,"content":"哈哈","createTime":"2017-12-30T11:39:31","imgUrls":"https://www.zhaoapi.cn/images/quarter/15146051717291514603586149.jpg","jid":1007,"praiseNum":null,"shareNum":null,"uid":92,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/151425855261420171226112227.jpg","nickname":"jinlin","praiseNum":"null"}},{"commentNum":null,"content":"我是傻逼范","createTime":"2017-12-29T17:00:43","imgUrls":"https://www.zhaoapi.cn/images/quarter/1514538043999com_bignox_app_store_hd_96x96.png","jid":1006,"praiseNum":null,"shareNum":null,"uid":160,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514537137140head.jpg","nickname":"范新华","praiseNum":"null"}},{"commentNum":null,"content":"efew","createTime":"2017-12-29T16:46:20","imgUrls":"https://www.zhaoapi.cn/images/quarter/1514537180484com_baway_liuhao1506b20170425_96x96.png","jid":1005,"praiseNum":null,"shareNum":null,"uid":160,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514537137140head.jpg","nickname":"范新华","praiseNum":"null"}},{"commentNum":null,"content":"efew","createTime":"2017-12-29T16:46:20","imgUrls":"https://www.zhaoapi.cn/images/quarter/1514537180437com_baway_liuhao1506b20170425_96x96.png","jid":1004,"praiseNum":null,"shareNum":null,"uid":160,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514537137140head.jpg","nickname":"范新华","praiseNum":"null"}},{"commentNum":null,"content":"6","createTime":"2017-12-29T09:45:34","imgUrls":"https://www.zhaoapi.cn/images/quarter/151451193490020171227-224704_clipboard.png|https://www.zhaoapi.cn/images/quarter/1514511934900big-thumbnail-1514386032712-clipboard.png","jid":1003,"praiseNum":null,"shareNum":null,"uid":169,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514355656170cropped_1514355656472.jpg","nickname":"不熟","praiseNum":"null"}},{"commentNum":null,"content":"你好世界","createTime":"2017-12-27T10:49:42","imgUrls":"https://www.zhaoapi.cn/images/quarter/1514342982944com_bignox_app_store_hd_96x96.png","jid":992,"praiseNum":null,"shareNum":null,"uid":106,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514536407781head.jpg","nickname":"刘浩","praiseNum":"null"}},{"commentNum":null,"content":"你好世界","createTime":"2017-12-27T10:45:40","imgUrls":"https://www.zhaoapi.cn/images/quarter/1514342740010com_bignox_app_store_hd_96x96.png|https://www.zhaoapi.cn/images/quarter/1514342740010com_example_ratingbar_96x96.png","jid":991,"praiseNum":null,"shareNum":null,"uid":106,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514536407781head.jpg","nickname":"刘浩","praiseNum":"null"}},{"commentNum":null,"content":"你好","createTime":"2017-12-26T11:27:12","imgUrls":"https://www.zhaoapi.cn/images/quarter/15142588320651514080581141.jpeg|https://www.zhaoapi.cn/images/quarter/15142588320651514080575785.jpeg","jid":990,"praiseNum":null,"shareNum":null,"uid":195,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514258580051mo.jpg","nickname":"nnnnnn","praiseNum":"null"}}]
     */

    private String msg;
    private String code;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        /**
         * commentNum : null
         * content : 好好学习
         * createTime : 2018-01-06T08:41:13
         * imgUrls : null
         * jid : 1009
         * praiseNum : null
         * shareNum : null
         * uid : 221
         * user : {"age":null,"fans":"null","follow":false,"icon":null,"nickname":"张倩","praiseNum":"null"}
         */

        private Object commentNum;
        private String content;
        private String createTime;
        private Object imgUrls;
        private int jid;
        private Object praiseNum;
        private Object shareNum;
        private int uid;
        private UserBean user;

        public Object getCommentNum() {
            return commentNum;
        }

        public void setCommentNum(Object commentNum) {
            this.commentNum = commentNum;
        }

        public String getContent() {
            return content;
        }

        public void setContent(String content) {
            this.content = content;
        }

        public String getCreateTime() {
            return createTime;
        }

        public void setCreateTime(String createTime) {
            this.createTime = createTime;
        }

        public Object getImgUrls() {
            return imgUrls;
        }

        public void setImgUrls(Object imgUrls) {
            this.imgUrls = imgUrls;
        }

        public int getJid() {
            return jid;
        }

        public void setJid(int jid) {
            this.jid = jid;
        }

        public Object getPraiseNum() {
            return praiseNum;
        }

        public void setPraiseNum(Object praiseNum) {
            this.praiseNum = praiseNum;
        }

        public Object getShareNum() {
            return shareNum;
        }

        public void setShareNum(Object shareNum) {
            this.shareNum = shareNum;
        }

        public int getUid() {
            return uid;
        }

        public void setUid(int uid) {
            this.uid = uid;
        }

        public UserBean getUser() {
            return user;
        }

        public void setUser(UserBean user) {
            this.user = user;
        }

        public static class UserBean {
            /**
             * age : null
             * fans : null
             * follow : false
             * icon : null
             * nickname : 张倩
             * praiseNum : null
             */

            private Object age;
            private String fans;
            private boolean follow;
            private Object icon;
            private String nickname;
            private String praiseNum;

            public Object getAge() {
                return age;
            }

            public void setAge(Object age) {
                this.age = age;
            }

            public String getFans() {
                return fans;
            }

            public void setFans(String fans) {
                this.fans = fans;
            }

            public boolean isFollow() {
                return follow;
            }

            public void setFollow(boolean follow) {
                this.follow = follow;
            }

            public Object getIcon() {
                return icon;
            }

            public void setIcon(Object icon) {
                this.icon = icon;
            }

            public String getNickname() {
                return nickname;
            }

            public void setNickname(String nickname) {
                this.nickname = nickname;
            }

            public String getPraiseNum() {
                return praiseNum;
            }

            public void setPraiseNum(String praiseNum) {
                this.praiseNum = praiseNum;
            }
        }
    }
}

------------- LoginModel -------------------------
package com.example.earl.baipenggui1511j20170108.model;
import android.text.TextUtils;

import com.example.earl.baipenggui1511j20170108.presenter.Presenterinterface;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by Earl on 2018/1/8.
 */

public class LoginModel {
    public void vertily(String phone,String pass, int i, final Presenterinterface presenterinterface){
        if(TextUtils.isEmpty(phone)){
            presenterinterface.onFailure("手机号不能为空");
            return;
        }
        boolean mobile=isMobile(phone);
        if(!mobile){
            presenterinterface.onFailure("手机格式不对");
            return;
        }
        if (TextUtils.isEmpty(pass)){
            presenterinterface.onFailure("密码不能为空");
            return;
        }
        if (pass.length()<6){
            presenterinterface.onFailure("密码不能小于六位数");
            return;
        }
        Map<String ,String> map=new HashMap<>();
        map.put("mobile",phone);
        map.put("password",pass);
        if(i==1){
            OkHttp.getInsert().doGet(Contanst.login_url, map, new Callback() {
                @Override
                public void onFailure(String error) {
                    presenterinterface.onFailure(error);
                }

                @Override
                public void onSuccess(String json) {
                    try {
                        JSONObject jsonObject=new JSONObject(json);
                        String code=jsonObject.optString("code");
                        if(code.equals("0")){
                            presenterinterface.onSuccess("成功");
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            });
        }else{
            OkHttp.getInsert().doGet(Contanst.register_url, map, new Callback() {
                @Override
                public void onFailure(String error) {
                    presenterinterface.onFailure(error);
                }

                @Override
                public void onSuccess(String json) {
                    try {
                        JSONObject jsonObject=new JSONObject(json);
                        String code=jsonObject.optString("code");
                        if (code.equals("0")){
                            presenterinterface.onSuccess("成功");

                        }else{
                            presenterinterface.onSuccess("已经注册");
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
    private boolean isMobile(String number) {
        String num="[1][358]\\d{9}";
        if(TextUtils.isEmpty(number)){
            return false;
        }else{
            return number.matches(num);
        }
    }
}


------------- OkHttp -------------------------
package com.example.earl.baipenggui1511j20170108.model;
import android.os.Handler;

import java.io.IOException;
import java.util.Map;

import okhttp3.Call;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

/**
 * Created by Earl on 2018/1/8.
 */

public class OkHttp {
    private Handler handler=new Handler();
    private String str;
    private static OkHttp okhttp=null;
    public  OkHttp(){

    }
    public static OkHttp getInsert(){
        if (okhttp==null){
            synchronized (OkHttp.class){
                okhttp=new OkHttp();
            }
        }
        return okhttp;
    }
    public void doGet(String path, Map<String,String> map, final Callback callback){
        StringBuffer sb=null;
        for (String key:map.keySet()){
            if (sb==null){
                sb=new StringBuffer();
                sb.append("?");
            }else{
                sb.append("&");
            }
            sb.append(key).append("=").append(map.get(key));
        }
        OkHttpClient okHttpClient=new OkHttpClient();
        Request request=new Request.Builder().url(path+sb.toString()).get().build();
        Call call=okHttpClient.newCall(request);
        call.enqueue(new okhttp3.Callback(){
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callback.onFailure(e.getMessage());
                    }
                });
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                str=response.body().string();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callback.onSuccess(str);
                    }
                });
            }
        });
    }
    public static void doPost(String path,Map<String,String> map,final Handler.Callback callback){
        //构建请求参数
        FormBody.Builder bodyBuilder=new FormBody.Builder();
        for (String key:map.keySet()){
            bodyBuilder.add(key,map.get(key));
        }
        Request request=new Request.Builder()
                .post(bodyBuilder.build())
                .url(path)
                .build();
        OkHttpClient okHttpClient = new OkHttpClient();
    }
}

<----------------view层---------------->

-------------ConentActivity-------------------------

package com.example.earl.baipenggui1511j20170108.view;

import android.media.Image;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.earl.baipenggui1511j20170108.R;
import com.example.earl.baipenggui1511j20170108.model.GoodsBean;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class ConentActivity extends AppCompatActivity  {

    private PullToRefreshListView plv;
    private List<GoodsBean.DataBean> list=new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_conent);
        //初始化组件
        initViews();
        //网络请求
        getData();
    }

    private void initViews() {
        plv = findViewById(R.id.plv);
    }

    public void getData() {
        new MyTesk().execute("https://www.zhaoapi.cn/quarter/getJokes?source=android&appVersion=100&page=1");
    }

    private class MyTesk extends AsyncTask<String,Void,String>{

        private StringBuilder stringBuilder;

        @Override
        protected String doInBackground(String... strings) {
            //网络请求
            try {
                URL url = new URL(strings[0]);
                HttpURLConnection connection=(HttpURLConnection)url.openConnection();
                connection.setRequestMethod("GET");
                connection.setConnectTimeout(5000);
                connection.setReadTimeout(5000);

                int responseCode = connection.getResponseCode();
                Log.e("TAG_code",responseCode+"-----------");
                if (responseCode==200){
                    InputStream inputStream = connection.getInputStream();
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                    stringBuilder = new StringBuilder();
                    String s="";
                    //拼接
                    while ((s=bufferedReader.readLine())!=null){
                           stringBuilder.append(s);
                    }
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return stringBuilder.toString();
        }

        //解析数据
        @Override
        protected void onPostExecute(String s) {
            Gson gson = new Gson();
            GoodsBean goodsBean = gson.fromJson(s, GoodsBean.class);
            List<GoodsBean.DataBean> data = goodsBean.getData();
            Log.e("TAG_data",data+"???????????");
            list.addAll(data);
            MyAdapter myAdapter = new MyAdapter(list,ConentActivity.this);
            plv.setAdapter(myAdapter);
        }
    }
}

-------------LoginView-------------------------

package com.example.earl.baipenggui1511j20170108.view;

public interface LoginView {
    void onFailure(String error);
    void onSuccess(String str);
}

-------------MainActivity-------------------------

package com.example.earl.baipenggui1511j20170108.view;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.example.earl.baipenggui1511j20170108.R;
import com.example.earl.baipenggui1511j20170108.presenter.Precenter;

public class MainActivity extends AppCompatActivity implements LoginView{

    private EditText mobile;
    private EditText password;
    private Button login;
    private Button register;
    private Precenter precenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化控件
        initView();
        precenter = new Precenter(this);

    }

    private void initView() {

        mobile = findViewById(R.id.mobile);
        password = findViewById(R.id.password);
        login = findViewById(R.id.login);
        register = findViewById(R.id.register);

    }
    public void login(View v){
        precenter.vertify(mobile.getText().toString(),password.getText().toString(),1);
    }
    public void register(View v){
        startActivity(new Intent(MainActivity.this,RegActivity.class));
    }

    public void onFailure(String error) {
        Toast.makeText(MainActivity.this,error, Toast.LENGTH_SHORT).show();
    }


    public void onSuccess(String str) {
        Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(MainActivity.this,ConentActivity.class);
        startActivity(intent);
    }
}

-------------Mapp-------------------------

package com.example.earl.baipenggui1511j20170108.view;

import android.app.Application;
import android.graphics.Bitmap;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

import java.io.File;

/**
 * Created by Earl on 2018/1/8.
 */

public class Mapp extends Application {
    public void onCreate() {
        super.onCreate();
        File cacheFile=getExternalCacheDir();
        ImageLoaderConfiguration config=new ImageLoaderConfiguration.Builder(this)
                .memoryCacheExtraOptions(480, 800)//缓存图片最大的长和宽
                .threadPoolSize(2)//线程池的数量
                .threadPriority(4)
                .memoryCacheSize(2*1024*1024)//设置内存缓存区大小
                .diskCacheSize(20*1024*1024)//设置sd卡缓存区大小

                .writeDebugLogs()//打印日志内容
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理
                .build();
        ImageLoader.getInstance().init(config);

    }
    public static DisplayImageOptions getImageOptions(){

        DisplayImageOptions optionsoptions=new DisplayImageOptions.Builder()
                .cacheInMemory(true)//使用内存缓存
                .cacheOnDisk(true)//使用磁盘缓存
                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片格式
                .displayer(new RoundedBitmapDisplayer(90))//是否设置为圆角,弧度为多少
                .build();

        return optionsoptions;

    }

}

-------------MyAdapter-------------------------

package com.example.earl.baipenggui1511j20170108.view;

import android.content.Context;
import android.media.Image;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.earl.baipenggui1511j20170108.R;
import com.example.earl.baipenggui1511j20170108.model.GoodsBean;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;

/**
 * Created by Earl on 2018/1/8.
 */

public class MyAdapter extends BaseAdapter{
    private List<GoodsBean.DataBean> list;
    private Context context;
    private ViewHolder vh;

    public MyAdapter(List<GoodsBean.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int i) {
        return list.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View converView, ViewGroup viewGroup) {
        if (converView==null){
            vh = new ViewHolder();
            converView=View.inflate(context, R.layout.lv_item,null);
            vh.u_pic=converView.findViewById(R.id.u_pic);
            vh.uname=converView.findViewById(R.id.tv_uname);
            vh.content=converView.findViewById(R.id.content);
            vh.big_pic=converView.findViewById(R.id.big_pic);
            converView.setTag(vh);
        }else {
            vh=(ViewHolder)converView.getTag();
        }
        ImageLoader.getInstance().displayImage((String) list.get(i).getImgUrls(),vh.big_pic);
        vh.uname.setText(list.get(i).getUser().getNickname());
        vh.content.setText(list.get(i).getContent());
        ImageLoader.getInstance().displayImage((String) list.get(i).getUser().getIcon(),vh.u_pic,Mapp.getImageOptions());

        return converView;
    }

    private class ViewHolder {

        public ImageView u_pic;
        public TextView uname;
        public TextView content;
        public ImageView big_pic;
    }
}

-------------MyImagloder-------------------------

package com.example.earl.baipenggui1511j20170108.view;


import android.content.Context;
import android.widget.ImageView;

import com.nostra13.universalimageloader.core.ImageLoader;


public class MyImagloder extends ImageLoader {

   public void displayImage(Context context, Object path, ImageView imageView) {
        //得到ImageLoader的实例
        com.nostra13.universalimageloader.core.ImageLoader instance = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
        //通过ImageLoader设置图片
        instance.displayImage((String) path, imageView);
    }
}
-------------RegActivity-------------------------
package com.example.earl.baipenggui1511j20170108.view;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.example.earl.baipenggui1511j20170108.R;
import com.example.earl.baipenggui1511j20170108.presenter.Precenter;

public class RegActivity extends AppCompatActivity implements LoginView{

    private EditText phone;
    private EditText pass;
    private Precenter precenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_reg);
        phone = (EditText) findViewById(R.id.mobile2);
        pass = (EditText) findViewById(R.id.password2);
        precenter = new Precenter(this);
    }
    public void register_btn(View view){
        precenter.vertify(phone.getText().toString(),pass.getText().toString(),2);
    }

    @Override
    public void onFailure(String error) {
        Toast.makeText(RegActivity.this,error, Toast.LENGTH_LONG).show();
    }

    @Override
    public void onSuccess(String str) {
        Toast.makeText(RegActivity.this,str,Toast.LENGTH_LONG).show();
        if(str.equals("成功")){
            finish();
        }
    }

}
<----------------presenter层---------------->
-------------Precenter-------------------------

package com.example.earl.baipenggui1511j20170108.presenter;

import com.example.earl.baipenggui1511j20170108.model.LoginModel;
import com.example.earl.baipenggui1511j20170108.view.LoginView;

/**
 * Created by Earl on 2018/1/8.
 */

public class Precenter implements Presenterinterface{
    private LoginView loginView;
    private static LoginModel loginModel;

    public Precenter(LoginView loginView){
        this.loginView=loginView;
        loginModel=new LoginModel();
    }
    public void vertify(String phone, String pass, int i){
        loginModel.vertily(phone,pass,i,this);
    }
    @Override
    public void onFailure(String error) {
        loginView.onFailure(error);
    }

    @Override
    public void onSuccess(String string) {
        loginView.onSuccess(string);
    }
}
-------------Presenterinterface-------------------------
package com.example.earl.baipenggui1511j20170108.presenter;


public interface Presenterinterface {

    void onFailure(String error);
    void onSuccess(String string);
}
-------------------activity_conent.xml----------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.earl.baipenggui1511j20170108.view.ConentActivity">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="这是主页面"
    />

</LinearLayout>
-------------------activity_main.xml----------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.earl.baipenggui1511j20170108.view.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录"
        android:textSize="20sp"
        android:gravity="center"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/mobile"
        android:hint="请输入手机号"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/password"
        android:hint="请输入密码"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:gravity="center">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="登录"
            android:id="@+id/login"
            android:onClick="login"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="注册"
            android:id="@+id/register"
            android:onClick="register"/>
    </LinearLayout>


</LinearLayout>
-------------------activity_reg.xml----------------------
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.earl.baipenggui1511j20170108.view.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="登录"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/mobile2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入手机号" />

    <EditText
        android:id="@+id/password2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码" />

    <Button
        android:id="@+id/register2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:orientation="horizontal"
        android:text="立即注册"
        android:onClick="register_btn"/>


</LinearLayout>
-------------------lv_item.xml----------------------
<?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:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="80dp"
            android:id="@+id/u_pic"
            android:src="@mipmap/ic_launcher"
            android:layout_weight="1"/>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="80dp"
            android:layout_weight="1"
            android:orientation="vertical">

            <TextView
                android:id="@+id/tv_uname"
                android:layout_width="wrap_content"
               android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="15dp"
                android:text="jinlin" />

            <TextView
                android:id="@+id/tv_date"
                android:layout_width="wrap_content"
               android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="10dp"
                android:text="2017" />
        </LinearLayout>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="200dp"
            android:src="@mipmap/item_jia"
            android:layout_weight="1"/>
    </LinearLayout>

    <TextView
        android:id="@+id/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="haha"
        android:textSize="18sp" />

    <ImageView
        android:id="@+id/big_pic"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher" />
</LinearLayout>


 




评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

窗台的花花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值