diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0ff4bd5..7bee9cc 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,7 +1,8 @@
-
+
+
-
-
-
-
-
+
+
+
-
-
-
+
+
-
-
-
-
-
+
+
+
-
+
\ No newline at end of file
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
new file mode 100644
index 0000000..c038a2d
--- /dev/null
+++ b/app/src/main/java/com/example/tampopo_client/views/FriendIconView.java
@@ -0,0 +1,279 @@
+package com.example.tampopo_client.views;
+
+import static androidx.core.content.ContextCompat.startActivity;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.drawable.Drawable;
+import android.text.TextPaint;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.example.tampopo_client.R;
+import com.google.android.material.imageview.ShapeableImageView;
+
+/**
+ * TODO: document your custom view class.
+ */
+public class FriendIconView extends FrameLayout {
+ 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...
+ private Drawable mExampleDrawable;
+
+ private TextPaint mTextPaint;
+ private float mTextWidth;
+ private float mTextHeight;
+ private ShapeableImageView mFriendIcon;
+ private ImageView mFriendCommentImage;
+ private TextView mFriendComment;
+ private TextView mFriendNickname;
+ private ImageView mFriendChatNotification;
+ private boolean chatNotification = false;
+
+ public FriendIconView(Context context) {
+ super(context);
+ init(null, 0);
+ }
+
+ public FriendIconView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init(attrs, 0);
+ }
+
+ public FriendIconView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ init(attrs, defStyle);
+ }
+
+ private void init(AttributeSet attrs, int defStyle) {
+ LayoutInflater.from(getContext()).inflate(R.layout.sample_friend_icon_view,this,true);
+ mFriendCommentImage = findViewById(R.id.friend_comment_image);
+ mFriendComment = findViewById(R.id.friend_comment);
+ mFriendNickname = findViewById(R.id.friend_nickname);
+ mFriendIcon = findViewById(R.id.friend_icon);
+ mFriendChatNotification = findViewById(R.id.chat_notification);
+
+ //true(チャット通知が来た時)なら表示
+ if(chatNotification){
+ mFriendChatNotification.setVisibility(View.VISIBLE);
+ }
+ //false(チャット通知が来ていない)なら非表示
+ else{
+ mFriendChatNotification.setVisibility(View.GONE);
+ }
+
+ //iconを押したらチャットを始めることができる(チャットのダイアログができたらFriendActivityを変更)
+ mFriendIcon.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ Context ctx = getContext();
+ Intent intent = new Intent(ctx, FriendActivity. class);
+ ctx.startActivity(intent);
+ }
+ });
+// if(attrs != null){
+// TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.FriendIconView, defStyle, 0);
+// String nickname = a.getString(R.styleable.FriendIconView_nickname);
+// if(nickname != null){
+// setNickname(nickname);
+// }
+// Drawable iconDrawable = a.getDrawable(R.styleable.FriendIconView_iconSrc);
+// if(iconDrawable != null){
+// mFriendIcon.setImageDrawable(iconDrawable);
+// }
+// a.recycle();
+// }
+
+ // Load attributes
+// final TypedArray a = getContext().obtainStyledAttributes(
+// attrs, R.styleable.FriendIconView, defStyle, 0);
+//
+// mExampleString = a.getString(
+// R.styleable.FriendIconView_exampleString);
+// mExampleColor = a.getColor(
+// R.styleable.FriendIconView_exampleColor,
+// mExampleColor);
+// // Use getDimensionPixelSize or getDimensionPixelOffset when dealing with
+// // values that should fall on pixel boundaries.
+// mExampleDimension = a.getDimension(
+// R.styleable.FriendIconView_exampleDimension,
+// mExampleDimension);
+//
+// if (a.hasValue(R.styleable.FriendIconView_exampleDrawable)) {
+// mExampleDrawable = a.getDrawable(
+// R.styleable.FriendIconView_exampleDrawable);
+// mExampleDrawable.setCallback(this);
+// }
+
+// // Set up a default TextPaint object
+// mTextPaint = new TextPaint();
+// mTextPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
+// mTextPaint.setTextAlign(Paint.Align.LEFT);
+//
+// // Update TextPaint and text measurements from attributes
+// invalidateTextPaintAndMeasurements();
+//
+ }
+
+ public void setNickname(String nickname) {
+ if (mFriendNickname != null) {
+ mFriendNickname.setText(nickname);
+ }
+ }
+
+ public void setImageResource(int resId) {
+ if (mFriendIcon != null) {
+ mFriendIcon.setImageResource(resId);
+ }
+ }
+
+ public void setComment(String comment){
+ if(mFriendComment != null){
+ int comment_length = comment.length();
+ if (comment_length > 20) {
+ mFriendComment.setTextSize(7);
+ } else if (comment_length > 10) {
+ mFriendComment.setTextSize(10);
+ } else {
+ mFriendComment.setTextSize(12);
+ }
+ mFriendComment.setText(comment);
+ }
+ }
+
+ public void setChatNotification(boolean chat){
+ //true(チャット通知が来た時)なら表示
+ if(chat){
+ mFriendChatNotification.setVisibility(View.VISIBLE);
+ }
+ //false(チャット通知が来ていない)なら非表示
+ else{
+ mFriendChatNotification.setVisibility(View.GONE);
+ }
+ }
+// private void invalidateTextPaintAndMeasurements() {
+// mTextPaint.setTextSize(mExampleDimension);
+// mTextPaint.setColor(mExampleColor);
+// mTextWidth = mTextPaint.measureText(mExampleString);
+//
+// Paint.FontMetrics fontMetrics = mTextPaint.getFontMetrics();
+// mTextHeight = fontMetrics.bottom;
+// }
+
+// @Override
+// protected void onDraw(Canvas canvas) {
+// super.onDraw(canvas);
+//
+// // TODO: consider storing these as member variables to reduce
+// // allocations per draw cycle.
+// int paddingLeft = getPaddingLeft();
+// int paddingTop = getPaddingTop();
+// int paddingRight = getPaddingRight();
+// int paddingBottom = getPaddingBottom();
+//
+// int contentWidth = getWidth() - paddingLeft - paddingRight;
+// int contentHeight = getHeight() - paddingTop - paddingBottom;
+//
+// // Draw the text.
+// canvas.drawText(mExampleString,
+// paddingLeft + (contentWidth - mTextWidth) / 2,
+// paddingTop + (contentHeight + mTextHeight) / 2,
+// mTextPaint);
+//
+// // Draw the example drawable on top of the text.
+// if (mExampleDrawable != null) {
+// mExampleDrawable.setBounds(paddingLeft, paddingTop,
+// paddingLeft + contentWidth, paddingTop + contentHeight);
+// mExampleDrawable.draw(canvas);
+// }
+// }
+
+ /**
+ * Gets the example string attribute value.
+ *
+ * @return The example string attribute value.
+ */
+ public String getExampleString() {
+ return mExampleString;
+ }
+
+ /**
+ * Sets the view"s example string attribute value. In the example view, this string
+ * is the text to draw.
+ *
+ * @param exampleString The example string attribute value to use.
+ */
+// public void setExampleString(String exampleString) {
+// mExampleString = exampleString;
+// invalidateTextPaintAndMeasurements();
+// }
+
+ /**
+ * Gets the example color attribute value.
+ *
+ * @return The example color attribute value.
+ */
+// public int getExampleColor() {
+// return mExampleColor;
+// }
+
+ /**
+ * Sets the view"s example color attribute value. In the example view, this color
+ * is the font color.
+ *
+ * @param exampleColor The example color attribute value to use.
+ */
+// public void setExampleColor(int exampleColor) {
+// mExampleColor = exampleColor;
+// invalidateTextPaintAndMeasurements();
+// }
+
+ /**
+ * Gets the example dimension attribute value.
+ *
+ * @return The example dimension attribute value.
+ */
+ public float getExampleDimension() {
+ return mExampleDimension;
+ }
+
+ /**
+ * Sets the view"s example dimension attribute value. In the example view, this dimension
+ * is the font size.
+ *
+ * @param exampleDimension The example dimension attribute value to use.
+ */
+// public void setExampleDimension(float exampleDimension) {
+// mExampleDimension = exampleDimension;
+// invalidateTextPaintAndMeasurements();
+// }
+
+ /**
+ * Gets the example drawable attribute value.
+ *
+ * @return The example drawable attribute value.
+ */
+ public Drawable getExampleDrawable() {
+ return mExampleDrawable;
+ }
+
+ /**
+ * Sets the view"s example drawable attribute value. In the example view, this drawable is
+ * drawn above the text.
+ *
+ * @param exampleDrawable The example drawable attribute value to use.
+ */
+ public void setExampleDrawable(Drawable exampleDrawable) {
+ mExampleDrawable = exampleDrawable;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/tampopo_client/views/MainActivity.java b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java
index 984f8b7..c21e92b 100644
--- a/app/src/main/java/com/example/tampopo_client/views/MainActivity.java
+++ b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java
@@ -102,7 +102,7 @@
// ImageButton notificationButton = (ImageButton)findViewById(R.id.notification);
// notificationButton.setOnClickListener(new View.OnClickListener() {
// public void onClick(View v) {
-// Intent intent = new Intent(MainActivity.this,notificationActivity. class);
+// Intent intent = new Intent(MainActivity.this,NotificationActivity. class);
// startActivity(intent);
// }
// });
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
new file mode 100644
index 0000000..0c1facf
--- /dev/null
+++ b/app/src/main/java/com/example/tampopo_client/views/TestFriendIconActivity.java
@@ -0,0 +1,32 @@
+package com.example.tampopo_client.views;
+
+import android.os.Bundle;
+import android.widget.ImageButton;
+
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+
+import com.example.tampopo_client.R;
+
+public class TestFriendIconActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ 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"));
+// 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);
+// return insets;
+// });
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/chat_notification.png b/app/src/main/res/drawable/chat_notification.png
new file mode 100644
index 0000000..47a4549
--- /dev/null
+++ b/app/src/main/res/drawable/chat_notification.png
Binary files differ
diff --git a/app/src/main/res/drawable/circle_button.xml b/app/src/main/res/drawable/circle_button.xml
new file mode 100644
index 0000000..12aed7c
--- /dev/null
+++ b/app/src/main/res/drawable/circle_button.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/friend02_icon.png b/app/src/main/res/drawable/friend02_icon.png
new file mode 100644
index 0000000..5e82c4b
--- /dev/null
+++ b/app/src/main/res/drawable/friend02_icon.png
Binary files differ
diff --git a/app/src/main/res/drawable/friend_icon.png b/app/src/main/res/drawable/friend_icon.png
new file mode 100644
index 0000000..1240e45
--- /dev/null
+++ b/app/src/main/res/drawable/friend_icon.png
Binary files differ
diff --git a/app/src/main/res/drawable/new_png.png b/app/src/main/res/drawable/new_png.png
new file mode 100644
index 0000000..1fe66f3
--- /dev/null
+++ b/app/src/main/res/drawable/new_png.png
Binary files differ
diff --git a/app/src/main/res/layout/activity_test_friend_icon.xml b/app/src/main/res/layout/activity_test_friend_icon.xml
new file mode 100644
index 0000000..fc0f295
--- /dev/null
+++ b/app/src/main/res/layout/activity_test_friend_icon.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..7270a3e
--- /dev/null
+++ b/app/src/main/res/layout/sample_friend_icon_view.xml
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-night/styles.xml b/app/src/main/res/values-night/styles.xml
new file mode 100644
index 0000000..8ed710d
--- /dev/null
+++ b/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/attrs_friend_icon_view.xml b/app/src/main/res/values/attrs_friend_icon_view.xml
new file mode 100644
index 0000000..b9f829d
--- /dev/null
+++ b/app/src/main/res/values/attrs_friend_icon_view.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index c8524cd..e2337bb 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -2,4 +2,8 @@
#FF000000
#FFFFFFFF
+ #FF29B6F6
+ #FF039BE5
+ #FFBDBDBD
+ #FF757575
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d2bcbac..6b0a488 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,11 +1,11 @@
- tampopo-client
- ホーム画面からフレンド一覧への画面遷移ボタン
- ホーム画面から通知一覧への画面遷移ボタン
- ホーム画面から設定画面への画面遷移ボタン
- フレンド
- 申請中
- 保留中
- 友達リスト
+ tampopo-client
+ ホーム画面からフレンド一覧への画面遷移ボタン
+ ホーム画面から通知一覧への画面遷移ボタン
+ ホーム画面から設定画面への画面遷移ボタン
+ フレンド
+ 申請中
+ 保留中
+ 友達リスト
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..7e2e6c3
--- /dev/null
+++ b/app/src/main/res/values/styles.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 0afc5a0..b4bacf5 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -6,8 +6,4 @@
-
\ No newline at end of file