diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0fbac27..7215bfc 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -35,6 +35,7 @@ } dependencies { + implementation("com.github.bumptech.glide:glide:4.16.0") implementation(libs.appcompat) implementation(libs.material) implementation(libs.activity) diff --git a/app/src/main/java/com/example/tampopo_client/views/FriendIconView.java b/app/src/main/java/com/example/tampopo_client/views/FriendIconView.java index e4ed758..93b6087 100644 --- a/app/src/main/java/com/example/tampopo_client/views/FriendIconView.java +++ b/app/src/main/java/com/example/tampopo_client/views/FriendIconView.java @@ -19,13 +19,22 @@ import android.widget.ImageView; import android.widget.TextView; +import androidx.activity.EdgeToEdge; +import androidx.lifecycle.Observer; + +import com.bumptech.glide.Glide; import com.example.tampopo_client.R; +import com.example.tampopo_client.models.Activity; +import com.example.tampopo_client.viewmodels.ActivityViewModel; import com.google.android.material.imageview.ShapeableImageView; +import java.util.List; +import java.util.Map; + /** * TODO: document your custom view class. */ -public class FriendIconView extends FrameLayout { +public class FriendIconView extends FrameLayout implements Observer>{ private String mExampleString; // TODO: use a default from R.string... // private int mExampleColor = Color.RED; // TODO: use a default from R.color... private float mExampleDimension = 0; // TODO: use a default from R.dimen... @@ -40,7 +49,8 @@ private TextView mFriendNickname; private ImageView mFriendChatNotification; private boolean chatNotification = false; - + private Observer> activityObserver; + String friendActivity = "123"; public FriendIconView(Context context) { super(context); init(null, 0); @@ -137,6 +147,9 @@ } } + public ImageView getImageView(){ + return mFriendIcon; + } public void setComment(String comment){ if(mFriendComment != null){ int comment_length = comment.length(); @@ -151,7 +164,31 @@ } } +// public void setActivityLiveDataObserver(String uid, ActivityViewModel viewModel){ +// activityObserver = new Observer>() { + @Override + public void onChanged(List activityList) { + if(activityList != null && !activityList.isEmpty()){ + Activity act = activityList.get(0); + friendActivity = act.getText(); + setAccount(act.getUserId()); + } + } +// }; +// viewModel.getActivitiesLiveDataFromUserId(uid).observeForever(activityObserver); +// } + + //uidを引数にカスタムビューにニックネーム,コメント,アイコンをセットする + public void setAccount(String uid){ + setNickname("haru"); + setComment((friendActivity)); + String imageUrl = "http://nitta-lab-www.is.konan-u.ac.jp/tampopo-data/icon" + uid + ".jpg"; + Glide.with(getContext()) + .load(imageUrl) + .into(getImageView()); + } public void setChatNotification(boolean chat){ + //チャットを終了するときのonclickで一緒にsetChatNotification(false)もする(アイコン周りの赤丸を消す) //true(チャット通知が来た時)なら表示 if(chat){ mFriendChatNotification.setVisibility(View.VISIBLE); @@ -276,4 +313,9 @@ public void setExampleDrawable(Drawable exampleDrawable) { mExampleDrawable = exampleDrawable; } -} \ No newline at end of file + +// @Override +// public void onChanged(List activityList) { +// activityList.get(0). +// } +} diff --git a/app/src/main/java/com/example/tampopo_client/views/TestFriendIconActivity.java b/app/src/main/java/com/example/tampopo_client/views/TestFriendIconActivity.java index 0c1facf..b70cc11 100644 --- a/app/src/main/java/com/example/tampopo_client/views/TestFriendIconActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/TestFriendIconActivity.java @@ -1,7 +1,10 @@ package com.example.tampopo_client.views; import android.os.Bundle; +import android.view.ViewGroup; +import android.widget.FrameLayout; import android.widget.ImageButton; +import android.widget.LinearLayout; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; @@ -9,19 +12,67 @@ import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; +import com.bumptech.glide.Glide; import com.example.tampopo_client.R; +import com.example.tampopo_client.Tampopo; public class TestFriendIconActivity extends AppCompatActivity { + Tampopo tampopo; @Override protected void onCreate(Bundle savedInstanceState) { + tampopo = (Tampopo) getApplication(); super.onCreate(savedInstanceState); - EdgeToEdge.enable(this); - setContentView(R.layout.activity_test_friend_icon); - FriendIconView friendIconView = findViewById(R.id.friendIconView); - friendIconView.setNickname("nitta"); - friendIconView.setImageResource(R.drawable.friend01_icon); - friendIconView.setComment(("kjrig")); +// EdgeToEdge.enable(this); +// setContentView(R.layout.activity_test_friend_icon); +// String uid = tampopo.getUserId(); + + // ルートレイアウトを FrameLayout に(自由配置できる) + FrameLayout rootLayout = new FrameLayout(this); + // 画面密度取得(dp → px 換算用) + float density = getResources().getDisplayMetrics().density; + + //FriendIconView 1個目 + FriendIconView view1 = new FriendIconView(this); + FrameLayout.LayoutParams params1 = new FrameLayout.LayoutParams( + (int) (160*density), // width in px + (int) (100*density) // height in px + ); + view1.setLayoutParams(params1); + view1.setX(100); // px単位 + view1.setY(150); + rootLayout.addView(view1); + + //FriendIconView 2個目 + FriendIconView view2 = new FriendIconView(this); + FrameLayout.LayoutParams params2 = new FrameLayout.LayoutParams( + (int) (160*density), + (int) (100*density) + ); + view1.setLayoutParams(params2); + view1.setX(100); + view1.setY(150); + rootLayout.addView(view1); + + setContentView(rootLayout); +// +// FriendIconView friendIconView = new FriendIconView(this); +// uid = "test0"; + +// FriendIconView friendIconView = findViewById(R.id.friendIconView); +// friendIconView.setAccount(uid); +// +// //xmlで複製後uidを設定するとそのアカウントのニックネーム,コメント,アイコンが表示される +// uid = "test1"; +// FriendIconView friendIconView2 = findViewById(R.id.friendIconView2); +// friendIconView2.setAccount(uid); + +// friendIconView.setNickname("nitta"); +// friendIconView.setComment(("kjrig")); +// Glide.with(TestFriendIconActivity.this) +// .load("http://nitta-lab-www.is.konan-u.ac.jp/tampopo-data/icon" + uid + ".jpg") +// .into(friendIconView.getImageView()); + //friendIconView.setImageResource(Integer.parseInt("http://nitta-lab-www.is.konan-u.ac.jp/tampopo-data/icontest.jpg")); // ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { // Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); // v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 09733ae..d02c831 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -55,9 +55,9 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/sample_friend_icon_view.xml b/app/src/main/res/layout/sample_friend_icon_view.xml index 7270a3e..365d56c 100644 --- a/app/src/main/res/layout/sample_friend_icon_view.xml +++ b/app/src/main/res/layout/sample_friend_icon_view.xml @@ -49,11 +49,11 @@ android:layout_gravity="center_horizontal"> \ No newline at end of file