diff --git a/app/build.gradle b/app/build.gradle index 85f58fa..b5469e8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,4 +48,5 @@ implementation "com.squareup.retrofit2:retrofit:2.5.0" implementation 'com.squareup.retrofit2:converter-jackson:2.5.0' implementation 'com.squareup.retrofit2:converter-scalars:2.1.0' + implementation 'com.github.bumptech.glide:glide:3.6.1' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2e9fb9e..f34e315 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,23 +12,23 @@ android:supportsRtl="true" android:theme="@style/Theme.Acanthus" android:usesCleartextTraffic="true"> - + - - - + + + - - + + \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenActivity.java index e3afb6c..9bf96e2 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenActivity.java @@ -44,6 +44,8 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(); + //Acanthus acanthus = (Acanthus) getApplication(); + //loginScreenViewModel.LoginToken(acanthus,acanthus.getEmail(),acanthus.getPassword()); } //----------------------------------------------------------------- diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenViewModel.java index 3457cb4..b07115b 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenViewModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenViewModel.java @@ -54,7 +54,31 @@ @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) - setVariableFromResponse(acanthus, response.body().getToken()); + setVariableFromResponse(acanthus, response.body().getToken(),emailAddress,password); + } + + @Override + public void onFailure(Call call, Throwable t) { + } + }); + } + public void LoginToken(Acanthus acanthus, String emailForm, String passwordForm) { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + final AccountsRest accountsRest = retrofit.create(AccountsRest.class); + + String emailAddress = emailForm; + String password = passwordForm; + + // ログイン + Call call = accountsRest.issueLoginToken(emailAddress, password); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) + setVariableFromResponse(acanthus, response.body().getToken(),emailAddress,password); } @Override @@ -66,8 +90,10 @@ //----------------------------------------------------------------- //----------------------------------------------------------------- // ログイン成功時に値の変更を行う - private void setVariableFromResponse(Acanthus acanthus, String token) { + private void setVariableFromResponse(Acanthus acanthus, String token, String email,String password ) { acanthus.setToken(token); + acanthus.setEmail(email); + acanthus.setPassword(password); acanthusMutableLiveData.setValue(acanthus); } //----------------------------------------------------------------- diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/title/TitleActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/title/TitleActivity.java new file mode 100644 index 0000000..1c15f20 --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/title/TitleActivity.java @@ -0,0 +1,101 @@ +package org.ntlab.acanthus_client.views.title; + +import androidx.annotation.RequiresApi; +import androidx.appcompat.app.AppCompatActivity; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import android.animation.ObjectAnimator; +import android.content.Intent; +import android.graphics.ImageDecoder; +import android.graphics.drawable.AnimatedImageDrawable; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.view.View; +import android.view.animation.AlphaAnimation; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.widget.ImageView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.target.GlideDrawableImageViewTarget; + +import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.R; +import org.ntlab.acanthus_client.databinding.ActivityTitleBinding; +import org.ntlab.acanthus_client.views.MainActivity; +import org.ntlab.acanthus_client.views.login.LoginScreenViewModel; +import org.ntlab.acanthus_client.views.sign_up.SignUpActivity; + +import static java.lang.Thread.sleep; + +public class TitleActivity extends AppCompatActivity { + private TitleViewModel titleViewModel; + private ActivityTitleBinding binding; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setTheme(R.style.AppTheme_NoTitleBar);//タイトルバーを消す + setContentView(R.layout.activity_title); + //ここに画像処理を記載する + /* + ImageView imageView = (ImageView) findViewById(R.id.gifImage); + GlideDrawableImageViewTarget target = new GlideDrawableImageViewTarget(imageView); + Glide.with(this).load(R.drawable.load).into(target); + + */ + + init(); + HandlerTest(); + } + //////////////////////////////////////////////////////////////////// + public void HandlerTest() { + Handler handler = new Handler(); + Runnable runnable = new Runnable() { + @Override + public void run() { + Acanthus acanthus = (Acanthus) getApplication(); + titleViewModel.LoginToken(acanthus,acanthus.getEmail(),acanthus.getPassword()); + } + }; + handler.postDelayed( runnable, 5000 ); + } + ///////////////////////////////////////////////////////////// + private void init() { + binding = ActivityTitleBinding.inflate(getLayoutInflater()); + startObserve(); + falseLoginOvserve(); + } + // VMの監視開始 + //3秒間の画面表示 + private void startObserve() { + titleViewModel = new ViewModelProvider(this).get(TitleViewModel.class); + titleViewModel.getAcanthus().observe(this, new Observer() { + @Override + public void onChanged(Acanthus acanthus) { + succeedLogin(); + } + }); + } + private void falseLoginOvserve(){ + titleViewModel = new ViewModelProvider(this).get(TitleViewModel.class); + titleViewModel.getLoginstatus().observe(this, new Observer() { + @Override + public void onChanged(Boolean loginstatus) { + falseLogin(); + } + }); + } + + private void succeedLogin() { transitionActivity(new MainActivity()); } + private void falseLogin(){transitionActivity(new SignUpActivity());} + private void transitionActivity(AppCompatActivity appCompatActivity) { + Intent intent = new Intent(getApplication(), appCompatActivity.getClass()); + startActivity(intent); + finish(); + } + + +} \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/title/TitleViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/title/TitleViewModel.java new file mode 100644 index 0000000..c6942fd --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/title/TitleViewModel.java @@ -0,0 +1,84 @@ +package org.ntlab.acanthus_client.views.title; + +import android.os.Handler; +import android.view.View; +import android.view.animation.AlphaAnimation; +import android.widget.ImageView; + +import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.entities.AccountTokenJson; +import org.ntlab.acanthus_client.resources.accounts.AccountsRest; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +import static java.lang.Thread.sleep; + +public class TitleViewModel extends ViewModel { + private MutableLiveData acanthusMutableLiveData; + private MutableLiveData loginstatus; + public TitleViewModel() { + this.acanthusMutableLiveData = new MutableLiveData<>(); + this.loginstatus = new MutableLiveData<>(); + } + + //----------------------------------------------------------------- + // getter + public LiveData getAcanthus() { + return this.acanthusMutableLiveData; + } + public LiveData getLoginstatus(){return this.loginstatus;} + + + public void LoginToken(Acanthus acanthus, String emailForm, String passwordForm) { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + final AccountsRest accountsRest = retrofit.create(AccountsRest.class); + + String emailAddress = emailForm; + String password = passwordForm; + + // ログイン + Call call = accountsRest.issueLoginToken(emailAddress, password); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + if(response.body()!=null){ + setVariableFromResponse(acanthus, response.body().getToken(), emailAddress, password); + }else{ + loginstatus.setValue(false); + } + }else{ + loginstatus.setValue(false); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + loginstatus.setValue(false); + } + }); + } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // ログイン成功時に値の変更を行う + private void setVariableFromResponse(Acanthus acanthus, String token, String email,String password ) { + acanthus.setToken(token); + acanthus.setEmail(email); + acanthus.setPassword(password); + acanthusMutableLiveData.setValue(acanthus); + } + //----------------------------------------------------------------- + //----------------------------------------------------------------- + //Animationの追加を行う +} diff --git a/app/src/main/res/anim/alpha_fadein.xml b/app/src/main/res/anim/alpha_fadein.xml new file mode 100644 index 0000000..916f792 --- /dev/null +++ b/app/src/main/res/anim/alpha_fadein.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/app/src/main/res/anim/alpha_fadeout.xml b/app/src/main/res/anim/alpha_fadeout.xml new file mode 100644 index 0000000..a1d40b7 --- /dev/null +++ b/app/src/main/res/anim/alpha_fadeout.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/app/src/main/res/drawable/background.jpeg b/app/src/main/res/drawable/background.jpeg new file mode 100644 index 0000000..09fb4f5 --- /dev/null +++ b/app/src/main/res/drawable/background.jpeg Binary files differ diff --git a/app/src/main/res/drawable/load.gif b/app/src/main/res/drawable/load.gif new file mode 100644 index 0000000..7a880b3 --- /dev/null +++ b/app/src/main/res/drawable/load.gif Binary files differ diff --git a/app/src/main/res/drawable/title.jpg b/app/src/main/res/drawable/title.jpg new file mode 100644 index 0000000..e77fa87 --- /dev/null +++ b/app/src/main/res/drawable/title.jpg Binary files differ diff --git a/app/src/main/res/img/title.jpg b/app/src/main/res/img/title.jpg new file mode 100644 index 0000000..e77fa87 --- /dev/null +++ b/app/src/main/res/img/title.jpg Binary files differ diff --git a/app/src/main/res/layout/activity_title.xml b/app/src/main/res/layout/activity_title.xml new file mode 100644 index 0000000..4780b3d --- /dev/null +++ b/app/src/main/res/layout/activity_title.xml @@ -0,0 +1,41 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index f3a3e43..ff446c8 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -12,5 +12,7 @@ ?attr/colorPrimaryVariant + + +