murakumo_URLコピペボタンの作成完了 #56

Merged
murakumo merged 4 commits from murakumo_URLコピペボタン into master 2024-07-16 05:32:54 +00:00
2 changed files with 105 additions and 49 deletions

View File

@ -1,6 +1,9 @@
package com.example.oplogy; package com.example.oplogy;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
@ -27,19 +30,20 @@ import java.util.concurrent.Executors;
public class MainActivity extends AppCompatActivity implements View.OnClickListener { public class MainActivity extends AppCompatActivity implements View.OnClickListener {
// formコピー用のURL
private static final String URL_TO_COPY = "https://docs.google.com/forms/d/e/1FAIpQLScKI_ca01nO7die7SqZyThiqa7NB7gcucMJtiV_-sc3eZX6KQ/viewform";
// ダイアログの宣言 // ダイアログの宣言
private AlertDialog alertDialog; private AlertDialog alertDialog;
// ID作成のTextViewとImageView // ID作成のTextViewとImageView
private TextView creatUUID; private TextView creatUUID;
private ImageView imageUuid; private ImageView imageUuid;
// セットアップのTextViewとImageView // セットアップのTextViewとImageView
private TextView setUp; private TextView setUp;
private ImageView imageSetup; private ImageView imageSetup;
// formコピー用のボタン
// セットアップのTextViewとImageView private TextView formURL;
private ImageView imageFormURL;
// ルート作成のTextViewとImageView
private TextView root; private TextView root;
private ImageView imageRoot; private ImageView imageRoot;
// 提出状況のTextViewとImageView // 提出状況のTextViewとImageView
@ -72,6 +76,13 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
imageSetup = findViewById(R.id.imageSetup); imageSetup = findViewById(R.id.imageSetup);
imageSetup.setOnClickListener(this); imageSetup.setOnClickListener(this);
// formコピー用のインテント
formURL = findViewById(R.id.formURL);
formURL.setOnClickListener(this);
imageFormURL = findViewById(R.id.imageFormURL);
imageFormURL.setOnClickListener(this);
// ルート作成用のインテント // ルート作成用のインテント
root = findViewById(R.id.root); root = findViewById(R.id.root);
root.setOnClickListener(this); root.setOnClickListener(this);
@ -134,6 +145,16 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
finish(); // 画面遷移後元の状態に戻す finish(); // 画面遷移後元の状態に戻す
} }
// formコピー用のクリック処理
if (view == formURL) {
imageFormURL.setImageResource(R.drawable.ischecked_uuid);
copyUrlToClipboard(URL_TO_COPY);
}
if (view == imageFormURL) {
imageFormURL.setImageResource(R.drawable.ischecked_uuid);
copyUrlToClipboard(URL_TO_COPY);
}
// ルート作成のクリック処理 // ルート作成のクリック処理
if (view == root) { if (view == root) {
imageRoot.setImageResource(R.drawable.pin); imageRoot.setImageResource(R.drawable.pin);
@ -162,6 +183,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
} }
} }
//ID作成表示に関する処理 //ID作成表示に関する処理
private void showUUIDYesNoDialog() { private void showUUIDYesNoDialog() {
firestoreReception_classIdDatabase = new FirestoreReception_classIdDatabase(); firestoreReception_classIdDatabase = new FirestoreReception_classIdDatabase();
@ -280,6 +302,21 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
}, executorService).whenComplete((result, throwable) -> executorService.shutdown()); }, executorService).whenComplete((result, throwable) -> executorService.shutdown());
} }
//クリップボードにURLをコピーする処理
private void copyUrlToClipboard(String url) {
try {
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("URL", url);
if (clipboard != null) {
clipboard.setPrimaryClip(clip);
Toast.makeText(this, "GoogleFormのURLをコピーしました", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "エラー コピーできませんでした", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
Toast.makeText(this, "Error copying URL: " + e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
//ルート作成の非同期処理 //ルート作成の非同期処理
private void fetchDataAndCreateRoute() { private void fetchDataAndCreateRoute() {
@ -342,6 +379,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
} }
} }
//final宣言することによってスレッドセーフになる(ラムダ式内で使えるようにする)
final List<MyDataClass> finalMyDataList = myDataList; final List<MyDataClass> finalMyDataList = myDataList;
CreateSchedule createSchedule = new CreateSchedule(MainActivity.this); CreateSchedule createSchedule = new CreateSchedule(MainActivity.this);
String startPointLatLngString = createSchedule.receiveData(myDataList, getApplicationContext()); String startPointLatLngString = createSchedule.receiveData(myDataList, getApplicationContext());

View File

@ -1,33 +1,32 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical"
android:weightSum="20" android:weightSum="20"
tools:context=".MainActivity"> tools:context=".MainActivity">
<Space <Space
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="2"/> android:layout_weight="2" />
<!-- ID作成のレイアウト--> <!-- ID作成のレイアウト-->
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="3" android:layout_weight="3"
android:weightSum="2" android:orientation="horizontal"
android:orientation="horizontal"> android:weightSum="2">
<ImageView <ImageView
android:id="@+id/imageUuid" android:id="@+id/imageUuid"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/checked_image"
android:layout_weight="1" android:layout_weight="1"
/> android:src="@drawable/checked_image" />
<TextView <TextView
android:id="@+id/creatUUID" android:id="@+id/creatUUID"
@ -37,110 +36,129 @@
android:layout_weight="1" android:layout_weight="1"
android:gravity="left" android:gravity="left"
android:text="ID作成" android:text="ID作成"
android:textSize="50dp" android:textSize="50dp" />
/>
</LinearLayout> </LinearLayout>
<!-- セットアップのレイアウト--> <!-- セットアップのレイアウト-->
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="3" android:layout_weight="3"
android:weightSum="2" android:orientation="horizontal"
android:orientation="horizontal"> android:weightSum="2">
<ImageView <ImageView
android:id="@+id/imageSetup" android:id="@+id/imageSetup"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/checked_image"
android:layout_weight="1" android:layout_weight="1"
/> android:src="@drawable/checked_image" />
<TextView <TextView
android:id="@+id/setUp" android:id="@+id/setUp"
android:layout_width="99dp" android:layout_width="99dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="セットアップ" android:layout_gravity="center"
android:textSize="40dp"
android:textStyle="bold"
android:layout_weight="1" android:layout_weight="1"
android:gravity="left" android:gravity="left"
android:layout_gravity="center"/> android:text="セットアップ"
android:textSize="40dp"
android:textStyle="bold" />
</LinearLayout>
<!-- フォームのURLのレイアウト-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="3"
android:orientation="horizontal"
android:weightSum="2">
<ImageView
android:id="@+id/imageFormURL"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/checked_image" />
<TextView
android:id="@+id/formURL"
android:layout_width="99dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="left"
android:text="GoogleformのURL"
android:textSize="40dp"
android:textStyle="bold" />
</LinearLayout> </LinearLayout>
<Space <Space
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="3"/> android:layout_weight="2" />
<!-- ルート表示のレイアウト--> <!-- ルート表示のレイアウト-->
<LinearLayout <LinearLayout
android:layout_width="400dp" android:layout_width="400dp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="3"
android:weightSum="2"
android:layout_gravity="center" android:layout_gravity="center"
android:orientation="horizontal"> android:layout_weight="3"
android:orientation="horizontal"
android:weightSum="2">
<ImageView <ImageView
android:id="@+id/imageRoot" android:id="@+id/imageRoot"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/pin"
android:layout_weight="1" android:layout_weight="1"
/> android:src="@drawable/pin" />
<TextView <TextView
android:id="@+id/root" android:id="@+id/root"
android:layout_width="99dp" android:layout_width="99dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="ルート表示" android:layout_gravity="center"
android:textSize="40dp"
android:textStyle="bold"
android:layout_weight="1" android:layout_weight="1"
android:gravity="left" android:gravity="left"
android:layout_gravity="center"/> android:text="ルート表示"
android:textSize="40dp"
android:textStyle="bold" />
</LinearLayout> </LinearLayout>
<!-- 提出状況のレイアウト--> <!-- 提出状況のレイアウト-->
<LinearLayout <LinearLayout
android:layout_width="350dp" android:layout_width="350dp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="3"
android:layout_gravity="center" android:layout_gravity="center"
android:weightSum="2" android:layout_weight="3"
android:orientation="horizontal"> android:orientation="horizontal"
android:weightSum="2">
<ImageView <ImageView
android:id="@+id/imageSubmission" android:id="@+id/imageSubmission"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/submission"
android:layout_weight="1" android:layout_weight="1"
/> android:src="@drawable/submission" />
<TextView <TextView
android:id="@+id/submission" android:id="@+id/submission"
android:layout_width="99dp" android:layout_width="99dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="提出状況" android:layout_gravity="center"
android:textSize="40dp"
android:textStyle="bold"
android:layout_weight="1" android:layout_weight="1"
android:gravity="left" android:gravity="left"
android:layout_gravity="center"/> android:text="提出状況"
android:textSize="40dp"
android:textStyle="bold" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>