質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

0回答

553閲覧

ImageViewの移動時のブレをなくしたい

sunmo

総合スコア10

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2019/09/23 07:18

前提・実現したいこと

VisualStudio2019でXamarin.Androidを使っています。

FrameLayoutの中にImageViewを作成し、ドラッグで移動しているのですが、
少しの移動ならスムーズに移動できるのですが、同じImageViewを2回以上移動するときに
ImageViewが元に位置?と移動後の位置を交互に表示、点滅をしているように見えて、
ドラッグ後の位置も移動先に正しくならない場合があります。

色々検索したのですが、対処方法がわかりません。
どなたかご教授いただけないでしょうか?

あと、もう一点、移動した位置を記憶して、次回画面を開いたときには、
前回記憶した位置をデフォルト表示の位置としたいのですが、ImageViewの位置を
最初から変更するにはどうすればよいでしょうか?
Top、Leftなどでは変わりませんでした。

該当のソースコード

C#

1 [Activity(Label = "ConfigActivity")] 2 public class ConfigActivity : Activity 3 { 4 private int _xDelta; 5 private int _yDelta; 6 7 public static string screenImage; 8 9 protected override void OnCreate(Bundle savedInstanceState) 10 { 11 base.OnCreate(savedInstanceState); 12 13 // Create your application here 14 SetContentView(Resource.Layout.config); 15 // ドラッグ対象Viewとイベント処理クラスを紐付ける 16 ImageView imageView1 = (ImageView)FindViewById(Resource.Id.imageView1); 17 18 imageView1.Touch += ConfigActivity_Touch; 19 20 //ImageViewに画像を張り付け 21 if(File.Exists(screenImage)) 22 { 23 Bitmap bt = BitmapFactory.DecodeFile(screenImage); 24 imageView1.SetImageBitmap(bt); 25 imageView1.LayoutParameters.Width = bt.Width; 26 imageView1.LayoutParameters.Height = bt.Height; 27 } 28 else 29 { 30 // 31 } 32 } 33 34 private void ConfigActivity_Touch(object sender, View.TouchEventArgs e) 35 { 36 int x = (int) e.Event.GetX(); 37 int y = (int)e.Event.GetY(); 38 39 View view = (View)sender; 40 41 switch (e.Event.Action & MotionEventActions.Mask) 42 { 43 case MotionEventActions.Down: 44 FrameLayout.LayoutParams lParams = (FrameLayout.LayoutParams)view.LayoutParameters; 45 _xDelta = x - lParams.LeftMargin; 46 _yDelta = y - lParams.TopMargin; 47 break; 48 case MotionEventActions.Move: 49 view.TranslationX = x - _xDelta; 50 view.TranslationY = y - _yDelta; 51 52 break; 53 54 case MotionEventActions.Up: 55 break; 56 57 default: 58 break; 59 } 60 61 // イベント処理完了 62 return; 63 64 } 65 }

XML

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent"> 6 <FrameLayout 7 android:layout_width="match_parent" 8 android:layout_height="100dip" 9 android:layout_margin="0dip" 10 android:background="#99FFFF" > 11 <ImageView 12 android:id="@+id/imageView1" 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content"/> 15 </FrameLayout> 16</LinearLayout> 17

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問