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
index 20a10e3..c038a2d 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
@@ -1,6 +1,9 @@
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;
@@ -8,22 +11,35 @@
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 View {
+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 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);
@@ -41,75 +57,147 @@
}
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);
+// 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);
+// }
- 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);
- }
-
- a.recycle();
-
- // 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();
+// // 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();
+//
}
- 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);
+ 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.
*
@@ -125,19 +213,19 @@
*
* @param exampleString The example string attribute value to use.
*/
- public void setExampleString(String exampleString) {
- mExampleString = exampleString;
- invalidateTextPaintAndMeasurements();
- }
+// 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;
- }
+// public int getExampleColor() {
+// return mExampleColor;
+// }
/**
* Sets the view"s example color attribute value. In the example view, this color
@@ -145,10 +233,10 @@
*
* @param exampleColor The example color attribute value to use.
*/
- public void setExampleColor(int exampleColor) {
- mExampleColor = exampleColor;
- invalidateTextPaintAndMeasurements();
- }
+// public void setExampleColor(int exampleColor) {
+// mExampleColor = exampleColor;
+// invalidateTextPaintAndMeasurements();
+// }
/**
* Gets the example dimension attribute value.
@@ -165,10 +253,10 @@
*
* @param exampleDimension The example dimension attribute value to use.
*/
- public void setExampleDimension(float exampleDimension) {
- mExampleDimension = exampleDimension;
- invalidateTextPaintAndMeasurements();
- }
+// public void setExampleDimension(float exampleDimension) {
+// mExampleDimension = exampleDimension;
+// invalidateTextPaintAndMeasurements();
+// }
/**
* Gets the example drawable attribute value.
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 14bf304..24ce736 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
@@ -95,7 +95,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
index d1e0fc3..7270a3e 100644
--- a/app/src/main/res/layout/sample_friend_icon_view.xml
+++ b/app/src/main/res/layout/sample_friend_icon_view.xml
@@ -1,60 +1,98 @@
-
+
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:gravity="center"
+ android:background="@android:color/transparent"
+ >
+
-
-
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
\ No newline at end of file
+ android:text="haru"
+ android:textColor="@color/black" />
+
\ 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
index bdb9b4f..b9f829d 100644
--- a/app/src/main/res/values/attrs_friend_icon_view.xml
+++ b/app/src/main/res/values/attrs_friend_icon_view.xml
@@ -4,5 +4,7 @@
+
+
\ 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