2016-03-28 16 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; 
    } 
} 

3 görüntülenme var. biri başka bir görüntüye giderse, mesaj vermelidir. Ama görüntüyü bile bırakamam. Düştüğümde, ilk etapta geri döner.android.widget.RelativeLayout için dökülebilir

Ve action.drop bölümüne girilemez. i anlatıldığı gibi ben aanother görüntüye görüntüyü düŕürüldüĚünde shutsdown ve mesajlar:

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 

bu benim xml (yatay) v Eğer bekliyoruz RelativeLayout örneği ise

<?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

yazma: böylece sorunun bir ImageView burada RelativeLayout bir yayın yapmak için çalışıyoruz olmasıdır. – Radhey

+0

Ekledim. sadece bir xml var. Görüntüyü görüntünün üzerine bırakmak istiyorum –

cevap

1

, View v

public boolean onDrag(View v, DragEvent event) { 

tip ImageView taşımaktadır; Burada da xml dosyanızı

RelativeLayout container = (RelativeLayout) v; 
+0

Eğer img2'ye düşerse hata yapabilirim img3'ü kaldır. ama her yere düştükten sonra img3'ü kaldırır. Img2'yi img3'ten kaldırmaya ve RelativeLayout'a eklemeye çalışıyorsanız, –

+0

, RelativeLayout container = (RelativeLayout) v; 'u RelativeLayout container = (RelativeLayout) v.getParent(); ' ile değiştirin veya bir kimlik atayın RelativeLayout için ve findVIewById yoluyla bu 'RelativeLayout container = (RelativeLayout) findViewById (R.id.your_relative_layout_id);' –

+0

img2 ve img3 aslında aynı görüntülerdir. Yani düştüğünde, img2 kaldırılmalıdır. findviewbyid, düşüşte çalışmıyor, ben de ithalat yapamıyorum. –

0

kontrol etmelisiniz olduğunu. Ve bu RelativeLayout örneğinin sürükleyici dinleyicisini ayarlamanız gerekir. & sürükle bu gibi sürükleyin; hem sürüklenen nesne hem de bırakma hedefi için dinleyiciyi ayarlamanız gerekir.

myRelativeLayoutInstance.setOnDragListener(new MyDragListener()); 

Ve dinleyici:

Eğer ImageView IMG2 üzerinde OnDragListener kuruyoruz yana
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

Göreceli örneğe nasıl ulaşabilirim? Ben sadece görüntü dinleyicisine vereceğim –

İlgili konular