2016-03-28 14 views
1
package com.example.caneraydin.myapplication; 

import android.annotation.SuppressLint; 
import android.content.ClipData; 
import android.graphics.drawable.Drawable; 
import android.media.Image; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.DragEvent; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 

public class MainActivity extends AppCompatActivity { 

    private ImageView img1,img2,img3; 
String TAG = "Chic"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_lands); 
     img1 = (ImageView) findViewById(R.id.img1); 
     img2= (ImageView) findViewById(R.id.img2); 
     img3= (ImageView) findViewById(R.id.img3); 

     img3. setOnTouchListener(new MyTouchListener()); 
img2. setOnDragListener(new MyDragListener()); 
    } 



} 
final class MyTouchListener implements View.OnTouchListener {String TAG = "Chic"; 
    // Log.d(TAG,"In mytouchlistener"); 
    public boolean onTouch(View view, MotionEvent motionEvent) { 
     Log.d(TAG,"In mytouchlistener"); 
     if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 
      Log.d(TAG,"In mytouchlistener if yes"); 
      ClipData data = ClipData.newPlainText("", ""); 
      View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); 
      view.startDrag(data, shadowBuilder, view, 0); 
      // view.setVisibility(View.INVISIBLE); 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 


class MyDragListener implements View.OnDragListener { 

    String TAG = "Chic"; 
    @Override 
    public boolean onDrag(View v, DragEvent event) { 
     int action = event.getAction(); 
     switch (event.getAction()) { 
      case DragEvent.ACTION_DRAG_STARTED: 
       // do nothing 

       Log.d(TAG,"drag startedr"); 
       break; 
      case DragEvent.ACTION_DROP: Log.d(TAG,"drag drop"); 
       // Dropped, reassign View to ViewGroup 
       View view = (View) event.getLocalState(); 
       ViewGroup owner = (ViewGroup) view.getParent(); 
       owner.removeView(view); 
       RelativeLayout container = (RelativeLayout) v; 
       container.addView(view); 
      // view.setVisibility(View.VISIBLE); 
       break; 
      case DragEvent.ACTION_DRAG_ENDED: Log.d(TAG,"drag ended"); 

      default: 
       break; 
     } 
     return true; 
    } 
} 

Ich habe 3 Bildansichten. wenn man auf eine andere Bildansicht geht, sollte es eine Nachricht geben. Aber selbst ich kann den Bildausschnitt nicht fallen lassen. Wenn ich falle, geht es zurück auf den ersten Platz.kann nicht in android.widget umgewandelt werden. RelativeLayout

Und es kann nicht in action.drop Teil gehen. Wenn ich Bild aanother Bild fallen, wie ich beschrieben, shutsdown es und Nachrichten:

java.io.IOException: fcntl failed: EAGAIN (Try again) 
                    at java.nio.FileChannelImpl.basicLock(FileChannelImpl.java:123) 
                    at java.nio.FileChannelImpl.tryLock(FileChannelImpl.java:177) 
                    at java.nio.channels.FileChannel.tryLock(FileChannel.java:587) 
                    at com.facebook.analytics.reporters.AppStateReporter.a(AppStateReporter.java:141) 
                    at com.facebook.analytics.reporters.AppStateReporter.c(AppStateReporter.java:94) 
                    at com.facebook.analytics.reporters.AppStateReporter.a(AppStateReporter.java:55) 
                    at com.facebook.common.noncriticalinit.NonCriticalInitializer.a(NonCriticalInitializer.java:103) 
                    at com.facebook.common.noncriticalinit.NonCriticalInitializer$2.run(NonCriticalInitializer.java:116) 
                    at com.facebook.common.appchoreographer.DefaultAppChoreographer$5.run(DefaultAppChoreographer.java:384) 
                    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
                    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
                    at com.facebook.common.executors.WrappingExecutorService$1.run(WrappingExecutorService.java:77) 
                    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
                    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                    at com.facebook.common.executors.DefaultConstrainedListeningExecutorService$Worker.run(DefaultConstrainedListeningExecutorService.java:327) 
                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                    at com.facebook.common.executors.NamedThreadFactory$1.run(NamedThreadFactory.java:42) 
                    at java.lang.Thread.run(Thread.java:841) 
                    Caused by: libcore.io.ErrnoException: fcntl failed: EAGAIN (Try again) 
                    at libcore.io.Posix.fcntlFlock(Native Method) 
                    at libcore.io.ForwardingOs.fcntlFlock(ForwardingOs.java:54) 
                    at java.nio.FileChannelImpl.basicLock(FileChannelImpl.java:121) 
                    at java.nio.FileChannelImpl.tryLock(FileChannelImpl.java:177)  
                    at java.nio.channels.FileChannel.tryLock(FileChannel.java:587)  
                    at com.facebook.analytics.reporters.AppStateReporter.a(AppStateReporter.java:141)  
                    at com.facebook.analytics.reporters.AppStateReporter.c(AppStateReporter.java:94)  
                    at com.facebook.analytics.reporters.AppStateReporter.a(AppStateReporter.java:55)  
                    at com.facebook.common.noncriticalinit.NonCriticalInitializer.a(NonCriticalInitializer.java:103)  
                    at com.facebook.common.noncriticalinit.NonCriticalInitializer$2.run(NonCriticalInitializer.java:116)  
                    at com.facebook.common.appchoreographer.DefaultAppChoreographer$5.run(DefaultAppChoreographer.java:384)  
                    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)  
                    at java.util.concurrent.FutureTask.run(FutureTask.java:237)  
                    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)  
                    at com.facebook.common.executors.WrappingExecutorService$1.run(WrappingExecutorService.java:77)  
                    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)  
                    at java.util.concurrent.FutureTask.run(FutureTask.java:237)  
                    at com.facebook.common.executors.DefaultConstrainedListeningExecutorService$Worker.run(DefaultConstrainedListeningExecutorService.java:327)  
                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)  
                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)  
                    at com.facebook.common.executors.NamedThreadFactory$1.run(NamedThreadFactory.java:42)  
                    at java.lang.Thread.run(Thread.java:841)  
03-28 16:12:56.569 157-376/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system 
03-28 16:12:56.589 157-376/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system 
03-28 16:12:57.109 25075-13896/? E/fb4a(:<default>):VaultDeviceSetup: setupDeviceFromServer 
                     com.facebook.proxygen.HttpNetworkException: connect failed (immediately): errno = 101 
                      at com.facebook.proxygen.LigerHttpResponseHandler.handleError(LigerHttpResponseHandler.java:244) 
                      at com.facebook.proxygen.LigerHttpResponseHandler.onError(LigerHttpResponseHandler.java:209) 
                      at com.facebook.proxygen.JniHandler.onError(JniHandler.java:106) 
                      at com.facebook.proxygen.EventBase.loopForever(Native Method) 
                      at com.facebook.proxygen.HTTPThread.run(HTTPThread.java:32) 
                      at java.lang.Thread.run(Thread.java:841) 
03-28 16:12:58.080 157-376/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system 
03-28 16:12:58.090 157-376/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system 
03-28 16:12:58.090 157-376/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system 
03-28 16:12:58.100 157-376/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system 
03-28 16:12:58.541 978-978/? E/NetworkScheduler.SchedulerReceiver: Invalid parameter app 
03-28 16:12:58.541 978-978/? E/NetworkScheduler.SchedulerReceiver: Invalid package name : Perhaps you didn't include a PendingIntent in the extras? 
03-28 16:13:10.763 589-864/? E/Watchdog: [email protected] 6168 
03-28 16:13:19.091 13687-13687/com.example.caneraydin.myapplication E/AndroidRuntime: FATAL EXCEPTION: main 
                         Process: com.example.caneraydin.myapplication, PID: 13687 
                         java.lang.ClassCastException: android.support.v7.widget.AppCompatImageView cannot be cast to android.widget.RelativeLayout 
                          at com.example.caneraydin.myapplication.MyDragListener.onDrag(MainActivity.java:74) 
                          at android.view.View.dispatchDragEvent(View.java:17624) 
                          at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1288) 
                          at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1288) 
                          at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1288) 
                          at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1288) 
                          at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1288) 
                          at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1288) 
                          at android.view.ViewRootImpl.handleDragEvent(ViewRootImpl.java:5250) 
                          at android.view.ViewRootImpl.access$900(ViewRootImpl.java:115) 
                          at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3462) 
                          at android.os.Handler.dispatchMessage(Handler.java:102) 
                          at android.os.Looper.loop(Looper.java:136) 
                          at android.app.ActivityThread.main(ActivityThread.java:5584) 
                          at java.lang.reflect.Method.invokeNative(Native Method) 
                          at java.lang.reflect.Method.invoke(Method.java:515) 
                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
                          at dalvik.system.NativeStart.main(Native Method) 
03-28 16:13:19.431 589-14357/? E/android.os.Debug: [email protected] > sdumpstate -k -t -z -d -m 13687 -o /data/log/dumpstate_app_error 
03-28 16:13:20.192 14380-14380/? E/dalvikvm: Could not find class 'android.app.job.JobScheduler', referenced from method com.android.email.service.r.a 
03-28 16:13:20.192 14380-14380/? E/dalvikvm: Could not find class 'android.app.job.JobScheduler', referenced from method com.android.email.service.r.b 
03-28 16:13:20.793 14380-14426/? E/Gmail: Error finding the version of the Email provider..... 
              android.content.pm.PackageManager$NameNotFoundException: com.google.android.email 
               at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:124) 
               at com.google.android.gm.EmailMigrationService.a(SourceFile:1280) 
               at com.google.android.gm.EmailMigrationService.onHandleIntent(SourceFile:219) 
               at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) 
               at android.os.Handler.dispatchMessage(Handler.java:102) 
               at android.os.Looper.loop(Looper.java:136) 
               at android.os.HandlerThread.run(HandlerThread.java:61) 
03-28 16:13:22.805 1810-1810/? E/SamsungIME:   isHWKeyboardConnected() = false --> false 
03-28 16:13:22.885 589-589/? E/Tethering: No numeric data 
03-28 16:13:24.756 589-697/? E/ViewRootImpl: sendUserActionEvent() mView == null 
03-28 16:13:24.766 589-2654/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! 
03-28 16:13:24.766 589-2654/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! 
03-28 16:13:24.766 1810-1810/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! 
03-28 16:13:24.766 1810-1810/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! 
03-28 16:13:24.816 589-715/? E/InputDispatcher: channel ~ Channel is unrecoverably broken and will be disposed! 
03-28 16:13:40.772 589-864/? E/Watchdog: [email protected] 6169 

dies mein xml ist (Landschaft)

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 


    tools:context="com.example.caneraydin.myapplication.MainActivity"> 


<ImageView 
    android:layout_width="140dp" 
    android:layout_height="140dp" 
    android:src="@drawable/b3_1" 
    android:layout_alignParentLeft="true" 
    android:layout_centerInParent="true" 
    android:id="@+id/img3" 
    /> 



    <ImageView 
     android:layout_width="140dp" 
     android:layout_height="140dp" 
     android:src="@drawable/b2_5" 

     android:id="@+id/img2" 
     android:layout_alignParentRight="true" 
android:layout_alignParentTop="true" 
     /> 

    <ImageView 
     android:layout_width="140dp" 
     android:layout_height="140dp" 
     android:src="@drawable/b3_2" 
android:layout_alignRight="@id/img2" 
     android:layout_above="@id/img2" 
     android:id="@+id/img1" 
android:layout_alignParentBottom="true" 

     /> 

</RelativeLayout> 
+0

schreiben Sie hier Ihre XML-Datei zu. – Radhey

+0

Ich habe hinzugefügt. nur ein xml ich habe. Ich möchte Bild auf Bild –

Antwort

1

Da Sie OnDragListener auf der ImageView img2 sind Einstellung, die View v in

public boolean onDrag(View v, DragEvent event) { 

ist vom Typ ImageView; so dass das Problem ist, dass Sie versuchen, eine ImageView zu einem RelativeLayout hier zu werfen:

RelativeLayout container = (RelativeLayout) v; 
+0

Ich kann nicht machen, wenn auf img2 fällt, entfernen img3. aber es entfernt img3 nach dem Ablegen überall. –

+0

Wenn Sie versuchen, img2 aus img3 zu entfernen und zu RelativeLayout hinzuzufügen, ersetzen Sie 'RelativeLayout container = (RelativeLayout) v;' durch 'RelativeLayout container = (RelativLayout) v.getParent();' - oder weisen Sie eine ID zu zum RelativeLayout und hol es über findView.ById wie 'RelativeLayout container = (RelativeLayout) findViewById (R.id.your_relative_layout_id); ' –

+0

img2 und img3 sind eigentlich die gleichen Bilder. Wenn dropped, muss img2 entfernt werden. findviewbyid funktioniert nicht im Drop, ich kann auch nicht importieren. Es ist in Lesen –

0

Sie sollten überprüfen, ob v das ist RelativeLayout Instanz, die Sie erwarten. Und Sie sollten den Drag-Listener für diese RelativeLayout Instanz festlegen. Drag & Tropfen funktioniert so; Sie sollten den Listener sowohl für das gezogene Objekt als auch für das Ablageziel festlegen.

myRelativeLayoutInstance.setOnDragListener(new MyDragListener()); 

Und der Zuhörer:

class MyDragListener implements View.OnDragListener { 

    String TAG = "Chic"; 
    @Override 
    public boolean onDrag(View v, DragEvent event) { 
     int action = event.getAction(); 
     switch (event.getAction()) { 
      case DragEvent.ACTION_DRAG_STARTED: 
       // do nothing 

       Log.d(TAG,"drag startedr"); 
       break; 
      case DragEvent.ACTION_DROP: Log.d(TAG,"drag drop"); 
       if(v == myRelativeLayoutInstance) { 
        // Dropped, reassign View to ViewGroup 
        View view = (View) event.getLocalState(); 
        ViewGroup owner = (ViewGroup) view.getParent(); 
        owner.removeView(view); 
        RelativeLayout container = (RelativeLayout) v; 
        container.addView(view); 
       } 
       break; 
      case DragEvent.ACTION_DRAG_ENDED: Log.d(TAG,"drag ended"); 

      default: 
       break; 
     } 
     return true; 
    } 
} 
+0

wie bekomme ich relative Instanz? Ich gebe nur Bilder Listener –

Verwandte Themen