第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

滑動(dòng)拼圖,點(diǎn)擊可滑動(dòng)的拼圖,那個(gè)拼圖就消失了

照著視頻 ?快速實(shí)現(xiàn)不一樣的移動(dòng)拼圖 ?寫下來(lái)的程序,寫到2-3的時(shí)候,我點(diǎn)擊可滑動(dòng)方塊,本來(lái)應(yīng)該是和空方塊進(jìn)行交換的,但是卻沒(méi)有進(jìn)行交換,而本來(lái)的方塊也消失了,就造成了,我點(diǎn)擊空方塊旁邊有圖案的方塊之后,空方塊還是空的,有圖案的方塊也消失了。

正在回答

3 回答

把整個(gè)Activity代碼貼上來(lái),我?guī)湍阏艺以?/p>

0 回復(fù) 有任何疑惑可以回復(fù)我~
package?com.example.shinelon.android01;

import?android.graphics.Bitmap;
import?android.graphics.drawable.BitmapDrawable;
import?android.support.v7.app.AppCompatActivity;
import?android.os.Bundle;
import?android.view.View;
import?android.view.animation.Animation;
import?android.view.animation.TranslateAnimation;
import?android.widget.GridLayout;
import?android.widget.ImageView;
import?android.widget.Toast;

public?class?MainActivity?extends?AppCompatActivity?{

????/**
?????*?利用二維數(shù)組創(chuàng)建?若干個(gè)?游戲方塊
?????*/
????private?ImageView[][]?iv_game_arr?=?new?ImageView[3][5];
????/*游戲主界面*/
????private?GridLayout?main_game;
???/*當(dāng)前空方塊的實(shí)例的保存*/
????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.ic_game_tu06)).getBitmap();?//獲取?一張大圖片
????????int?tuWandH?=?bigBm.getWidth()?/?5;
????????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);?????????//根據(jù)行跟列切割成小圖片
????????????????iv_game_arr[i][j]?=?new?ImageView(this);
????????????????iv_game_arr[i][j].setImageBitmap(bm);??//設(shè)置每個(gè)游戲方塊的圖標(biāo)
????????????????iv_game_arr[i][j].setPadding(2,?2,?2,?2);
????????????????iv_game_arr[i][j].setTag(new?GameData(i,j,bm));??//綁定自定義的數(shù)據(jù)
????????????????iv_game_arr[i][j].setOnClickListener(new?View.OnClickListener()?{
????????????????????@Override
????????????????????public?void?onClick(View?v)?{
??????????????????????boolean?flag?=??isHasByNullImageView((ImageView)v);
????????????????????????Toast.makeText(MainActivity.this,?"當(dāng)前位置是否存在"+flag,?Toast.LENGTH_SHORT).show();
????????????????????????if(flag){
????????????????????????????changeDataByImageView((ImageView)?v);
????????????????????????}
????????????????????}
????????????????});
????????????}
????????}
????????/*初始化主界面,并添加游戲方塊*/
????????main_game?=?(GridLayout)?findViewById(R.id.main_game);
????????for?(int?i?=?0;?i?<?iv_game_arr.length;?i++)?{
????????????for?(int?j?=?0;?j?<?iv_game_arr[i].length;?j++)?{
????????????????main_game.addView(iv_game_arr[i][j]);
????????????}
????????}
????????setNullImageView(iv_game_arr[2][2]);???//獲取摸個(gè)圖片,調(diào)用setNullImageView方法
????}
????/**
?????*?利用動(dòng)畫結(jié)束之后交換兩個(gè)方塊的數(shù)據(jù)
?????*/
????public?void?changeDataByImageView(final?ImageView?imageView){
?????????//創(chuàng)建動(dòng)畫,設(shè)置好方向,移動(dòng)的距離
????????TranslateAnimation??translateAnimation?=?null;
????????if(imageView.getX()>iv_null_ImageView.getX()){??//當(dāng)前點(diǎn)擊的方塊在空方塊的下方
?????????//?往上移動(dòng)
????????????translateAnimation??=new?TranslateAnimation(0.1f,?-imageView.getWidth(),0.1f,0.1f);
????????}else?if(imageView.getX()<iv_null_ImageView.getX()){??//當(dāng)前點(diǎn)擊的方塊在空方塊的上方
????????????//?往下移動(dòng)
????????????translateAnimation??=new?TranslateAnimation(0.1f,?imageView.getWidth(),0.1f,0.1f);
????????}else?if(imageView.getY()>iv_null_ImageView.getY()){??//當(dāng)前點(diǎn)擊的方塊在空方塊的右方
????????????//?往左移動(dòng)
????????????translateAnimation??=new?TranslateAnimation(0.1f,?0.1f,0.1f,-imageView.getWidth());
????????}else?if(imageView.getY()<iv_null_ImageView.getY()){??//當(dāng)前點(diǎn)擊的方塊在空方塊的左方
????????????//?往右移動(dòng)
????????????translateAnimation??=new?TranslateAnimation(0.1f,?0.1f,0.1f,imageView.getWidth());
????????}
????????//設(shè)置動(dòng)畫的時(shí)長(zhǎng)
????????translateAnimation.setDuration(70);
????????//設(shè)置動(dòng)畫結(jié)束之后是否停留
????????translateAnimation.setFillAfter(true);
????????//設(shè)置動(dòng)畫結(jié)束之后要真正的把數(shù)據(jù)換了
????????translateAnimation.setAnimationListener(new?Animation.AnimationListener()?{
????????????@Override
????????????public?void?onAnimationStart(Animation?animation)?{

????????????}

????????????@Override
????????????public?void?onAnimationEnd(Animation?animation)?{

????????????}

????????????@Override
????????????public?void?onAnimationRepeat(Animation?animation)?{
????????????????imageView.clearAnimation();
????????????????GameData?GameData?=?(GameData)imageView.getTag();
????????????????iv_null_ImageView.setImageBitmap(GameData.bm);
????????????????GameData?NullGameData?=?(GameData)iv_null_ImageView.getTag();
????????????????NullGameData.bm?=?GameData.bm;
????????????????NullGameData.p_x=GameData.p_x;
????????????????NullGameData.p_y?=GameData.p_y;
????????????????setNullImageView(imageView);
????????????}
????????});
????????//執(zhí)行動(dòng)畫
????????imageView.startAnimation(translateAnimation);
????}
????/**
?????*?設(shè)置某個(gè)方塊為空
?????*/
????public?void?setNullImageView(ImageView?imageView)?{
????????imageView.setImageBitmap(null);
????????iv_null_ImageView?=?imageView;
????}

????//判斷當(dāng)前方塊是否與空的方塊是相鄰的關(guān)系
????public?boolean?isHasByNullImageView(ImageView?imageView)?{

????????GameData?NullGameData?=?(GameData)iv_null_ImageView.getTag();
????????GameData?GameData?=?(GameData)imageView.getTag();
????????if(NullGameData.y==GameData.y&&NullGameData.x==GameData.x+1){????//當(dāng)前點(diǎn)擊為上方
????????????return??true;
????????}else?if(NullGameData.y==GameData.y&&NullGameData.x==GameData.x-1){??//當(dāng)前點(diǎn)擊為下方
????????????return??true;
????????}else?if(NullGameData.y==GameData.y+1&&NullGameData.x==GameData.x){??//當(dāng)前點(diǎn)擊為左方
????????????return??true;
????????}else?if(NullGameData.y==GameData.y-1&&NullGameData.x==GameData.x){??//當(dāng)前點(diǎn)擊為右方
????????????return??true;
????????}
????????return?false;
????}
????/**為每個(gè)小方塊綁定數(shù)據(jù)*/
????class??GameData{
????????/**每個(gè)方塊的實(shí)際位置x*/
????????public?int?x?=?0;
????????/**每個(gè)小方塊的實(shí)際位置y*/
????????public??int?y?=?0;
????????/**每個(gè)小方塊圖片*/
????????public??Bitmap?bm;
????????/**每個(gè)小方塊圖片的實(shí)際位置y*/
????????public?int?p_x?=?0;
????????/**每個(gè)小方塊圖片的實(shí)際位置y*/
????????public?int?p_y?=?0;
????????public?GameData(int?x,?int?y,?Bitmap?bm)?{
????????????this.x?=?x;
????????????this.y?=?y;
????????????this.bm?=?bm;
????????????this.p_x?=?x;
????????????this.p_y?=?y;
????????}
????}
}

為什么交換的時(shí)候只是圖片交換了,原來(lái)初始化空白的實(shí)際位置不變,導(dǎo)致只能原來(lái)圖片只能和初始化的空白位置交換。

0 回復(fù) 有任何疑惑可以回復(fù)我~

@阿旭_

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

滑動(dòng)拼圖,點(diǎn)擊可滑動(dòng)的拼圖,那個(gè)拼圖就消失了

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)