teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

コード例追加

2020/01/24 19:44

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -1,3 +1,38 @@
1
1
  > textView[0].layout(dx, dy, imgW, imgH);
2
2
 
3
- これで位置を指定して描画しているのですから, この dx,dy を一時保存(もしくは ACTION_UP 時も計算)して prefs に保存し, 再表示時の位置指定に layout メソッドを使用しては如何でしょうか.
3
+ これで位置を指定して描画しているのですから, この dx,dy を一時保存(もしくは ACTION_UP 時も計算)して prefs に保存し, 再表示時の位置指定に layout メソッドを使用しては如何でしょうか.
4
+
5
+ ```java
6
+ int left = textView[0].getLeft() + (newbuttonX - buttonX);
7
+ int top = textView[0].getTop() + (newbuttonY - buttonY);
8
+
9
+ switch (event.getAction()) {
10
+ case MotionEvent.ACTION_MOVE:
11
+ //表示
12
+ int right = left + textView[0].getWidth();
13
+ int bottom = top + textView[0].getHeight();
14
+ textView[0].layout(left, top, right, bottom);
15
+ break;
16
+ case MotionEvent.ACTION_UP:
17
+ //保存
18
+ Editor editor = prefs.edit();
19
+ editor.putFloat("oldx1", left); //なぜ float?
20
+ editor.putFloat("oldy1", top);
21
+ editor.apply();
22
+
23
+ read_oldx[0] = prefs.getFloat("oldx1", 0);
24
+ read_oldy[0] = prefs.getFloat("oldy1", 0);
25
+ // Logで確認
26
+ Log.d("onTouch","ACTION_MOVE: dx="+left+"," +" dy="+top);
27
+ break;
28
+ }
29
+ ```
30
+ ```java
31
+ int left = (int)prefs.getFloat("oldx1", 0);
32
+ int top = (int)prefs.getFloat("oldy1", 0);
33
+ int right = left + textView[0].getWidth();
34
+ int bottom = top + textView[0].getHeight();
35
+ textView[0].layout(left, top, right, bottom);
36
+ ```
37
+
38
+ また, どちらも layout の代わりに setLeft / setTop を使っても良いのかもしれません.

3

変更

2020/01/24 19:44

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -1,3 +1,3 @@
1
1
  > textView[0].layout(dx, dy, imgW, imgH);
2
2
 
3
- これで位置を指定して描画しているのですから, この dx,dy を一時保存(もしくは ACTION_UP 時も計算)してリファレンスに保存し, 再表示時の位置指定に layout メソッドを使用しては如何でしょうか.
3
+ これで位置を指定して描画しているのですから, この dx,dy を一時保存(もしくは ACTION_UP 時も計算)して prefs に保存し, 再表示時の位置指定に layout メソッドを使用しては如何でしょうか.

2

追加

2020/01/24 18:41

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -1,3 +1,3 @@
1
1
  > textView[0].layout(dx, dy, imgW, imgH);
2
2
 
3
- これで位置を指定して描画しているのですから, この dx,dy を保存(もしくは ACTION_UP 時も計算)して, 再表示時 layout メソッドを使用しては如何でしょうか.
3
+ これで位置を指定して描画しているのですから, この dx,dy を一時保存(もしくは ACTION_UP 時も計算)してリファレンスに保存し, 再表示時の位置指定に layout メソッドを使用しては如何でしょうか.

1

文言追加

2020/01/24 18:39

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -1,3 +1,3 @@
1
1
  > textView[0].layout(dx, dy, imgW, imgH);
2
2
 
3
- これで位置を指定して描画しているのですから, この dx,dy を保存して, 再表示時も layout メソッドを使用しては如何でしょうか.
3
+ これで位置を指定して描画しているのですから, この dx,dy を保存(もくは ACTION_UP 時も計算)して, 再表示時も layout メソッドを使用しては如何でしょうか.