From 90e4d722474165fdb9037ea8ff0db9c86d95a96a Mon Sep 17 00:00:00 2001 From: ongbo <1308161085@qq.com> Date: Sun, 17 Nov 2019 21:20:43 +0800 Subject: [PATCH] frame update --- .idea/.name | 1 + app/build.gradle | 6 + .../example/PersonalCenter/HandlerHandle.java | 38 ++ .../PersonalCenter/JellyInterpolator.java | 17 + .../com/example/PersonalCenter/Login.java | 10 +- .../java/com/example/PersonalCenter/User.java | 92 +++++ .../example/PersonalCenter/WebServiceGet.java | 45 ++- .../cmknowledgegraph/LoginActivity.java | 345 ++++++++++++++---- .../cmknowledgegraph/MainActivity.java | 6 +- .../cmknowledgegraph/PersonContent.java | 33 +- .../cmknowledgegraph/SearchActivity.java | 24 +- .../cmknowledgegraph/SearchContent.java | 156 ++++++-- .../java/com/example/cmknowledgegraph/tt.java | 178 +++++++++ .../main/java/com/example/tools/retuData.java | 14 + app/src/main/res/drawable-v24/back.png | Bin 0 -> 18210 bytes app/src/main/res/drawable-v24/ic_launcher.png | Bin 0 -> 7658 bytes app/src/main/res/drawable-v24/paw_code.png | Bin 0 -> 1700 bytes app/src/main/res/drawable-v24/paw_left.png | Bin 0 -> 1807 bytes .../res/drawable-v24/project_detail_cir.png | Bin 0 -> 11804 bytes app/src/main/res/drawable/content.png | Bin 0 -> 13438 bytes app/src/main/res/drawable/ic_close.png | Bin 0 -> 324 bytes app/src/main/res/drawable/ic_menu.png | Bin 0 -> 206 bytes app/src/main/res/drawable/ic_search.png | Bin 0 -> 626 bytes .../main/res/drawable/radius_drawable_bg.xml | 6 + .../main/res/drawable/rotate_layout_bg.xml | 9 + app/src/main/res/drawable/text_bg.xml | 11 + app/src/main/res/layout/activity_login.xml | 129 +++---- app/src/main/res/layout/activity_search.xml | 74 +++- app/src/main/res/layout/edit_text.xml | 7 + app/src/main/res/layout/input_layout.xml | 70 ++++ app/src/main/res/layout/layout_progress.xml | 23 ++ app/src/main/res/layout/title_layout.xml | 25 ++ app/src/main/res/values/colors.xml | 3 + app/src/main/res/values/dimens.xml | 5 + app/src/main/res/values/strings.xml | 1 + 35 files changed, 1081 insertions(+), 247 deletions(-) create mode 100644 .idea/.name create mode 100644 app/src/main/java/com/example/PersonalCenter/HandlerHandle.java create mode 100644 app/src/main/java/com/example/PersonalCenter/JellyInterpolator.java create mode 100644 app/src/main/java/com/example/PersonalCenter/User.java create mode 100644 app/src/main/java/com/example/cmknowledgegraph/tt.java create mode 100644 app/src/main/java/com/example/tools/retuData.java create mode 100644 app/src/main/res/drawable-v24/back.png create mode 100644 app/src/main/res/drawable-v24/ic_launcher.png create mode 100644 app/src/main/res/drawable-v24/paw_code.png create mode 100644 app/src/main/res/drawable-v24/paw_left.png create mode 100644 app/src/main/res/drawable-v24/project_detail_cir.png create mode 100755 app/src/main/res/drawable/content.png create mode 100755 app/src/main/res/drawable/ic_close.png create mode 100755 app/src/main/res/drawable/ic_menu.png create mode 100755 app/src/main/res/drawable/ic_search.png create mode 100644 app/src/main/res/drawable/radius_drawable_bg.xml create mode 100644 app/src/main/res/drawable/rotate_layout_bg.xml create mode 100644 app/src/main/res/drawable/text_bg.xml create mode 100644 app/src/main/res/layout/edit_text.xml create mode 100644 app/src/main/res/layout/input_layout.xml create mode 100644 app/src/main/res/layout/layout_progress.xml create mode 100644 app/src/main/res/layout/title_layout.xml create mode 100755 app/src/main/res/values/dimens.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..29fe5c7 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +CMKnowledgeGraph \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c680c26..04303db 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -49,5 +49,11 @@ dependencies { implementation 'com.jpardogo.materialtabstrip:library:1.1.0' implementation 'com.github.bumptech.glide:glide:4.0.0' implementation 'com.github.ibrahimsn98:SmoothBottomBar:1.5' +//OKhttp请求包,用于登录注册 +//// implementation "com.squareup.okhttp3:okhttp:4.2.2" +// implementation 'com.alibaba:fastjson:1.2.61' + implementation 'com.alibaba:fastjson:1.1.71.android' +//弹状搜索框 + implementation 'com.github.yalantis:jellytoolbar:v1.0' } diff --git a/app/src/main/java/com/example/PersonalCenter/HandlerHandle.java b/app/src/main/java/com/example/PersonalCenter/HandlerHandle.java new file mode 100644 index 0000000..fd0b6a5 --- /dev/null +++ b/app/src/main/java/com/example/PersonalCenter/HandlerHandle.java @@ -0,0 +1,38 @@ +package com.example.PersonalCenter; + +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.widget.Toast; + +import androidx.annotation.NonNull; + +import com.alibaba.fastjson.JSON; +import com.example.cmknowledgegraph.LoginActivity; +import com.example.tools.retuData; + +public class HandlerHandle extends Handler { + LoginActivity loginActivity; + public HandlerHandle(LoginActivity loginActivity){ + this.loginActivity = loginActivity; + } + @Override + public void handleMessage(@NonNull Message msg) { + //根据登录状态请求不同的消息 + super.handleMessage(msg); + Bundle b = msg.getData(); + String data = b.getString("msg"); + Log.i("haha-====","==="+data); + + retuData retuData = JSON.parseObject(data, com.example.tools.retuData.class); + if(retuData.msg.equals("success")){ + //登录成功,返回主页面 + }else{ +// 登录失败 + Toast.makeText(loginActivity, retuData.msg, Toast.LENGTH_SHORT).show(); + + + } + } +} diff --git a/app/src/main/java/com/example/PersonalCenter/JellyInterpolator.java b/app/src/main/java/com/example/PersonalCenter/JellyInterpolator.java new file mode 100644 index 0000000..fbb2f6f --- /dev/null +++ b/app/src/main/java/com/example/PersonalCenter/JellyInterpolator.java @@ -0,0 +1,17 @@ +package com.example.PersonalCenter; + +import android.view.animation.LinearInterpolator; + +public class JellyInterpolator extends LinearInterpolator { + private float factor; + + public JellyInterpolator() { + this.factor = 0.15f; + } + + @Override + public float getInterpolation(float input) { + return (float) (Math.pow(2, -10 * input) + * Math.sin((input - factor / 4) * (2 * Math.PI) / factor) + 1); + } +} diff --git a/app/src/main/java/com/example/PersonalCenter/Login.java b/app/src/main/java/com/example/PersonalCenter/Login.java index 93d2ca6..e0f0a7e 100644 --- a/app/src/main/java/com/example/PersonalCenter/Login.java +++ b/app/src/main/java/com/example/PersonalCenter/Login.java @@ -2,6 +2,10 @@ package com.example.PersonalCenter; import android.util.Log; +import com.example.tools.retuData; + +import java.io.IOException; + public class Login { private String password; @@ -12,15 +16,15 @@ public class Login { this.phonenumber = phonenumber; } - public String connUser(){ - String infoString = WebServiceGet.executeHttpGet(phonenumber,password,"/Login"); + public String connUser() throws IOException { + String infoString = WebServiceGet.executeHttpGet(phonenumber,password,"/person/login"); // if(infoString.equals("false")){ // Log.i("Login","+++++++++++fail"+infoString); // }else { // Log.i("Login","+++++++++++successs"+infoString); // } //登录成功后返回用户名 - while(infoString==null){} + Log.i("sucesss",infoString+"ha"); return infoString; } diff --git a/app/src/main/java/com/example/PersonalCenter/User.java b/app/src/main/java/com/example/PersonalCenter/User.java new file mode 100644 index 0000000..92abedb --- /dev/null +++ b/app/src/main/java/com/example/PersonalCenter/User.java @@ -0,0 +1,92 @@ +package com.example.PersonalCenter; + + +/* +* User类 +* 作为当前登录的用户信息,保存该用户信息 +* 采用单例模式 +* +* */ +public class User { + private static User user;//保存某一个用户 + private String phonenumber; + private String username; + private String avatar_url; + private String sex; + private Long age; + public static boolean isLogin;//是否登录 + private User(){} + public static synchronized User getUser(){ + if(user == null){ + user = new User(); + } + return user; + } + + + public static void setUser(String phonenumber, String username, String avatar_url, String sex, Long age) { + user.setAge(age); + user.setAvatar_url(avatar_url); + user.setPhonenumber(phonenumber); + user.setUsername(username); + user.setSex(sex); + + } + //设置登录状态 + public static void setLogin(boolean login) { + isLogin = login; + } + //获取登录状态 + public static boolean isLogin() { + return isLogin; + } + //注销 + public static void logoff(){ + user.setAge(null); + user.setAvatar_url(null); + user.setPhonenumber(null); + user.setUsername(null); + user.setSex(null); + user = null; + } + + public void setPhonenumber(String phonenumber) { + this.phonenumber = phonenumber; + } + + public void setUsername(String username) { + this.username = username; + } + + public void setAvatar_url(String avatar_url) { + this.avatar_url = avatar_url; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public void setAge(Long age) { + this.age = age; + } + + public String getPhonenumber() { + return phonenumber; + } + + public String getUsername() { + return username; + } + + public String getAvatar_url() { + return avatar_url; + } + + public String getSex() { + return sex; + } + + public Long getAge() { + return age; + } +} diff --git a/app/src/main/java/com/example/PersonalCenter/WebServiceGet.java b/app/src/main/java/com/example/PersonalCenter/WebServiceGet.java index 6ffef7c..0a2e891 100644 --- a/app/src/main/java/com/example/PersonalCenter/WebServiceGet.java +++ b/app/src/main/java/com/example/PersonalCenter/WebServiceGet.java @@ -1,5 +1,10 @@ package com.example.PersonalCenter; +import android.util.Log; + +import com.alibaba.fastjson.JSON; +import com.example.tools.retuData; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -8,35 +13,45 @@ import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; + + public class WebServiceGet { - public static String executeHttpGet(String phonenumber,String password,String address){ + public static String UrlPath = "http://114.55.37.70/CMKnowledgeGraph";//服务器项目的总请求路径 + //登录请求 + public static String executeHttpGet(String phonenumber,String password,String address) { HttpURLConnection connection = null; - InputStream in = null; + InputStream br = null; - String Url = "http://106.54.210.208:8080/ChineseM"+address; + String Url = UrlPath + address; String path = Url+"?phonenumber=" + phonenumber + "&password=" + password; + Log.i("login---====--",""+path); URL url = null; try { url = new URL(path); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - try { - connection = (HttpURLConnection)url.openConnection(); + + connection = (HttpURLConnection) url.openConnection(); + connection.setConnectTimeout(100000); + connection.setReadTimeout(80000); connection.setRequestMethod("GET"); - connection.setConnectTimeout(100000);//建立连接超时 - connection.setReadTimeout(80000);//传输数据超时 - in = connection.getInputStream(); - return parseInfo(in); + //获取结果 +// int responseCode = connection.getResponseCode(); +// if(responseCode == 200){ + br = connection.getInputStream(); + String readline = parseInfo(br); + + return readline; + +// } } catch (IOException e) { e.printStackTrace(); }finally { - if(connection != null){ + if(connection!=null){ connection.disconnect(); + } - if(in != null){ + if(br!=null){ try { - in.close(); + br.close(); } catch (IOException e) { e.printStackTrace(); } diff --git a/app/src/main/java/com/example/cmknowledgegraph/LoginActivity.java b/app/src/main/java/com/example/cmknowledgegraph/LoginActivity.java index d921db9..aacd6e4 100644 --- a/app/src/main/java/com/example/cmknowledgegraph/LoginActivity.java +++ b/app/src/main/java/com/example/cmknowledgegraph/LoginActivity.java @@ -1,113 +1,308 @@ package com.example.cmknowledgegraph; -import android.content.Intent; +import android.animation.Animator; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.animation.PropertyValuesHolder; +import android.animation.ValueAnimator; +import android.os.Build; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; import android.util.Log; -import android.view.LayoutInflater; import android.view.View; -import android.widget.Button; +import android.view.ViewGroup; +import android.view.Window; +import android.view.animation.AccelerateDecelerateInterpolator; import android.widget.EditText; +import android.widget.LinearLayout; import android.widget.TextView; +import android.widget.Toast; -import androidx.appcompat.app.AlertDialog; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; + +import com.example.PersonalCenter.HandlerHandle; +import com.example.PersonalCenter.JellyInterpolator; import com.example.PersonalCenter.Login; +import com.example.tools.retuData; + +import java.io.IOException; + +public class LoginActivity extends AppCompatActivity implements View.OnClickListener { + private TextView mBtnLogin; + private View progress; + private View mInputLayout; + private float mWidth, mHeight; + private LinearLayout mName, mPsw; -public class LoginActivity extends AppCompatActivity { - public static String username; - public static int usersuccess = 0; - public static boolean isLogin=false;//登录属性,true登陆成功,false未登录 @Override - protected void onCreate(Bundle savedInstanceState) { + protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_login); - final EditText tel_edit=findViewById(R.id.id_edit); - final EditText password_edit=findViewById(R.id.password_edit); + initView(); - /** - * 登录按钮,传递参数:手机号(int)、密码(string) - */ - - LayoutInflater inflater = getLayoutInflater(); - View layout = inflater.inflate(R.layout.activity_personality_center, null); - final Button welcom_btn= layout.findViewById(R.id.welcom_btn); + } + public void initView(){ + mBtnLogin = (TextView) findViewById(R.id.main_btn_login); + progress = findViewById(R.id.layout_progress); + mInputLayout = findViewById(R.id.input_layout); + mName = (LinearLayout) findViewById(R.id.id_edit); + mPsw = (LinearLayout) findViewById(R.id.password_edit); + //给登录设置监听 - final Button login_btn=findViewById(R.id.login_btn); - login_btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if(tel_edit==null||tel_edit.getText().toString().equals("")){ - AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); - builder.setTitle("登录失败");// 设置标题 - builder.setMessage("请输入电话号码");// 为对话框设置内容 - builder.create().show();// 使用show()方法显示对话框 - }else if(password_edit==null||password_edit.getText().toString().equals("")){ - AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); - builder.setTitle("登录失败");// 设置标题 - builder.setMessage("请输入密码");// 为对话框设置内容 - builder.create().show();// 使用show()方法显示对话框 - }else { - //获取手机号和密码 - String tel = tel_edit.getText().toString().trim(); - String password = password_edit.getText().toString(); - //调用数据库类中的方法进行登录 -// boolean isLogin= OperaSchema.longin(tel,password);//原来的数据库 - final Login login = new Login(tel, password); + //设置监听 + mBtnLogin.setOnClickListener(this); + } + @Override + public void onClick(View v) { + //异步处理消息请求 + final HandlerHandle handler = new HandlerHandle(this); + int viewID = v.getId(); + switch (viewID){ + case R.id.main_btn_login: + //登录 + //根据监听的不同内容,来改变响应状态 + // 计算出控件的高与宽 + mWidth = mBtnLogin.getMeasuredWidth(); + mHeight = mBtnLogin.getMeasuredHeight(); + // 隐藏输入框 + mName.setVisibility(View.INVISIBLE); + mPsw.setVisibility(View.INVISIBLE); + //调入动画 + inputAnimator(mInputLayout, mWidth, mHeight); + //如果登录成功 + //获取手机号和密码 + EditText phonenumberEditText = (EditText) mName.getChildAt(1); + EditText passwordEditText = (EditText) mName.getChildAt(1); + if(phonenumberEditText==null||phonenumberEditText.getText().toString().equals("")){ + //请输入用户名 + Toast.makeText(this, "请输入用户名", Toast.LENGTH_SHORT).show(); + }else if(passwordEditText==null||passwordEditText.getText().toString().equals("")){ + //请输入密码 + Toast.makeText(this, "请输入用户名", Toast.LENGTH_SHORT).show(); + }else{ + String phonenumber = phonenumberEditText.getText().toString(); + String password = phonenumberEditText.getText().toString(); + Login login = new Login(phonenumber, password); new Thread(new Runnable() { @Override public void run() { - LoginActivity.username = login.connUser(); - LoginActivity.usersuccess = 1; - Log.i("登录", "登录有没有问题" + username + "oooo"); - + try { + String retuData = login.connUser(); + Log.i("returndat--","-----"+retuData); + Message m = new Message(); + Bundle b = new Bundle(); + b.putString("msg",retuData); + m.setData(b); + handler.sendMessage(m); + } catch (IOException e) { + e.printStackTrace(); + } } }).start(); -/** - * 登陆成功,返回上一个界面,即个人中心界面,刷新个人中心界面 - * 即,改变登录按钮为欢迎按钮 - */ - while (LoginActivity.usersuccess == 0) { - Log.i("suersuer======", "dkie" + LoginActivity.usersuccess); - } - - if (!LoginActivity.username.equals("")) { - //改变个人中心的登录状态, - isLogin=true; - finish();//返回个人中心Activity - //刷新个人中心Activity - Log.i("成功", "成功了"); - - } else {//登陆失败提醒 - AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); - builder.setTitle("登陆提醒");// 设置标题 - builder.setMessage("登陆失败");// 为对话框设置内容 - builder.create().show();// 使用show()方法显示对话框 - Log.i("失败", "失败了"); - } - LoginActivity.username = ""; - LoginActivity.usersuccess = 0; + } + + + break; + case R.id.main_title: + //注册 + + } + + + } + + + + //设置输入框动画效果 + private void inputAnimator(final View view, float w, float h){ + AnimatorSet set = new AnimatorSet(); + + ValueAnimator animator = ValueAnimator.ofFloat(0, w); + animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + + @Override + public void onAnimationUpdate(ValueAnimator animation) { + float value = (Float) animation.getAnimatedValue(); + ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view + .getLayoutParams(); + params.leftMargin = (int) value; + params.rightMargin = (int) value; + view.setLayoutParams(params); } }); - //TextView注册跳转 - TextView register_text=findViewById(R.id.register_text); - register_text.setOnClickListener(new View.OnClickListener() { + ObjectAnimator animator2 = ObjectAnimator.ofFloat(mInputLayout, + "scaleX", 1f, 0.5f); + set.setDuration(1000); + set.setInterpolator(new AccelerateDecelerateInterpolator()); + set.playTogether(animator, animator2); + set.start(); + set.addListener(new Animator.AnimatorListener() { + @Override - public void onClick(View view) { - //跳转到注册页面 - Intent intent=new Intent(); - intent.setClass(LoginActivity.this,RegisterActivity.class); - startActivity(intent); + public void onAnimationStart(Animator animation) { + + } + + @Override + public void onAnimationRepeat(Animator animation) { + + } + + @Override + public void onAnimationEnd(Animator animation) { + /** + * 动画结束后,先显示加载的动画,然后再隐藏输入框 + */ + progress.setVisibility(View.VISIBLE); + progressAnimator(progress); + mInputLayout.setVisibility(View.INVISIBLE); + + } + + @Override + public void onAnimationCancel(Animator animation) { + } }); + + } + private void progressAnimator(final View view) { + PropertyValuesHolder animator = PropertyValuesHolder.ofFloat("scaleX", + 0.5f, 1f); + PropertyValuesHolder animator2 = PropertyValuesHolder.ofFloat("scaleY", + 0.5f, 1f); + ObjectAnimator animator3 = ObjectAnimator.ofPropertyValuesHolder(view, + animator, animator2); + animator3.setDuration(1000); + animator3.setInterpolator(new JellyInterpolator()); + animator3.start(); + } + //登录错误,恢复初始状态 + private void recovery() { + progress.setVisibility(View.GONE); + mInputLayout.setVisibility(View.VISIBLE); + mName.setVisibility(View.VISIBLE); + mPsw.setVisibility(View.VISIBLE); + + ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mInputLayout.getLayoutParams(); + params.leftMargin = 0; + params.rightMargin = 0; + mInputLayout.setLayoutParams(params); + + + ObjectAnimator animator2 = ObjectAnimator.ofFloat(mInputLayout, "scaleX", 0.5f,1f ); + animator2.setDuration(500); + animator2.setInterpolator(new AccelerateDecelerateInterpolator()); + animator2.start(); + } + + + + +// public static String username; +// public static int usersuccess = 0; +// public static boolean isLogin=false;//登录属性,true登陆成功,false未登录 +// @Override +// protected void onCreate(Bundle savedInstanceState) { +// super.onCreate(savedInstanceState); +// setContentView(R.layout.activity_login); +// +// final EditText tel_edit=findViewById(R.id.id_edit); +// final EditText password_edit=findViewById(R.id.password_edit); +// +// /** +// * 登录按钮,传递参数:手机号(int)、密码(string) +// */ +// +// LayoutInflater inflater = getLayoutInflater(); +// View layout = inflater.inflate(R.layout.activity_personality_center, null); +// final Button welcom_btn= layout.findViewById(R.id.welcom_btn); +// +// final Button login_btn=findViewById(R.id.login_btn); +// login_btn.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View view) { +// if(tel_edit==null||tel_edit.getText().toString().equals("")){ +// AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); +// builder.setTitle("登录失败");// 设置标题 +// builder.setMessage("请输入电话号码");// 为对话框设置内容 +// builder.create().show();// 使用show()方法显示对话框 +// }else if(password_edit==null||password_edit.getText().toString().equals("")){ +// AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); +// builder.setTitle("登录失败");// 设置标题 +// builder.setMessage("请输入密码");// 为对话框设置内容 +// builder.create().show();// 使用show()方法显示对话框 +// }else { +// //获取手机号和密码 +// String tel = tel_edit.getText().toString().trim(); +// String password = password_edit.getText().toString(); +// //调用数据库类中的方法进行登录 +//// boolean isLogin= OperaSchema.longin(tel,password);//原来的数据库 +// final Login login = new Login(tel, password); +// +// new Thread(new Runnable() { +// @Override +// public void run() { +// LoginActivity.username = login.connUser(); +// LoginActivity.usersuccess = 1; +// Log.i("登录", "登录有没有问题" + username + "oooo"); +// +// } +// }).start(); +///** +// * 登陆成功,返回上一个界面,即个人中心界面,刷新个人中心界面 +// * 即,改变登录按钮为欢迎按钮 +// */ +// while (LoginActivity.usersuccess == 0) { +// Log.i("suersuer======", "dkie" + LoginActivity.usersuccess); +// } +// +// if (!LoginActivity.username.equals("")) { +// //改变个人中心的登录状态, +// isLogin=true; +// finish();//返回个人中心Activity +// //刷新个人中心Activity +// Log.i("成功", "成功了"); +// +// } else {//登陆失败提醒 +// AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); +// builder.setTitle("登陆提醒");// 设置标题 +// builder.setMessage("登陆失败");// 为对话框设置内容 +// builder.create().show();// 使用show()方法显示对话框 +// Log.i("失败", "失败了"); +// } +// LoginActivity.username = ""; +// LoginActivity.usersuccess = 0; +// } +// +// } +// }); +// +// //TextView注册跳转 +// TextView register_text=findViewById(R.id.register_text); +// register_text.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View view) { +// //跳转到注册页面 +// Intent intent=new Intent(); +// intent.setClass(LoginActivity.this,RegisterActivity.class); +// startActivity(intent); +// } +// }); +// } } diff --git a/app/src/main/java/com/example/cmknowledgegraph/MainActivity.java b/app/src/main/java/com/example/cmknowledgegraph/MainActivity.java index 81d3e87..4874426 100644 --- a/app/src/main/java/com/example/cmknowledgegraph/MainActivity.java +++ b/app/src/main/java/com/example/cmknowledgegraph/MainActivity.java @@ -26,6 +26,7 @@ public class MainActivity extends AppCompatActivity { public final AppCompatActivity getAppCompatActivity(){ return this; } + private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() { @@ -46,7 +47,10 @@ public class MainActivity extends AppCompatActivity { transaction.commit(); //提交事务 return true; case R.id.search: - transaction.replace(R.id.content,new SearchContent()); //对应的java class + SearchContent searchContent = new SearchContent(); + searchContent.setAppCompatActivity(getAppCompatActivity()); + transaction.replace(R.id.content, searchContent); //对应的java class + transaction.commit(); //提交事务 return true; case R.id.chat: diff --git a/app/src/main/java/com/example/cmknowledgegraph/PersonContent.java b/app/src/main/java/com/example/cmknowledgegraph/PersonContent.java index 82ea5eb..bbacfda 100644 --- a/app/src/main/java/com/example/cmknowledgegraph/PersonContent.java +++ b/app/src/main/java/com/example/cmknowledgegraph/PersonContent.java @@ -26,23 +26,26 @@ public class PersonContent extends Fragment { login_pc_btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //跳转到LoginActivity - if(!LoginActivity.isLogin){ - Intent intent=new Intent(); - intent.setClass(getActivity(),LoginActivity.class); - startActivity(intent); - } +// if(!LoginActivity.isLogin){ +// Intent intent=new Intent(); +// intent.setClass(getActivity(),LoginActivity.class); +// startActivity(intent); +// } + Intent intent=new Intent(); + intent.setClass(getActivity(),LoginActivity.class); + startActivity(intent); } }); } - @Override - public void onResume() { - super.onResume(); - if(LoginActivity.isLogin){ - Button longin_pc_btn=(Button) getActivity().findViewById(R.id.login_pc_button); - longin_pc_btn.setText("Hello"+LoginActivity.username); - } - -//高血压 - } +// @Override +// public void onResume() { +// super.onResume(); +// if(LoginActivity.isLogin){ +// Button longin_pc_btn=(Button) getActivity().findViewById(R.id.login_pc_button); +// longin_pc_btn.setText("Hello"+LoginActivity.username); +// } +// +////高血压 +// } } diff --git a/app/src/main/java/com/example/cmknowledgegraph/SearchActivity.java b/app/src/main/java/com/example/cmknowledgegraph/SearchActivity.java index f770631..ce6d2e9 100644 --- a/app/src/main/java/com/example/cmknowledgegraph/SearchActivity.java +++ b/app/src/main/java/com/example/cmknowledgegraph/SearchActivity.java @@ -17,17 +17,17 @@ public class SearchActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); - EditText search_edit_frame = findViewById(R.id.search_edit); - ImageButton search_btn = findViewById(R.id.search_btn); - String sickname = search_edit_frame.getText().toString(); - - search_btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - -// Search search = new Search(sickname); -// search.search(); - } - }); +// EditText search_edit_frame = findViewById(R.id.search_edit); +// ImageButton search_btn = findViewById(R.id.search_btn); +// String sickname = search_edit_frame.getText().toString(); +// +// search_btn.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// +//// Search search = new Search(sickname); +//// search.search(); +// } +// }); } } diff --git a/app/src/main/java/com/example/cmknowledgegraph/SearchContent.java b/app/src/main/java/com/example/cmknowledgegraph/SearchContent.java index 1500058..f8f2eb8 100644 --- a/app/src/main/java/com/example/cmknowledgegraph/SearchContent.java +++ b/app/src/main/java/com/example/cmknowledgegraph/SearchContent.java @@ -1,7 +1,9 @@ package com.example.cmknowledgegraph; import android.os.Bundle; +import android.text.TextUtils; import android.util.Log; +import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -9,63 +11,145 @@ import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ListView; +import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.AppCompatEditText; import androidx.fragment.app.Fragment; import com.example.PersonalCenter.Search; import com.hankcs.hanlp.seg.common.Term; import com.hankcs.hanlp.tokenizer.StandardTokenizer; +import com.yalantis.jellytoolbar.listener.JellyListener; +import com.yalantis.jellytoolbar.widget.JellyToolbar; import java.util.List; import java.util.Set; // public class SearchContent extends Fragment { + private static final String TEXT_KEY = "text"; + AppCompatActivity appCompatActivity; -public static List> a; -public static int k=0; + public AppCompatActivity getAppCompatActivity() { + return appCompatActivity; + } + + public void setAppCompatActivity(AppCompatActivity appCompatActivity) { + this.appCompatActivity = appCompatActivity; + } + private JellyToolbar toolbar; + private AppCompatEditText editText; + private JellyListener jellyListener = new JellyListener() { + @Override + public void onCancelIconClicked() { + if (TextUtils.isEmpty(editText.getText())) { + toolbar.collapse(); + } else { + editText.getText().clear(); + } + } + }; + public static List> a; + public static int k=0; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate( R.layout.activity_search, container, false ); //要加载的layout文件 } + + private int getStatusBarHeight() { + int result = 0; + int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); + if (resourceId > 0) { + result = getResources().getDimensionPixelSize(resourceId); + } + return result; + } + + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + outState.putString(TEXT_KEY, editText.getText().toString()); + super.onSaveInstanceState(outState); + } + +// +// @Override +// public void onViewStateRestored(@Nullable Bundle savedInstanceState) { +// super.onViewStateRestored(savedInstanceState); +// +// editText.setText(savedInstanceState.getString(TEXT_KEY)); +// editText.setSelection(editText.getText().length()); +// } + public void onActivityCreated(Bundle savedInstanceState) { - // TODO Auto-generated method stub - super.onActivityCreated(savedInstanceState); - EditText search_edit = getActivity().findViewById(R.id.search_edit); - - ImageButton search_btn = (ImageButton) getActivity().findViewById(R.id.search_btn); - - search_btn.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - Log.i("haha","=======Oncli"); - //查找逻辑 - List termList = StandardTokenizer.segment("什么是糖尿病"); - System.out.println(termList); - String sickname = search_edit.getText().toString(); - Search search = new Search(sickname); - new Thread(new Runnable() { - @Override - public void run() { - SearchContent.a = search.search(); - SearchContent.k = 1; - - } - }).start(); - while(SearchContent.k==0) {Log.i("i","i");} - if(SearchContent.a!=null){ - String[] medicines = a.get(0).toArray(new String[0]); - String[] reasons = a.get(1).toArray(new String[0]); - ListView lv = getActivity().findViewById(R.id.listView1); - ArrayAdapter adapter = new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,medicines); - lv.setAdapter(adapter); - - } - SearchContent.k=0; - SearchContent.a=null; + super.onActivityCreated(savedInstanceState); + toolbar = (JellyToolbar) appCompatActivity.findViewById(R.id.toolbar); + toolbar.getToolbar().setNavigationIcon(R.drawable.ic_menu); + toolbar.setJellyListener(jellyListener); + toolbar.getToolbar().setPadding(0, getStatusBarHeight(), 0, 0); + editText = (AppCompatEditText) LayoutInflater.from(appCompatActivity).inflate(R.layout.edit_text, null); + editText.setBackgroundResource(R.color.colorTransparent); + toolbar.setContentView(editText);//添加入输入框 + + appCompatActivity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); + toolbar.setJellyListener(jellyListener); + editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + if((event != null && KeyEvent.KEYCODE_ENTER == event.getKeyCode() && KeyEvent.ACTION_DOWN == event.getAction())){ + Log.i("dianjile","你点击了哥哥"); + toolbar.collapse(); + editText.getText().clear(); + return true; } - }); + return false; + } + }); + + + + // TODO Auto-generated method stub +// super.onActivityCreated(savedInstanceState); +// EditText search_edit = getActivity().findViewById(R.id.search_edit); +// +// ImageButton search_btn = (ImageButton) getActivity().findViewById(R.id.search_btn); +// +// search_btn.setOnClickListener(new View.OnClickListener() { +// public void onClick(View v) { +// Log.i("haha","=======Oncli"); +// //查找逻辑 +// List termList = StandardTokenizer.segment("什么是糖尿病"); +// System.out.println(termList); +// String sickname = search_edit.getText().toString(); +// Search search = new Search(sickname); +// new Thread(new Runnable() { +// @Override +// public void run() { +// SearchContent.a = search.search(); +// SearchContent.k = 1; +// +// } +// }).start(); +// while(SearchContent.k==0) {Log.i("i","i");} +// if(SearchContent.a!=null){ +// String[] medicines = a.get(0).toArray(new String[0]); +// String[] reasons = a.get(1).toArray(new String[0]); +// ListView lv = getActivity().findViewById(R.id.listView1); +// ArrayAdapter adapter = new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,medicines); +// lv.setAdapter(adapter); +// +// } +// SearchContent.k=0; +// SearchContent.a=null; +// +// +// } +// }); } } diff --git a/app/src/main/java/com/example/cmknowledgegraph/tt.java b/app/src/main/java/com/example/cmknowledgegraph/tt.java new file mode 100644 index 0000000..674c35e --- /dev/null +++ b/app/src/main/java/com/example/cmknowledgegraph/tt.java @@ -0,0 +1,178 @@ +package com.example.cmknowledgegraph; + +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentStatePagerAdapter; +import androidx.viewpager.widget.ViewPager; + +import com.example.ChatContentPkg.RecyclerViewFragment; +import com.github.florent37.materialviewpager.MaterialViewPager; +import com.github.florent37.materialviewpager.header.HeaderDesign; + +public class tt extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_chat); +// Toolbar toolbar = findViewById(R.id.toolbar); +// setSupportActionBar(toolbar); +// +// FloatingActionButton fab = findViewById(R.id.fab); +// fab.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View view) { +// Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) +// .setAction("Action", null).show(); +// } +// }); +// BoomMenuButton bmb = findViewById(R.id.bmb); +// for (int i=0;i models = new ArrayList<>(); +// models.add( +// new NavigationTabBar.Model.Builder( +// getResources().getDrawable(R.drawable.draw3), +// Color.parseColor("red") +// ).title("论坛").badgeTitle("NTB").build()); +// models.add( +// new NavigationTabBar.Model.Builder( +// getResources().getDrawable(R.drawable.draw1), +// Color.parseColor("blue") +// ).title("drug").badgeTitle("drug").build() +// ); +// navigationTabBar.setModels(models); +// ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); +// viewPager.setAdapter(new PagerAdapter() { +// @Override +// public int getCount() { +// return 0; +// } +// +// @Override +// public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { +// return false; +// } +// }); +// navigationTabBar.setViewPager(viewPager,2); +// navigationTabBar.setTitleMode(NavigationTabBar.TitleMode.ACTIVE); +// navigationTabBar.setBadgeGravity(NavigationTabBar.BadgeGravity.BOTTOM); +// navigationTabBar.setBadgePosition(NavigationTabBar.BadgePosition.CENTER); +// +// navigationTabBar.setIsBadged(true); +// navigationTabBar.setIsTitled(true); +// navigationTabBar.setIsTinted(true); +// navigationTabBar.setIsBadgeUseTypeface(true); +// navigationTabBar.setBadgeBgColor(Color.RED); +// navigationTabBar.setBadgeTitleColor(Color.WHITE); +// navigationTabBar.setIsSwiped(true); +// navigationTabBar.setBgColor(Color.BLACK); +// navigationTabBar.setBadgeSize(10); +// navigationTabBar.setTitleSize(10); +// navigationTabBar.setIconSizeFraction((float) 0.5); + //得到MaterviewPager实例 + MaterialViewPager materialViewPager = (MaterialViewPager) findViewById(R.id.materialViewPager); + //为MaterialViewPager添加监听 + materialViewPager.setMaterialViewPagerListener(new MaterialViewPager.Listener() { + @Override + public HeaderDesign getHeaderDesign(int page) { + switch (page){ + case 0: + return HeaderDesign.fromColorResAndUrl( + R.color.blue, + getResources().getDrawable(R.drawable.draw1).toString() + ); + case 1: + return HeaderDesign.fromColorResAndUrl( + R.color.green, + getResources().getDrawable(R.drawable.draw2).toString() + ); + case 2: + return HeaderDesign.fromColorResAndUrl( + R.color.cyan, + getResources().getDrawable(R.drawable.draw3).toString() + ); + + } + return null; + } + }); + //设置Toolbar + Toolbar toolbar = materialViewPager.getToolbar(); + if(toolbar!=null){ + setSupportActionBar(toolbar); + ActionBar actionBar = getSupportActionBar(); + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setDisplayShowHomeEnabled(true); + actionBar.setDisplayShowTitleEnabled(true); + actionBar.setDisplayUseLogoEnabled(false); + actionBar.setHomeButtonEnabled(true); + } + //为Viewpager设置适配器 + ViewPager viewPager = materialViewPager.getViewPager(); + viewPager.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) { + @NonNull + @Override + public Fragment getItem(int position) { + switch (position % 3){ + case 0: + return RecyclerViewFragment.newInstance(); + default: + return RecyclerViewFragment.newInstance(); + + } + } + + @Override + public int getCount() { + return 3; + } + + @Nullable + @Override + public CharSequence getPageTitle(int position) { + switch (position % 3){ + case 0: + return "TAP1"; + default: + return "TAPN"; + } + } + }); + materialViewPager.getViewPager().setOffscreenPageLimit(materialViewPager + .getViewPager().getAdapter().getCount()); + materialViewPager.getPagerTitleStrip().setViewPager(materialViewPager.getViewPager()); + } + + + + +} diff --git a/app/src/main/java/com/example/tools/retuData.java b/app/src/main/java/com/example/tools/retuData.java new file mode 100644 index 0000000..cd2c89e --- /dev/null +++ b/app/src/main/java/com/example/tools/retuData.java @@ -0,0 +1,14 @@ +package com.example.tools; + +public class retuData { + public String msg;//接受消息码 + public Object data;//接受数据 + + public void setMsg(String msg) { + this.msg = msg; + } + + public void setData(Object data) { + this.data = data; + } +} diff --git a/app/src/main/res/drawable-v24/back.png b/app/src/main/res/drawable-v24/back.png new file mode 100644 index 0000000000000000000000000000000000000000..83f9db9c99517698f9065038558b9efe18fd7ebc GIT binary patch literal 18210 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-v24/paw_left.png b/app/src/main/res/drawable-v24/paw_left.png new file mode 100644 index 0000000000000000000000000000000000000000..3eacc86df29e6b50b60860f1bb08d6ccb0030443 GIT binary patch literal 1807 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6|34fhjJ)C&U$~Kxpm%Q8XF? zR1X1Q(mEp;E()Yhlmz(&Gl+zAZMydK!@Gy)S2ntG3Fe;oySmg@Q;J{CAgpfJ&#jT{ zk`um6GG}7*TK1firTlX(w_@)Dzti#_8<+6D@4TfJ`>WuUY4ktKL|rHA%x4PHuggv{ z9;}`xEc9ECM`eLn#{PsK)3a?4dH>n0bYYwS299H*d)5R8*{Cvq~B~wVME7?89P|^FPXBXXU&{F zO-gc4y-sPZ%6fG|NorQqEhQ_9DX(9>l$J>1l9rr3BPldLWm#6=T@`L`?QESzW=cEm zW@V@M>pgjpajJpc!gBWlt{uB}KIXUMFY`}XH+_ydGvkBDuiGE|U^fs9I)6YwVhLk1 zTYHO8*!cqsa=6RmC6?t>u(VAmO%Z7k?3H8UG2AGl?)O9L_(IO(>JAyUX(pXVRAxUB zVbryJ9%9mIvZ0~PEQ)1$dP>vX$y3kjwP`J$z^qjKIl%R^FV}*Dfh%HLw3h0zaNT+& z6ms#BaH_$w1D!=7mT3u}R<2m%B)W!=qs{PWwn^aApvw{xS6D9AghjVoYl%$$B>77E zf~m=)YX=Uf9$j#!Md^~v)k9aiSZ*~1F4-y~5#chCRpPe)f=0e6I=62gy%5o+bD>sg z=W=n*jBj&axK4ZjD&>W{=W}7TMOKZ9&yJ|1=v_FTHaXCwVA0PYrqIJ8$!&J}I#SF0 zk~!w-HMutP@H@X%(UID8Hz;k+j850XYed>^-i zljO|oH*^{w*~yxmHKX3Ctnq@A4{x^^Gv}0o)~p8;u0|%Aiw7SLny{Z|T4GkmiiCs* z#z(Fw@O$lbJCQeQgN&{m*F;mDq|2;3fZIo@mOkFA(t!ummiX*q3frfD>HZl9mWW+TC6C>)YUcQwTXb7s z&Rc7aRr&KKG#xqp{|6u)k&hcrzPrynJv=6}AfdaT zkJ&EZV0A%vz_*3H$4<3dznRphbNiSB%L)6coLf_tJ%0IgSA+^98^_JBD?*G*fC*o< z#5JNMC9x#cD!C{XNHG{07@F!DSn3*@gczDw8CzHx7-$=S$aTWzZ%{Pk=BH$)RpQog T->*LasDZ)L)z4*}Q$iB}nCwh> literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-v24/project_detail_cir.png b/app/src/main/res/drawable-v24/project_detail_cir.png new file mode 100644 index 0000000000000000000000000000000000000000..190b6bdb4cc8c6b3e29d09b884e0651c21bc8ae5 GIT binary patch literal 11804 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/content.png b/app/src/main/res/drawable/content.png new file mode 100755 index 0000000000000000000000000000000000000000..f319179a1655ef07a5799afaefead2c3bd3faeaa GIT binary patch literal 13438 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 H_3Qry_gbg{ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_close.png b/app/src/main/res/drawable/ic_close.png new file mode 100755 index 0000000000000000000000000000000000000000..187a57e0f9f77af504ddf7546d033bb70fe949e7 GIT binary patch literal 324 zcmV-K0lWT*P))h=%=P`WN(kSQsI>5}*1wMv(zRwYmg zR08J&T5B(=$GKyB11vaf)5;VPtyCYXHbSmJge)^IQEgZflzJL(sxJuRu=mS!_)}&WOseD0 zxi^B(-!o${l``{WfuDZfYRfLnV4G0=N^PBK$4G5|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCikDJzX3_ zA~@ep3*;39NR{c8ka9(Zy1^12N z_6O$Q%xqgA zWM1$={}h~qS0GC_4@QATi_Qv5c%%cr(qbrHnG?n);^K^TgEjC5G+yXb5$leFKKDNUUGZJ^Oe z%k`Q=X;sx|kG)7H3C^71H_en+*R>RKax~;LWev-*T3$LXLj#5>M>}g+j@9zgaT&Td z%*mRHwhNbV+$dG>=VN9SGbq8Yp}{d`>v1VHX4jWu5-2tz=w4~?2HH#HA6 zxhOT{4?LMlh$hL~QWEVm81&)&n1fJ1uwN>F;N>JDb5a>=hR3j;l%H!H!6{(xCwYnd z^yEJ?0(!wXr~zx9$M6ayUfj712?@~!AQxqp5HlJFbb4|da1jx#f_;5MN-KM&4&+eS z5bp1qimEk(a04{K6KH{Jumfb-zBVxZ_y_!rDOUwuV;JgjnA($ZSAHR5|JjsO#>OrW z9k0~CG$oa>v0ljDNqPxRWTUI8&Muppj7-Tr*||NWX3Dm#Kv5O=1lH9+;`D-M4FCWD M07*qoM6N<$g1ti$6#xJL literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/radius_drawable_bg.xml b/app/src/main/res/drawable/radius_drawable_bg.xml new file mode 100644 index 0000000..0e65c78 --- /dev/null +++ b/app/src/main/res/drawable/radius_drawable_bg.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/res/drawable/rotate_layout_bg.xml b/app/src/main/res/drawable/rotate_layout_bg.xml new file mode 100644 index 0000000..4d9e7ef --- /dev/null +++ b/app/src/main/res/drawable/rotate_layout_bg.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/text_bg.xml b/app/src/main/res/drawable/text_bg.xml new file mode 100644 index 0000000..d79e687 --- /dev/null +++ b/app/src/main/res/drawable/text_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index f6ccd2d..950e732 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -1,91 +1,78 @@ - - + android:background="#7adfb8" + tools:context=".LoginActivity" > + + + android:layout_below="@+id/main_title" + android:orientation="vertical" > + + - + android:layout_marginTop="5dip" + android:gravity="center" + android:text="FIREFLY FOREST" + android:textColor="#ffffff" + android:textSize="24sp" /> - - - - + android:gravity="center" + android:text="SHOW YOUR IDEAS" + android:textColor="#ffffff" + android:textSize="16sp" /> -