diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ea80c92..0e91255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,11 +14,8 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - - - - + 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..d7ab6a6 --- /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 deleted file mode 100644 index a9c9b17..0000000 --- a/app/src/main/java/com/example/PersonalCenter/Login.java +++ /dev/null @@ -1,27 +0,0 @@ -//package com.example.PersonalCenter; -// -//import android.util.Log; -// -//public class Login { -// -// private String password; -// private String phonenumber; -// public Login(String phonenumber,String password){ -// -// this.password = password; -// this.phonenumber = phonenumber; -// -// } -// public String connUser(){ -// String infoString = WebServiceGet.executeHttpGet(phonenumber,password,"/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/Login_Register/LoginActivity.java b/app/src/main/java/com/example/PersonalCenter/Login_Register/LoginActivity.java new file mode 100644 index 0000000..46b432c --- /dev/null +++ b/app/src/main/java/com/example/PersonalCenter/Login_Register/LoginActivity.java @@ -0,0 +1,252 @@ +package com.example.PersonalCenter.Login_Register; + +import android.animation.Animator; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.animation.PropertyValuesHolder; +import android.animation.ValueAnimator; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.view.View; +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.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + + +import com.example.PersonalCenter.JellyInterpolator; +import com.example.Util.ReturnData; +import com.example.Util.User; +import com.example.Util.cmkgWebServiceGet; +import com.example.Util.publicStringUtil; +import com.example.cmknowledgegraph.R; + +import java.lang.ref.WeakReference; + + +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; + + private final LoginHandler loginHandler = new LoginHandler(this); +//静态内部类,防止内存泄漏 + public static class LoginHandler extends Handler{ + private final WeakReference weakReference; + LoginHandler(LoginActivity activity){ + this.weakReference = new WeakReference(activity); + } + + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + LoginActivity loginActivity = (LoginActivity) weakReference.get(); + Bundle bundle = msg.getData(); + ReturnData messageJSON = (ReturnData) bundle.getSerializable("msg"); + + String ReturnUsername = (String) messageJSON.getData(); + User.setLogin(true); + User.getUser().setUsername(ReturnUsername); + try { + Thread.sleep(300); + loginActivity.finish(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + } + } + + + + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + requestWindowFeature(Window.FEATURE_NO_TITLE); + setContentView(R.layout.activity_login); + + initView(); + + } + 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); + //给登录设置监听 + + //给登陆功能设置设置监听 + mBtnLogin.setOnClickListener(this); + } + + + @Override + public void onClick(View v) { + //异步处理消息请求 + + 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) mPsw.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 = passwordEditText.getText().toString(); + if(phonenumber.length()!=11){ + Toast.makeText(this,"请输入11位电话号码",Toast.LENGTH_SHORT).show(); + }else { +// 基本没错误,就要请求登陆了 + + new Thread(new Runnable() { + @Override + public void run() { + String argslogin = "phonenumber="+phonenumber+"&password="+password; + ReturnData retuData = cmkgWebServiceGet.executeHttpGet(argslogin, publicStringUtil.loginURL); + Log.i("returndat--", "-----" + retuData); + Message m = new Message(); + Bundle b = new Bundle(); + b.putSerializable("msg",retuData); + m.setData(b); + loginHandler.sendMessage(m); + } + }).start(); + } + + } + + + + 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); + } + }); + + 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 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(); + } + + + + + +} diff --git a/app/src/main/java/com/example/cmknowledgegraph/PersonContent.java b/app/src/main/java/com/example/PersonalCenter/PersonContent.java similarity index 77% rename from app/src/main/java/com/example/cmknowledgegraph/PersonContent.java rename to app/src/main/java/com/example/PersonalCenter/PersonContent.java index 82ea5eb..a0b0178 100644 --- a/app/src/main/java/com/example/cmknowledgegraph/PersonContent.java +++ b/app/src/main/java/com/example/PersonalCenter/PersonContent.java @@ -1,4 +1,4 @@ -package com.example.cmknowledgegraph; +package com.example.PersonalCenter; import android.content.Intent; import android.os.Bundle; @@ -6,10 +6,13 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; -import android.widget.ImageButton; import androidx.fragment.app.Fragment; +import com.example.PersonalCenter.Login_Register.LoginActivity; +import com.example.Util.User; +import com.example.cmknowledgegraph.R; + public class PersonContent extends Fragment { @@ -26,9 +29,9 @@ public class PersonContent extends Fragment { login_pc_btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //跳转到LoginActivity - if(!LoginActivity.isLogin){ + if(!User.isLogin){ Intent intent=new Intent(); - intent.setClass(getActivity(),LoginActivity.class); + intent.setClass(getActivity(), LoginActivity.class); startActivity(intent); } } @@ -38,9 +41,9 @@ public class PersonContent extends Fragment { @Override public void onResume() { super.onResume(); - if(LoginActivity.isLogin){ + if(User.isLogin){ Button longin_pc_btn=(Button) getActivity().findViewById(R.id.login_pc_button); - longin_pc_btn.setText("Hello"+LoginActivity.username); + longin_pc_btn.setText("Hello"+User.getUser().getUsername()); } //高血压 diff --git a/app/src/main/java/com/example/PersonalCenter/Register.java b/app/src/main/java/com/example/PersonalCenter/Register.java deleted file mode 100644 index 475449f..0000000 --- a/app/src/main/java/com/example/PersonalCenter/Register.java +++ /dev/null @@ -1,20 +0,0 @@ -//package com.example.PersonalCenter; -// -//public class Register { -// String phonenumber; -// String username; -// String password; -// public Register(String phonenumber, String username, String password){ -// this.phonenumber = phonenumber; -// this.username = username; -// this.password = password; -// } -// public boolean regist(){ -// String regRet = WebServicePost.execuHttpPost(username, phonenumber, password,"/Register"); -// if(regRet.equals("true")){ -// return true; -// }else { -// return false; -// } -// } -//} diff --git a/app/src/main/java/com/example/PersonalCenter/Search.java b/app/src/main/java/com/example/PersonalCenter/Search.java deleted file mode 100644 index 4279c59..0000000 --- a/app/src/main/java/com/example/PersonalCenter/Search.java +++ /dev/null @@ -1,47 +0,0 @@ -//package com.example.PersonalCenter; -// -//import android.util.Log; -// -//import com.hankcs.hanlp.HanLP; -// -//import java.lang.reflect.Array; -//import java.util.ArrayList; -//import java.util.HashSet; -//import java.util.List; -//import java.util.Set; -// -//public class Search { -// public String sickname; -// public Search(String sickname){ -// this.sickname = sickname; -// } -// -// public List> search(){ -// Log.i("search","sick执行了"); -// //找出对应的8个关键字 -// List keywordList = HanLP.extractKeyword(sickname,8); -// -// //针对每一个sickname来查找一下能不能够找到相应的名字 -// Set mediciesSet = new HashSet(); -// Set reasonsSet = new HashSet(); -// for(String i: keywordList){ -// Log.i("关键词提取",i+"ha"); -// String resq = SearchServiceGet.executeSearchGet(i,"/Search"); -// String resq="dd"; -// if(!resq.equals("fail")) { -// String[] me_rea = resq.split("-"); -// String[] medicines = me_rea[0].split("\\|"); -// for(String j: medicines) mediciesSet.add(j); -// String[] reasons = me_rea[1].split("\\|"); -// for(String j: reasons) reasonsSet.add(j); -// -// } -// } -// List> a = new ArrayList>(); -// a.add(mediciesSet); -// a.add(reasonsSet); -// return a; -// -// -// } -//} diff --git a/app/src/main/java/com/example/PersonalCenter/SearchServiceGet.java b/app/src/main/java/com/example/PersonalCenter/SearchServiceGet.java deleted file mode 100644 index 01438c5..0000000 --- a/app/src/main/java/com/example/PersonalCenter/SearchServiceGet.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.example.PersonalCenter; - -import android.util.Log; - -import org.json.JSONException; -import org.json.JSONObject; - -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.ProtocolException; -import java.net.URL; -import java.util.ArrayList; - -public class SearchServiceGet { - - public static ArrayList content=new ArrayList();//存储数据内容 - public static String name_back; - public static boolean SearchSuccess=false; - public static int code; - - public static void executeSearchGet(String name){ - HttpURLConnection connection = null; - InputStream in = null; - - String address="/rest/cmkg/question/hello"; - - String Url = "http://114.116.199.154:5000/cmkg"+address; - String path = Url + "?name="+name; - URL url = null; - try { - url = new URL(path); - connection = (HttpURLConnection)url.openConnection(); - connection.setRequestMethod("GET"); - connection.setConnectTimeout(100000);//建立连接超时 - connection.setReadTimeout(80000);//传输数据超时 - in = connection.getInputStream(); - - BufferedReader reader = null;//输入流 - String line = "";//读取返回的每一行 - StringBuilder response = new StringBuilder(); - try { - reader = new BufferedReader(new InputStreamReader(in)); - while((line = reader.readLine()) != null) { - response.append(line); - } - //这时候response就是一个连续字符串了吧 - Log.i("response+++++",response+"返回值"); - System.out.println(response.toString()); - - //开始解析返回的数据 -// JSONObject jo=JSONObject.fromObject(response.toString()); - org.json.JSONObject jo = null; - try { - jo = new org.json.JSONObject(response.toString()); - } catch (JSONException e) { - e.printStackTrace(); - } - try { - code=jo.getInt("code"); - } catch (JSONException e) { - e.printStackTrace(); - } - System.out.println("code="+code); - if(code!=0){ //查询成功,在开始解析数据 - System.out.println("code==@@@@@@@@@@20"+code); - try { - name_back=jo.getString("msg");//查询的主语 - } catch (JSONException e) { - e.printStackTrace(); - } - //把data看作一个JSONObject,无论里面由多少元素,都转换为JSONArray,存在数组里 - JSONObject jo_data= null; - - try { - jo_data = jo.getJSONObject("data"); - if(jo_data==null) System.out.println(("jo_data==null")); - else System.out.println("jo_data!=null"); - } catch (JSONException e) { - e.printStackTrace(); - } -// JSONArray data_arr=new JSONArray(); - ArrayList datas=new ArrayList(); - try { - -// jo_data.toJSONArray(data_arr); - datas.add(jo_data.toString()); -// data_arr=jo.getJSONArray("data"); -// System.out.println("data_arr======"+data_arr.length()); - } catch (Exception e) { - e.printStackTrace(); - } - //遍历data_arr,把里面的数据放入ArrayList content里 - for(int i=0;i + + + + + 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..2cb383b --- /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..fc9a19e --- /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..afc46cd 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -1,91 +1,79 @@ - - + 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" /> -