3

Android ビューについていくつか質問があります。私は初心者なので、私の質問がばかげていると思われる場合は、正しいヒントを教えてください:)だから、記憶ゲームを作ろうとしています。これがmainLayoutの私のコードです。

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainPanel"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android.background="Color.TRANSPARENT"
    android:gravity="top"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/top_panel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="2dp" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Blaaaaaa1" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Blaaaaaa2" />
    </LinearLayout>

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:ems="3"
        android:inputType="textPassword"
        android:text="dsdsdsd"
        android:visibility="invisible" >

        <requestFocus />
    </EditText>

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/top_panel"
        android:paddingBottom="50dp"
        android:paddingTop="5dp"
        android:weightSum="5" >

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:weightSum="5" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_a1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_a2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_a3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_a4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_a5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:weightSum="5" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_b1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_b2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_b3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_b4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_b5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:weightSum="5" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_c1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_c2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_c3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_c4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_c5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:weightSum="5" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_d1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_d2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_d3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_d4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_d5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:weightSum="5" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_e1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_e2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_e3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_e4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/pic_e5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />
            </LinearLayout>
        </TableRow>

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </TableRow>
    </TableLayout>

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:src="@drawable/pic9214" />

</RelativeLayout>

これが mainActivity のコードです。

public class MainActivity extends Activity {
    private OnClickListener paSharedOnClickListener = new OnClickListener();
    private ImageView paPreviewView ;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        getWindow().setBackgroundDrawableResource(R.drawable.old_paper_r);



        ImageView img; 

        img = (ImageView) MainActivity.this.findViewById(R.id.imageView1) ;
        img.setVisibility(-1);
        this.paPreviewView = img;

        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_a1);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_a2);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_a3);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_a4);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_a5);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_b1);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_b2);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_b3);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_b4);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_b5);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_c1);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_c2);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_c3);
        img.setVisibility(-1);
        img = (ImageView) findViewById(R.id.pic_c4);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_c5);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_d1);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_d2);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_d3);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_d4);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_d5);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_e1);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_e2);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_e3);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_e4);
        img.setOnClickListener(paSharedOnClickListener);
        img = (ImageView) findViewById(R.id.pic_e5);
        img.setOnClickListener(paSharedOnClickListener);

    }


    private class OnClickListener implements View.OnClickListener
    {
        private boolean paIsPreviewShowed = false;

        public void onClick(View arg0) 
        {

            ImageView img  = (ImageView)arg0;

            Log.v("Click", String.format("ID %s %s", img.getId() , (ImageView) MainActivity.this.findViewById(R.id.imageView1) == img ) );


            if (!this.paIsPreviewShowed)
            {

                this.paIsPreviewShowed = true;

                Animation fadeIn = new AlphaAnimation( 0, 1);
                fadeIn.setDuration(150);


                AnimationSet animationSet = new AnimationSet(true);

                ScaleAnimation scaleAnim = new ScaleAnimation(0,1,0,1,Animation.RELATIVE_TO_SELF, (float)0.5, Animation.RELATIVE_TO_SELF, (float)0.5);
                scaleAnim.setInterpolator(new LinearInterpolator());
                scaleAnim.setRepeatCount(Animation.ZORDER_NORMAL);
                scaleAnim.setDuration(250);

                TranslateAnimation move = new TranslateAnimation(0, 0, 500,0);
                move.setDuration(250);


                animationSet.addAnimation(fadeIn);
                animationSet.addAnimation(scaleAnim);
                animationSet.setFillAfter(true);





                Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.pic9012);
                if  (paPreviewView.getParent()==null )
                {
                    RelativeLayout top_panel  = (RelativeLayout) MainActivity.this.findViewById(R.id.mainPanel);
                    top_panel.addView(paPreviewView);
                }
                paPreviewView.setImageBitmap(bMap);
                paPreviewView.startAnimation(animationSet);


            }else
            {

                Animation fadeOut = new AlphaAnimation( 1, 0);
                fadeOut.setFillAfter(true);
                fadeOut.setDuration(250);
                paPreviewView.startAnimation(fadeOut);
                this.paIsPreviewShowed = false;

                ((RelativeLayout) paPreviewView.getParent()).removeView(paPreviewView);
            }

                }


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

Activiti を作成した後の最初のステップでは、OnClickListener をすべてのカード (pic_a1、pic_a2 ... pic_e5) に設定し、ImageView paPreviewView の可視性を非表示に設定します (選択したカードの画像を表示したい場所)。pic_a1 をクリックすると、paPreviewView が表示されます。これで結構です。私の質問は。

1) この例の初期のバージョンでは、paPreviewView ImageView を呼び出して非表示にしました

paPreviewView.setVisibility(View.INVISIBLE);

また

paPreviewView.setVisibility(View.GONE);

しかし、それは正しく機能しませんでした。メソッド OnClickListener.onClick は非表示の paPreviewView ImageView からのみ呼び出されたためです。そこで、paPreviewView から OnClickListener を削除しようとしましたが、役に立ちませんでした。唯一の有効な解決策は、/to mainPanel から paPreviewView を削除 (非表示用) および追加 (表示用) することです。

私の質問はなぜですか?paPreviewView が非表示のときに、paPreviewView が onClick イベントを発生させるのはなぜですか?

2) 2 つ目の質問です。この例で作成したよりも優れたソリューションはありますか (カード ゲームを意味します)。

アイデアをありがとう:)

4

2 に答える 2

1

この場合に使用する正しい関数は次のとおりです。

paPreviewView.setClickable(false);
于 2012-09-11T20:25:27.800 に答える
0

ImageView.setVisibility()ビューの「可視性」を変更するだけで、リスナーはまだ登録されています。

以下を使用できます。

paPreviewView.setEnabled(false);

クリックイベントを受信しないようにします。

于 2012-09-11T20:13:27.157 に答える