我有几个关于 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);
但它不能正常工作。因为仅从隐藏的 paPreviewView ImageView 调用方法 OnClickListener.onClick。所以我试图从 paPreviewView 中删除 OnClickListener 但它没有帮助。唯一可行的解决方案是从 / 到 mainPanel 删除(用于隐藏)并添加(用于显示)paPreviewView。
我的问题是为什么?为什么在 paPreviewView 隐藏时 paPreviewView 会引发 onClick 事件?
2)我的第二个问题是。比我为这个例子做的更好的解决方案(我的意思是纸牌游戏)?
非常感谢您的任何想法:)