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