最后測試出問題
老師,為什么我最后的功能是每次把我要交換的圖片給弄成空的了
private ImageView[][] iv_game_arr=new ImageView[3][3];
private GridLayout gl_main_game;
private ImageView iv_null_ImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
? ?super.onCreate(savedInstanceState);
? ?setContentView(R.layout.activity_main);
? ?/**初始化游戲的若干小方塊*/
? ?Bitmap bigBm = ((BitmapDrawable) getResources().getDrawable(R.drawable.pplo)).getBitmap();
? ?int tuWandH = bigBm.getWidth() / 3;
? ?for (int i = 0; i < iv_game_arr.length; i++) {
? ? ? ?for (int j = 0; j < iv_game_arr[0].length; j++) {
? ? ? ? ? ?Bitmap bm = Bitmap.createBitmap(bigBm, j * tuWandH, i * tuWandH, tuWandH, tuWandH);
? ? ? ? ? ?iv_game_arr[i][j] = new ImageView(this);
? ? ? ? ? ?iv_game_arr[i][j].setImageBitmap(bm);
? ? ? ? ? ?iv_game_arr[i][j].setPadding(2, 2, 2, 2);
? ? ? ? ? ?iv_game_arr[i][j].setTag(new GameData(i,j,bm));
? ? ? ? ? ?iv_game_arr[i][j].setOnClickListener(new View.OnClickListener() {
? ? ? ? ? ? ? ?@Override
? ? ? ? ? ? ? ?public void onClick(View v) {
? ? ? ? ? ? ? ? ? ?boolean flag=isHasByNullImageView((ImageView) v);
? ? ? ? ? ? ? ? ? ?//Toast.makeText(MainActivity.this,"位置關(guān)系是否存在:"+flag,Toast.LENGTH_SHORT).show();
? ? ? ? ? ? ? ? ? ?if(flag){
? ? ? ? ? ? ? ? ? ? ? ?changeDataByImageView((ImageView) v);
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?}
? ? ? ? ? ?});
? ? ? ?}
? ?}
? ?//初始化游戲主界面,并添加若干個(gè)小方塊
? ?gl_main_game = (GridLayout) findViewById(R.id.gl_main_game);
? ?for (int i = 0; i < iv_game_arr.length; i++) {
? ? ? ?for (int j = 0; j < iv_game_arr[0].length; j++) {
? ? ? ? ? ?gl_main_game.addView(iv_game_arr[i][j]);
? ? ? ?}
? ?}
? ?setNullImageView(iv_game_arr[2][2]);
}
? ?//交換方塊數(shù)據(jù)
public ?void ?changeDataByImageView(final ImageView mImageView){
? ?TranslateAnimation translateAnimation=null;
? ?if(mImageView.getX()>iv_null_ImageView.getX()){
? ? ? ?translateAnimation=new TranslateAnimation(0.1f, -mImageView.getWidth(),0.1f,0.1f);
? ?}else if(mImageView.getX()<iv_null_ImageView.getX()){
? ? ? ?translateAnimation=new TranslateAnimation(0.1f, mImageView.getWidth(),0.1f,0.1f);
? ?}else if(mImageView.getY()>iv_null_ImageView.getY()){
? ? ? ?translateAnimation=new TranslateAnimation(0.1f,0.1f,0.1f ,-mImageView.getWidth());
? ?}else if(mImageView.getY()<iv_null_ImageView.getY()){
? ? ? ?translateAnimation=new TranslateAnimation(0.1f, 0.1f,0.1f,mImageView.getWidth());
? ?}
? ?translateAnimation.setDuration(70);
? ?translateAnimation.setFillAfter(true);
? ?translateAnimation.setAnimationListener(new Animation.AnimationListener() {
? ? ? ?@Override
? ? ? ?public void onAnimationStart(Animation animation) {
? ? ? ?}
? ? ? ?@Override
? ? ? ?public void onAnimationEnd(Animation animation) {
? ? ? ? ? ?mImageView.clearAnimation();
? ? ? ? ? ?GameData mGameData=(GameData)mImageView.getTag();
? ? ? ? ? ?iv_null_ImageView.setImageBitmap(mGameData.bm);
? ? ? ? ? ?GameData mNullgameData=(GameData)iv_null_ImageView.getTag();
? ? ? ? ? ?mNullgameData.bm=mGameData.bm;
? ? ? ? ? ?mNullgameData.p_x=mGameData.p_x;
? ? ? ? ? ?mNullgameData.p_y=mGameData.p_y;
? ? ? ? ? ?setNullImageView(mImageView);
? ? ? ?}
? ? ? ?@Override
? ? ? ?public void onAnimationRepeat(Animation animation) {
? ? ? ?}
? ?});
? ?mImageView.startAnimation(translateAnimation);
}
? ?//設(shè)置某個(gè)方塊為空方塊
? ?public void setNullImageView(ImageView mImageView){
? ? ?mImageView.setImageBitmap(null);
? ? ? ? iv_null_ImageView=mImageView;
? ?}
? ?public boolean isHasByNullImageView(ImageView mImageView){
? ? ? ?GameData mNullGameData=(GameData)iv_null_ImageView.getTag();
? ? ? ?GameData mGameData=(GameData)mImageView.getTag();
? ? ? ?if(mNullGameData.y==mGameData.y&&mGameData.x+1==mNullGameData.x){
? ? ? ? ? ?return true;
? ? ? ?}else if(mNullGameData.y==mGameData.y&&mGameData.x-1==mNullGameData.x){
? ? ? ? ? ?return true;
? ? ? ?}else if(mNullGameData.y==mGameData.y+1&&mGameData.x==mNullGameData.x){
? ? ? ? ? ?return true;
? ? ? ?}else if(mNullGameData.y==mGameData.y-1&&mGameData.x==mNullGameData.x){
? ? ? ? ? ?return true;
? ? ? ?}
? ? ? ?return false;
? ?}
class ?GameData{
? ?public ?int x=0;
? ?public ?int y=0;
? ?public ?Bitmap bm;
? ?public int p_x=0;
? ?public int p_y=0;
? ?public GameData(int x,int y,Bitmap bm){
? ? ? ?super();
? ? ? ?this.x=x;
? ? ? ?this.y=y;
? ? ? ?this.p_x=x;
? ? ? ?this.p_y=y;
? ?}
}
2017-09-14
在構(gòu)造函數(shù)是沒有對(duì)bm初始化