652 lines
23 KiB
Java
652 lines
23 KiB
Java
package com.gh.gamecenter;
|
|
|
|
import android.Manifest;
|
|
import android.animation.Animator;
|
|
import android.app.Activity;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.SharedPreferences;
|
|
import android.net.wifi.ScanResult;
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.os.Message;
|
|
import android.preference.PreferenceManager;
|
|
import android.support.annotation.NonNull;
|
|
import android.text.Html;
|
|
import android.view.MenuItem;
|
|
import android.view.View;
|
|
import android.view.animation.AccelerateInterpolator;
|
|
import android.view.animation.AlphaAnimation;
|
|
import android.view.animation.Animation;
|
|
import android.view.animation.ScaleAnimation;
|
|
import android.view.animation.TranslateAnimation;
|
|
import android.widget.ImageView;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.RelativeLayout;
|
|
import android.widget.TextView;
|
|
|
|
import com.facebook.drawee.view.SimpleDraweeView;
|
|
import com.gh.base.BaseActivity;
|
|
import com.gh.common.util.DialogUtils;
|
|
import com.gh.common.util.DisplayUtils;
|
|
import com.gh.common.util.UserIconUtils;
|
|
import com.gh.common.view.RadarView;
|
|
import com.gh.gamecenter.kuaichuan.BaseTransfer;
|
|
import com.gh.gamecenter.kuaichuan.Constant;
|
|
import com.gh.gamecenter.kuaichuan.FileInfo;
|
|
import com.gh.gamecenter.kuaichuan.HotspotManager;
|
|
import com.gh.gamecenter.kuaichuan.WifiMgr;
|
|
import com.gh.gamecenter.kuaichuan.WifiUtils;
|
|
import com.halo.assistant.HaloApp;
|
|
import com.lightgame.utils.Utils;
|
|
|
|
import org.json.JSONObject;
|
|
|
|
import java.lang.ref.WeakReference;
|
|
import java.net.DatagramPacket;
|
|
import java.net.DatagramSocket;
|
|
import java.net.InetAddress;
|
|
import java.net.InetSocketAddress;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import butterknife.BindView;
|
|
import butterknife.OnClick;
|
|
import pub.devrel.easypermissions.EasyPermissions;
|
|
|
|
import static com.gh.gamecenter.KcSelectGameActivity.SEND_OVER_REQUEST;
|
|
|
|
/**
|
|
* Created by khy on 2017/1/20.
|
|
*/
|
|
public class ChooseReceiverActivity extends BaseActivity implements View.OnClickListener {
|
|
|
|
@BindView(R.id.choosereceiver_user1_name)
|
|
TextView choosereceiver_user1_name;
|
|
@BindView(R.id.choosereceiver_user2_name)
|
|
TextView choosereceiver_user2_name;
|
|
@BindView(R.id.choosereceiver_user3_name)
|
|
TextView choosereceiver_user3_name;
|
|
@BindView(R.id.choosereceiver_user4_name)
|
|
TextView choosereceiver_user4_name;
|
|
@BindView(R.id.choosereceiver_user1)
|
|
LinearLayout choosereceiver_user1;
|
|
@BindView(R.id.choosereceiver_user2)
|
|
LinearLayout choosereceiver_user2;
|
|
@BindView(R.id.choosereceiver_user3)
|
|
LinearLayout choosereceiver_user3;
|
|
@BindView(R.id.choosereceiver_user4)
|
|
LinearLayout choosereceiver_user4;
|
|
@BindView(R.id.choosereceiver_user1_icon)
|
|
SimpleDraweeView userIcon1;
|
|
@BindView(R.id.choosereceiver_user2_icon)
|
|
SimpleDraweeView userIcon2;
|
|
@BindView(R.id.choosereceiver_user3_icon)
|
|
SimpleDraweeView userIcon3;
|
|
@BindView(R.id.choosereceiver_user4_icon)
|
|
SimpleDraweeView userIcon4;
|
|
@BindView(R.id.choosereceiver_radar)
|
|
RadarView mRadarView;
|
|
@BindView(R.id.scan_user)
|
|
TextView mScanUser;
|
|
@BindView(R.id.scan_user_des)
|
|
TextView mScanUserDes;
|
|
@BindView(R.id.scan_hint)
|
|
TextView mScanHint;
|
|
@BindView(R.id.choosereceiver_roket_anim)
|
|
RelativeLayout mRoketAnimRl;
|
|
@BindView(R.id.choosereceiver_ready_rl)
|
|
RelativeLayout mRoketRl;
|
|
@BindView(R.id.choosereceiver_roket_anim_bottom)
|
|
LinearLayout mRoketAnimBottom;
|
|
@BindView(R.id.choosereceiver_roket_anim_top)
|
|
ImageView mRoketTop;
|
|
@BindView(R.id.choosereceiver_roket_left)
|
|
ImageView mRoketAnimLeft;
|
|
@BindView(R.id.choosereceiver_roket_right)
|
|
ImageView mRoketAnimRight;
|
|
|
|
View mToolbarContainer;
|
|
|
|
private static final String KET_SHOWCONNHINTDIALOG = "showConnHintDialog";
|
|
|
|
private List<ScanResult> mScanResultList;
|
|
|
|
private DatagramSocket mDatagramSocket;
|
|
|
|
private boolean isStopScan;
|
|
|
|
private boolean isDestroy;
|
|
|
|
private int conUserIconTag;
|
|
|
|
private SharedPreferences sp;
|
|
|
|
private ScaleAnimation mScaleAnimation; // 火箭喷火动画
|
|
|
|
private TranslateAnimation mTranslateAnimation; // 整个火箭移动页面
|
|
|
|
private Handler handler = new MyHandler(this);
|
|
|
|
private String[] mPermissions = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION};
|
|
|
|
@NonNull
|
|
public static Intent getIntent(Context context, boolean showConnHintDialog) {
|
|
Intent intent = new Intent(context, ChooseReceiverActivity.class);
|
|
intent.putExtra(KET_SHOWCONNHINTDIALOG, showConnHintDialog);
|
|
return intent;
|
|
}
|
|
|
|
@Override
|
|
protected int getLayoutId() {
|
|
return R.layout.activity_receive_choose;
|
|
}
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setNavigationTitle(R.string.title_choose_activity);
|
|
setToolbarMenu(R.menu.menu_receive);
|
|
|
|
mToolbarContainer = findViewById(R.id.normal_toolbar_container);
|
|
|
|
sp = PreferenceManager.getDefaultSharedPreferences(this);
|
|
|
|
// 检查权限
|
|
EasyPermissions.requestPermissions(this, "传输文件需要定位权限", 0x9527, mPermissions);
|
|
}
|
|
|
|
@Override
|
|
public void onPermissionsGranted(int requestCode, List<String> perms) {
|
|
super.onPermissionsGranted(requestCode, perms);
|
|
|
|
conUserIconTag = 1;
|
|
mRadarView.setSearching(true);
|
|
|
|
mScanHint.setText(Html.fromHtml(getString(R.string.kc_scan_hint)));
|
|
|
|
isStopScan = false;
|
|
isDestroy = false;
|
|
|
|
if (HotspotManager.isApOn(getApplicationContext())) {
|
|
HotspotManager.disableAp(getApplicationContext());
|
|
}
|
|
|
|
if (!WifiMgr.getInstance(this).isWifiEnable()) { //wifi未打开的情况
|
|
WifiMgr.getInstance(this).openWifi();
|
|
}
|
|
|
|
updateWifiScanResult();
|
|
handler.sendEmptyMessageDelayed(0, 2000);
|
|
|
|
boolean showConnHintDialog = sp.getBoolean(KET_SHOWCONNHINTDIALOG, true);
|
|
if (showConnHintDialog || (getIntent() != null && getIntent().getExtras() != null
|
|
&& getIntent().getExtras().getBoolean(KET_SHOWCONNHINTDIALOG))) {
|
|
if (showConnHintDialog) {
|
|
sp.edit().putBoolean(KET_SHOWCONNHINTDIALOG, false).apply();
|
|
}
|
|
showConnHintDialog();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onPermissionsDenied(int requestCode, List<String> perms) {
|
|
super.onPermissionsDenied(requestCode, perms);
|
|
toast("请授予定位权限");
|
|
finish();
|
|
}
|
|
|
|
@Override
|
|
public int provideNavigationIcon() {
|
|
return R.drawable.ic_filereceive_back;
|
|
}
|
|
|
|
@Override
|
|
public boolean onMenuItemClick(MenuItem item) {
|
|
if (item.getItemId() == R.id.menu_receive_hint) showConnHintDialog();
|
|
return super.onMenuItemClick(item);
|
|
}
|
|
|
|
private void showConnHintDialog() {
|
|
DialogUtils.showHintDialog(ChooseReceiverActivity.this, "请告诉你的好友这样操作:", "1.打开光环助手,点击左上角“↓” " +
|
|
"\n2.点击右上方的“免流量传送” \n3.点击“我要接收”", "确定");
|
|
}
|
|
|
|
private void updateWifiScanResult() {
|
|
|
|
if (mScanResultList != null && mScanResultList.size() > 0) {
|
|
mScanUser.setText("点击头像开始发送");
|
|
mScanUserDes.setVisibility(View.GONE);
|
|
} else {
|
|
mScanUserDes.setVisibility(View.VISIBLE);
|
|
mScanUser.setText("正在寻找周围的小伙伴...");
|
|
}
|
|
|
|
if (mScanResultList != null) {
|
|
mScanResultList.clear();
|
|
}
|
|
|
|
choosereceiver_user1.setVisibility(View.GONE);
|
|
choosereceiver_user2.setVisibility(View.GONE);
|
|
choosereceiver_user3.setVisibility(View.GONE);
|
|
choosereceiver_user4.setVisibility(View.GONE);
|
|
choosereceiver_user1.setEnabled(true);
|
|
choosereceiver_user2.setEnabled(true);
|
|
choosereceiver_user3.setEnabled(true);
|
|
choosereceiver_user4.setEnabled(true);
|
|
|
|
WifiMgr.getInstance(this).startScan();
|
|
mScanResultList = WifiMgr.getInstance(this).getScanResultList();
|
|
Utils.log("======WifiCount::" + mScanResultList.size());
|
|
mScanResultList = WifiUtils.filterWithNoPassword(mScanResultList);
|
|
if (mScanResultList != null) {
|
|
for (int i = 0; i < mScanResultList.size(); i++) {
|
|
ScanResult scanResult = mScanResultList.get(i);
|
|
Utils.log(i + "=====" + scanResult.SSID);
|
|
|
|
int icon = 1;
|
|
try {
|
|
icon = Integer.parseInt(scanResult.SSID.substring(scanResult.SSID.length() - 1));
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
switch (i) {
|
|
case 0:
|
|
choosereceiver_user1.setVisibility(View.VISIBLE);
|
|
choosereceiver_user1_name.setText(scanResult.SSID);
|
|
choosereceiver_user1.setOnClickListener(this);
|
|
userIcon1.setImageURI(UserIconUtils.getUserIcon(icon));
|
|
break;
|
|
case 1:
|
|
choosereceiver_user2.setVisibility(View.VISIBLE);
|
|
choosereceiver_user2_name.setText(scanResult.SSID);
|
|
choosereceiver_user2.setOnClickListener(this);
|
|
userIcon2.setImageURI(UserIconUtils.getUserIcon(icon));
|
|
break;
|
|
case 2:
|
|
choosereceiver_user3.setVisibility(View.VISIBLE);
|
|
choosereceiver_user3_name.setText(scanResult.SSID);
|
|
choosereceiver_user3.setOnClickListener(this);
|
|
userIcon3.setImageURI(UserIconUtils.getUserIcon(icon));
|
|
break;
|
|
case 3:
|
|
choosereceiver_user4.setVisibility(View.VISIBLE);
|
|
choosereceiver_user4_name.setText(scanResult.SSID);
|
|
choosereceiver_user4.setOnClickListener(this);
|
|
userIcon4.setImageURI(UserIconUtils.getUserIcon(icon));
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
protected void onDestroy() {
|
|
mRadarView.setSearching(false);
|
|
isDestroy = true;
|
|
isStopScan = true;
|
|
handler.removeCallbacksAndMessages(null);
|
|
super.onDestroy();
|
|
}
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
if (v == choosereceiver_user1) {
|
|
connReceiverWifi(0);
|
|
} else if (v == choosereceiver_user2) {
|
|
connReceiverWifi(1);
|
|
} else if (v == choosereceiver_user3) {
|
|
connReceiverWifi(2);
|
|
} else if (v == choosereceiver_user4) {
|
|
connReceiverWifi(3);
|
|
}
|
|
}
|
|
|
|
@OnClick(R.id.scan_hint)
|
|
public void onScanHintListener() {
|
|
// DialogUtils.showHintDialog(this, "请告诉你的好友这样操作:", "1.拿出手机,打开光环助手 " +
|
|
// "\n2.点击首页左上角,进入下载管理 \n3.点击“零流量传送”,再点击“我要接收”",
|
|
// "确定");
|
|
|
|
// 是否需要关闭扫描??
|
|
|
|
startActivity(ShareGhActivity.getIntent(this));
|
|
} //1.连接网络
|
|
|
|
private void connReceiverWifi(int connPosition) {
|
|
|
|
if (isStopScan) {
|
|
return;
|
|
}
|
|
|
|
// 进入动画页面
|
|
readyAnimView();
|
|
|
|
handler.sendEmptyMessageDelayed(2, 30000);
|
|
|
|
Utils.log("======开始连接热点");
|
|
mScanUser.setText("开始连接对方设备...");
|
|
isStopScan = true;
|
|
// choosereceiver_user1.setEnabled(false);
|
|
// choosereceiver_user2.setEnabled(false);
|
|
// choosereceiver_user3.setEnabled(false);
|
|
// choosereceiver_user4.setEnabled(false);
|
|
|
|
// handler.postAtTime(new Runnable() { // 5s后还收不到接收者的回馈消息 重新回到扫描页面
|
|
// @Override
|
|
// public void run() {
|
|
// Utils.log("==========aa" + isConnSuccess);
|
|
// if (!isConnSuccess) {
|
|
// isStopScan = false;
|
|
// updateWifiScanResult();
|
|
// }
|
|
// }
|
|
// }, 5000);
|
|
|
|
String ssid = mScanResultList.get(connPosition).SSID;
|
|
WifiMgr.getInstance(this).openWifi();
|
|
WifiMgr.getInstance(this).addNetwork(WifiMgr.createWifiCfg(ssid, null, WifiMgr.WIFICIPHER_NOPASS));
|
|
|
|
try {
|
|
conUserIconTag = Integer.parseInt(ssid.substring(ssid.length() - 1));
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
createSendMsgToServerRunnable(WifiMgr.getInstance(this).getIpAddressFromHotspot());
|
|
}
|
|
|
|
@Override
|
|
public boolean onHandleBackPressed() {
|
|
closeSocket();
|
|
HaloApp.remove(KcSelectGameActivity.KEY_FILE_INFO);
|
|
return false;
|
|
}
|
|
|
|
//发送UDP通知信息到 文件接收方 开启ServerSocketRunnable
|
|
private void createSendMsgToServerRunnable(final String ipAddress) {
|
|
HaloApp.getInstance().getMainExecutor().execute(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
try {
|
|
startFileSenderServer(ipAddress);
|
|
} catch (Exception e) {
|
|
isStopScan = false;
|
|
handler.sendEmptyMessage(0);
|
|
Utils.log("UDP通信异常--startFileSenderServer" + e.toString());
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
static class MyHandler extends Handler {
|
|
|
|
private WeakReference<Activity> mActivityWeakReference;
|
|
|
|
MyHandler(Activity activity) {
|
|
mActivityWeakReference = new WeakReference<>(activity);
|
|
}
|
|
|
|
@Override
|
|
public void handleMessage(Message msg) {
|
|
super.handleMessage(msg);
|
|
|
|
ChooseReceiverActivity activity = (ChooseReceiverActivity) mActivityWeakReference.get();
|
|
if (activity != null) {
|
|
if (msg.what == 0 && !activity.isStopScan) {
|
|
activity.updateWifiScanResult();
|
|
sendEmptyMessageDelayed(0, 2000);
|
|
} else if (msg.what == 2) {
|
|
activity.isStopScan = false;
|
|
sendEmptyMessage(0);
|
|
activity.connFailedAnimView();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void startFileSenderServer(String ipAddress) throws Exception {
|
|
int serverPort = Constant.DEFAULT_SERVER_COM_PORT;
|
|
|
|
// 确保Wifi连接上之后获取得到IP地址
|
|
int count = 0;
|
|
while (ipAddress.equals(Constant.DEFAULT_UNKOWN_IP) && count < Constant.DEFAULT_TRY_TIME) {
|
|
Thread.sleep(1000);
|
|
ipAddress = WifiMgr.getInstance(ChooseReceiverActivity.this).getIpAddressFromHotspot();
|
|
count++;
|
|
}
|
|
|
|
// 即使获取到连接的热点wifi的IP地址也是无法连接网络 所以采取此策略
|
|
count = 0;
|
|
while (!WifiUtils.pingIpAddress(ipAddress) && count < Constant.DEFAULT_TRY_TIME) {
|
|
Thread.sleep(500);
|
|
count++;
|
|
}
|
|
|
|
if (mDatagramSocket == null) {
|
|
mDatagramSocket = new DatagramSocket(null);
|
|
mDatagramSocket.setReuseAddress(true);
|
|
mDatagramSocket.bind(new InetSocketAddress(serverPort));
|
|
}
|
|
// mDatagramSocket = new DatagramSocket(serverPort);
|
|
byte[] receiveData = new byte[1024];
|
|
byte[] sendData;
|
|
Utils.log("=====ip::" + ipAddress);
|
|
if (!"192.168.43.1".equals(ipAddress)) {
|
|
// 连接失败,可能是连接的热点已经关闭, 关闭动画,开启扫描
|
|
isStopScan = false;
|
|
handler.sendEmptyMessage(0);
|
|
handler.post(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
connFailedAnimView();
|
|
}
|
|
});
|
|
}
|
|
InetAddress ipAddressName = InetAddress.getByName(ipAddress); // 转译
|
|
|
|
//发送 即将发送的文件列表 到文件接收方
|
|
sendFileInfoListToFileReceiverWithUdp(serverPort, ipAddressName);
|
|
|
|
//发送 文件接收方 初始化
|
|
|
|
JSONObject senderData = new JSONObject();
|
|
senderData.put(Constant.MSG_FILE_RECEIVER_INIT, sp.getString("user_name", "光环用户"));
|
|
senderData.put("UserIcon", sp.getInt("default_user_icon", 1));
|
|
|
|
sendData = senderData.toString().getBytes(BaseTransfer.UTF_8);
|
|
DatagramPacket sendPacket =
|
|
new DatagramPacket(sendData, sendData.length, ipAddressName, serverPort);
|
|
mDatagramSocket.send(sendPacket);
|
|
|
|
while (!isDestroy) {
|
|
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
|
|
mDatagramSocket.receive(receivePacket);
|
|
String response = new String(receivePacket.getData(), 0, receivePacket.getLength()).trim();
|
|
Utils.log("ChooseReceiverActivity:: 接收UDP请求" + response);
|
|
|
|
if (response.contains(Constant.MSG_FILE_RECEIVER_INIT_SUCCESS)) {
|
|
JSONObject jsonObject = new JSONObject(response);
|
|
Utils.log("ChooseReceiverActivity:: 收到UDP请求::SUCCESS=" + jsonObject.getString(Constant.MSG_FILE_RECEIVER_INIT_SUCCESS));
|
|
|
|
Map<String, String> userMap = new HashMap<>();
|
|
userMap.put("receiverName", jsonObject.getString(Constant.MSG_FILE_RECEIVER_INIT_SUCCESS));
|
|
userMap.put("usericon", String.valueOf(conUserIconTag));
|
|
|
|
HaloApp.put("userMap", userMap);
|
|
|
|
handler.post(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
mRadarView.setSearching(false);
|
|
connSuccessAnimView();
|
|
}
|
|
});
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private void sendFileInfoListToFileReceiverWithUdp(int serverPort, InetAddress ipAddress) {
|
|
List<FileInfo> fileInfoList = (List<FileInfo>) HaloApp.get(KcSelectGameActivity.KEY_FILE_INFO, false);
|
|
if (fileInfoList == null) {
|
|
return;
|
|
}
|
|
for (FileInfo fileInfo : fileInfoList) {
|
|
String fileInfoJson = FileInfo.toJsonStr(fileInfo);
|
|
Utils.log("ChooseReceiverActivity:: 发送的文件列表::" + fileInfoJson);
|
|
DatagramPacket sendFileInfoListPacket =
|
|
new DatagramPacket(fileInfoJson.getBytes(), fileInfoJson.getBytes().length, ipAddress, serverPort);
|
|
try {
|
|
mDatagramSocket.send(sendFileInfoListPacket);
|
|
Utils.log("ChooseReceiverActivity:: UDP通知 Success::" + ipAddress + "==" + serverPort);
|
|
} catch (Exception e) {
|
|
Utils.log("ChooseReceiverActivity:: UDP通知 Failure!");
|
|
}
|
|
}
|
|
}
|
|
|
|
// 连接中-动画
|
|
private void readyAnimView() {
|
|
mToolbarContainer.setVisibility(View.GONE);
|
|
mRoketRl.setVisibility(View.VISIBLE);
|
|
mRoketRl.animate()
|
|
.alpha(1f)
|
|
.setDuration(1000)
|
|
.setListener(null);
|
|
|
|
mScaleAnimation = new ScaleAnimation(0.5f, 0.8f, 0.5f, 0.8f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
|
|
mScaleAnimation.setDuration(250);
|
|
mScaleAnimation.setRepeatCount(Animation.INFINITE);
|
|
mScaleAnimation.setRepeatMode(Animation.REVERSE);
|
|
|
|
mRoketAnimLeft.startAnimation(mScaleAnimation);
|
|
mRoketAnimRight.startAnimation(mScaleAnimation);
|
|
}
|
|
|
|
// 连接成功-动画
|
|
private void connSuccessAnimView() {
|
|
handler.removeMessages(2);
|
|
|
|
if (mScaleAnimation != null) {
|
|
mScaleAnimation.cancel();
|
|
}
|
|
AlphaAnimation alphaAnimation = new AlphaAnimation(1f, 0.6f);
|
|
alphaAnimation.setDuration(250);
|
|
alphaAnimation.setRepeatCount(Animation.INFINITE);
|
|
alphaAnimation.setRepeatMode(Animation.REVERSE);
|
|
mRoketAnimLeft.startAnimation(alphaAnimation);
|
|
mRoketAnimRight.startAnimation(alphaAnimation);
|
|
|
|
mScaleAnimation = new ScaleAnimation(0.5f, 0.8f, 0.5f, 0.8f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
|
|
mScaleAnimation.setDuration(250);
|
|
mScaleAnimation.setRepeatCount(Animation.INFINITE);
|
|
mScaleAnimation.setRepeatMode(Animation.REVERSE);
|
|
|
|
mRoketAnimLeft.setImageResource(R.drawable.kuaichuan_rocket_fire);
|
|
mRoketAnimRight.setImageResource(R.drawable.kuaichuan_rocket_fire);
|
|
|
|
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) mRoketAnimRight.getLayoutParams();
|
|
layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT;
|
|
layoutParams.width = DisplayUtils.dip2px(this, 25);
|
|
|
|
mRoketAnimRight.setLayoutParams(layoutParams);
|
|
LinearLayout.LayoutParams layoutParams2 = (LinearLayout.LayoutParams) mRoketAnimLeft.getLayoutParams();
|
|
layoutParams2.height = LinearLayout.LayoutParams.MATCH_PARENT;
|
|
layoutParams2.width = DisplayUtils.dip2px(this, 25);
|
|
|
|
layoutParams2.setMargins(0, 0, DisplayUtils.dip2px(ChooseReceiverActivity.this, 14), 0);
|
|
mRoketAnimLeft.setLayoutParams(layoutParams2);
|
|
|
|
|
|
if (mScaleAnimation == null) {
|
|
mScaleAnimation.cancel();
|
|
}
|
|
|
|
mTranslateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, -1000);
|
|
mTranslateAnimation.setDuration(1000);
|
|
mTranslateAnimation.setInterpolator(new AccelerateInterpolator(2.0f));
|
|
// mTranslateAnimation.setFillAfter(true);
|
|
|
|
mRoketAnimRl.startAnimation(mTranslateAnimation);
|
|
|
|
mTranslateAnimation.setAnimationListener(new Animation.AnimationListener() {
|
|
@Override
|
|
public void onAnimationStart(Animation animation) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onAnimationEnd(Animation animation) {
|
|
mRoketAnimRl.setVisibility(View.GONE);
|
|
startActivity(FileSenderActivity.getIntent(ChooseReceiverActivity.this));
|
|
closeSocket();
|
|
Intent resultIntent = new Intent();
|
|
resultIntent.putExtra("isFinish", true);
|
|
setResult(SEND_OVER_REQUEST, resultIntent);
|
|
finish();
|
|
}
|
|
|
|
@Override
|
|
public void onAnimationRepeat(Animation animation) {
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
// 连接失败-动画
|
|
private void connFailedAnimView() {
|
|
mToolbarContainer.setVisibility(View.VISIBLE);
|
|
toast("连接失败");
|
|
if (mScaleAnimation != null) {
|
|
mScaleAnimation.cancel();
|
|
}
|
|
mRoketRl.animate()
|
|
.alpha(0f)
|
|
.setDuration(1000)
|
|
.setListener(new Animator.AnimatorListener() {
|
|
@Override
|
|
public void onAnimationStart(Animator animation) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onAnimationEnd(Animator animation) {
|
|
mRoketRl.setVisibility(View.GONE);
|
|
}
|
|
|
|
@Override
|
|
public void onAnimationCancel(Animator animation) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onAnimationRepeat(Animator animation) {
|
|
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
|
|
/**
|
|
* 关闭UDP Socket 流
|
|
*/
|
|
private void closeSocket() {
|
|
isStopScan = true;
|
|
if (mDatagramSocket != null) {
|
|
// mDatagramSocket.disconnect();
|
|
mDatagramSocket.close();
|
|
mDatagramSocket = null;
|
|
}
|
|
}
|
|
|
|
|
|
}
|