package com.dingmouren.dingdingmusic.ui.home;
import android.app.ActivityOptions;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
import android.support.design.widget.FloatingActionButton;
import android.text.Editable;
import android.text.TextWatcher;
import android.transition.ChangeBounds;
import android.transition.ChangeImageTransform;
import android.transition.ChangeTransform;
import android.transition.Explode;
import android.transition.Fade;
import android.transition.Slide;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.dingmouren.dingdingmusic.Constant;
import com.dingmouren.dingdingmusic.MyApplication;
import com.dingmouren.dingdingmusic.R;
import com.dingmouren.dingdingmusic.base.BaseActivity;
import com.dingmouren.dingdingmusic.bean.MusicBean;
import com.dingmouren.dingdingmusic.service.MediaPlayerService;
import com.dingmouren.dingdingmusic.ui.jk.JKActivity;
import com.dingmouren.dingdingmusic.ui.musicplay.PlayingActivity;
import com.dingmouren.dingdingmusic.ui.personal.PersonalCenterActivity;
import com.dingmouren.dingdingmusic.ui.rock.RockActivity;
import com.dingmouren.dingdingmusic.ui.search.SearchActivity;
import com.dingmouren.dingdingmusic.ui.volkslied.VolksliedActivity;
import com.dingmouren.greendao.MusicBeanDao;
import com.jiongbull.jlog.JLog;
import com.mancj.materialsearchbar.MaterialSearchBar;
import com.tencent.bugly.crashreport.CrashReport;
import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
public class MainActivity extends BaseActivity {
private static final String TAG = MainActivity.class.getName();
@BindView(R.id.fab_user)FloatingActionButton mFabUser;
@BindView(R.id.fab_music)FloatingActionButton mFabMusic;
@BindView(R.id.search_bar) MaterialSearchBar mSearchBar;
private Messenger mServiceMessenger;
private long exitTime ;//双击退出时用的时间标记
@Override
public int setLayoutResourceID() {
return R.layout.activity_main;
}
@Override
public void init(Bundle savedInstanceState) {
bindService(new Intent(this, MediaPlayerService.class), mServiceConnection, BIND_AUTO_CREATE);
}
@Override
public void initView() {
setupWindowAnimation();
}
@Override
public void initListener() {
mFabMusic.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Intent intent = new Intent(MainActivity.this, PlayingActivity.class);
intent.putExtra("x", (int) (view.getX() + view.getWidth() / 2));
intent.putExtra("y", (int) (view.getY() + view.getHeight() / 2));
startActivity(intent);
return false;
}
});
mFabUser.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Intent intent = new Intent(MainActivity.this, PersonalCenterActivity.class);
intent.putExtra("x", (int) (view.getX() + view.getWidth() / 2));
intent.putExtra("y", (int) (view.getY() + view.getHeight() / 2));
startActivity(intent);
return false;
}
});
mSearchBar.setOnClickListener((view -> startActivity(new Intent(MainActivity.this, SearchActivity.class))));
}
@Override
public void initData() {
}
@OnClick({R.id.img_randomn, R.id.img_jk, R.id.img_rock, R.id.img_volkslied, R.id.fab_user, R.id.fab_music})
public void onClick(View view) {
switch (view.getId()) {
case R.id.img_randomn:
playRandom();
break;
case R.id.img_jk:
turnToJK(view);
break;
case R.id.img_rock:
turnToRock(view);
break;
case R.id.img_volkslied:
turnToVolkslied(view);
break;
}
}
ServiceConnection mServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
mServiceMessenger = new Messenger(iBinder);
//连接到服务
if (null != mServiceMessenger) {
Message msgToService = Message.obtain();
msgToService.replyTo = mMessengerClient;
msgToService.what = Constant.MAIN_ACTIVITY;
try {
mServiceMessenger.send(msgToService);
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
}
};
Messenger mMessengerClient = new Messenger(new Handler() {
@Override
public void handleMessage(Message msgFromService) {
switch (msgFromService.what) {
case Constant.MEDIA_PLAYER_SERVICE_IS_PLAYING://正在播放
JLog.e(TAG, "收到消息了");
if (1 == msgFromService.arg1) {
mFabMusic.setVisibility(View.VISIBLE);
Glide.with(MainActivity.this).load(R.mipmap.playing).asGif().diskCacheStrategy(DiskCacheStrategy.NONE).into(mFabMusic);
} else if (0 == msgFromService.arg1) {
mFabMusic.setVisibility(View.GONE);
}
break;
}
super.handleMessage(msgFromService);
}
});
/**
* 随心听
*/
private void playRandom() {
Intent intent = new Intent(this, PlayingActivity.class);
intent.putExtra("flag", Constant.MAIN_RANDOM);
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
}
/**
* 日韩歌曲
*/
private void turnToJK(View view) {
startActivity(new Intent(this, JKActivity.class), ActivityOptions.makeSceneTransitionAnimation(this, view, "share_jk").toBundle());
}
/**
* 摇滚歌曲
*/
private void turnToRock(View view) {
startActivity(new Intent(this, RockActivity.class), ActivityOptions.makeSceneTransitionAnimation(this, view, "share_rock").toBundle());
}
/**
* 民谣歌曲
*/
private void turnToVolkslied(View view) {
startActivity(new Intent(this, VolksliedActivity.class), ActivityOptions.makeSceneTransitionAnimation(this, view, "share_volkslied").toBundle());
}
private void setupWindowAnimation() {
Explode explode = new Explode();
explode.setDuration(1000);
Fade fade = new Fade();
fade.setDuration(500);
getWindow().setReenterTransition(fade);
getWindow().setExitTransition(explode);
getWindow().setSharedElementExitTransition(new ChangeImageTransform());
getWindow().setSharedElementReenterTransition(new ChangeImageTransform());
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
if((System.currentTimeMillis()-exitTime) > 2000){
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onDestroy() {
unbindService(mServiceConnection);
super.onDestroy();
// MyApplication.getRefWatcher().watch(this);
}
}