1

私はリストを持っています、それは動いている指をキャプチャしました、そしてあなたは指をスライドさせることでアイテムを削除することができます

イメージがコンテナーに読み込まれていない場合、ImageView.setImage() を使用すると、コンテナーは正しく移動します。

ただし、1 つのイメージをロードすると、コンテナーの動きが遅くなります。

なぜこうなった?

以下に画像を添付します。

1.正しく動く

ここに画像の説明を入力

  1. 正しく ここに画像の説明を入力 動かない 常にコンテナを左から右に動かします

それはなぜです?ありがとう。

UPDATE 19/01/2014 ビットマップを 150 kb に縮小し、引き続き同等にします。

私のコードを残す

    objelementos.lnyDatosCliente.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, final MotionEvent event) {



         final  CCliente objcCCliente = lstLista.get(objelementos.posicion);
        CAnimaciones objAnmanim = new CAnimaciones();
        Display pantalla =  afrmGstionClientes.getActivity().getWindowManager().getDefaultDisplay();
        final int ancho = pantalla.getWidth();



        switch ( event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                fdYPrimeroPulsado = event.getRawY();
                fdXPulsadoInicio = event.getRawX();
                fdXUltimaPulsado = event.getRawX();
                iTamanioLnyPulsado =0;

            break;
            case MotionEvent.ACTION_MOVE:


                        float fdXPulsado = event.getRawX();
                        float fdXMovimiento = fdXPulsado- fdXUltimaPulsado;
                        objelementos.lnyDatosCliente.setVisibility(4);
                        objelementos.lnyDatosClienteToMove.setVisibility(0);
                        objelementos.lnyDatosClienteToMove.setX(fdXMovimiento);
                        iTamanioLnyPulsado =1;



                break;

            case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL:

                float fdXPulsad = event.getRawX();
                float xmov =fdXPulsad- fdXUltimaPulsado;
                fdYUltimoPulsado = event.getRawY();


                        int difx = (int)fdXPulsad- (int)fdXPulsadoInicio;

                        if (difx>120){ 
                            ObjectAnimator animaciion = objAnmanim.CrearAnimacion(objelementos.lnyDatosClienteToMove, xmov, ancho+10, "x", 85);//(xFin-20, ancho+10, 200) ;
                            animaciion.start();


                            new Handler().postDelayed(new Runnable() {
                                public void run() {
                                float num = objcCCliente.getposicionXInicio();

                               AlertDialog.Builder builder = new AlertDialog.Builder(
                                        getContext());
                                builder.setIcon(R.drawable.ic_launcher);
                                builder.setTitle("!AVISO!");
                                builder.setMessage("¿Estas seguro de eliminar el cliente?")
                                        .setPositiveButton("Si", new DialogInterface.OnClickListener() {
                                            public void onClick(DialogInterface dialog, int id) {
                                            CustomAdapterListadoClientes.this.lstLista.remove(objelementos.posicion);
                                            CustomAdapterListadoClientes.this.notifyDataSetChanged();
                                            dialog.dismiss();
                                          }
                                        })
                                        .setNegativeButton("No", new DialogInterface.OnClickListener() {
                                            public void onClick(DialogInterface dialog, int id) {
                                            vol(ancho-10, objelementos.lnyDatosCliente.getX(), objelementos.lnyDatosClienteToMove, 180, objelementos.lnyDatosCliente);
                                            dialog.dismiss();
                                            }
                                        });
                                AlertDialog dialog = builder.create();
                                dialog.show();
                                }
                            }, animaciion.getDuration());


                        }else{




                            if (iTamanioLnyPulsado==0){
                                float dify = fdYPrimeroPulsado -fdYUltimoPulsado;
                                if (dify<0){
                                    dify*=-1;
                                }

                                if (dify<10){
                                float fddondeesta = objelementos.lnyDatosCliente.getY();
                                ObjectAnimator animaciion = objAnmanim.CrearAnimacion(objelementos.lnyDatosCliente, fddondeesta-1, fddondeesta, "x",50);

                                animaciion.start();
                                Cnavegar objNavegar = new Cnavegar();
                                AfrmHigthModificationCliente afrmModificacion = new AfrmHigthModificationCliente(true, objcCCliente,afrmGstionClientes);
                                objNavegar.RemplazarFragmento(R.id.rtlAltas, afrmModificacion, "AfrmHigthModificationCliente", afrmGstionClientes.getActivity().getSupportFragmentManager());
                                }
                            }else{

                                 if (difx>0){
                                     vol(xmov, objelementos.lnyDatosCliente.getX(), objelementos.lnyDatosClienteToMove, 180, objelementos.lnyDatosCliente);
                                 }else{
                                     vol(xmov, objelementos.lnyDatosCliente.getX(), objelementos.lnyDatosClienteToMove, 180, objelementos.lnyDatosCliente);
                                 }


                            }


                        }


                break;
            }


                return true;
        }
    });
4

2 に答える 2

0

遅いという私の問題を解決します。これは画像のサイズではありません。2 つの線形レイアウトを使用しました。このアダプターに関連付けられている可視性を変更して、可視または不可視に変更しました。彼のアダプターはコードを再度書き直す必要がありましたが、これは私の問題が原因でした。可視性、位置、および完全に実行するアプリケーションのみを変更せずに、線形レイアウトでのみ動作するようになりました

皆さんの助けに感謝します

于 2014-02-04T08:57:54.047 に答える