package com.jaf.biubiu; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.jaf.bean.ResponseRandomFeedback; import com.jaf.jcore.BaseActionBarActivity; import com.jaf.jcore.BindView; import com.jaf.jcore.Http; import com.jaf.jcore.HttpCallBack; import com.jaf.jcore.JacksonWrapper; import org.json.JSONObject; import java.io.InputStream; import java.util.Timer; import java.util.TimerTask; import master.flame.danmaku.controller.DrawHandler; import master.flame.danmaku.danmaku.loader.ILoader; import master.flame.danmaku.danmaku.loader.IllegalDataException; import master.flame.danmaku.danmaku.loader.android.DanmakuLoaderFactory; import master.flame.danmaku.danmaku.model.DanmakuTimer; import master.flame.danmaku.danmaku.model.android.DanmakuGlobalConfig; import master.flame.danmaku.danmaku.model.android.Danmakus; import master.flame.danmaku.danmaku.parser.BaseDanmakuParser; import master.flame.danmaku.danmaku.parser.IDataSource; import master.flame.danmaku.danmaku.parser.android.BiliDanmukuParser; import master.flame.danmaku.ui.widget.DanmakuView; public class ActivityFeedback extends BaseActionBarActivity { @BindView(id = R.id.msgEdit) private EditText mContent; @BindView(id = R.id.send, onClick = "onSendClick") private View mSend; @BindView(id = R.id.danmu) private DanmakuView mDanmakuView; private BaseDanmakuParser mParser; private Timer mTimer; private TimerTask mTask; private Http mHttp; @Override protected int onLoadViewResource() { return R.layout.activity_feedback; } @Override protected void onViewDidLoad(Bundle savedInstanceState) { mHttp = new Http(); mContent.setHint(R.string.feedback_tips); mParser = createParser(this.getResources().openRawResource(R.raw.empty)); DanmakuGlobalConfig.DEFAULT.setDanmakuStyle(DanmakuGlobalConfig.DANMAKU_STYLE_STROKEN, 3).setDuplicateMergingEnabled(false); mDanmakuView.setCallback(new DrawHandler.Callback() { @Override public void updateTimer(DanmakuTimer timer) { } @Override public void prepared() { mDanmakuView.start(); } }); mDanmakuView.enableDanmakuDrawingCache(true); mDanmakuView.prepare(mParser); mTimer = new Timer(); mTask = new TimerTask() { @Override public void run() { runOnUiThread(new randomPull()); } }; mTimer.scheduleAtFixedRate(mTask, 0, 5000); } public class randomPull implements Runnable { @Override public void run() { mHttp.url(Constant.API).JSON(U.buildPostFeedBackRandom()).post(new HttpCallBack() { @Override public void onResponse(JSONObject response) { ResponseRandomFeedback responseRandomFeedback = JacksonWrapper.json2Bean(response, ResponseRandomFeedback.class); if (responseRandomFeedback != null) { for (ResponseRandomFeedback.FeedbackItem item : responseRandomFeedback.getReturnData().getContData()) { DanmuHelper.addDanmaku(mDanmakuView, false, item.getCont()); } } } }); } } private BaseDanmakuParser createParser(InputStream stream) { if (stream == null) { return new BaseDanmakuParser() { @Override protected Danmakus parse() { return new Danmakus(); } }; } ILoader loader = DanmakuLoaderFactory.create(DanmakuLoaderFactory.TAG_BILI); try { loader.load(stream); } catch (IllegalDataException e) { e.printStackTrace(); } BaseDanmakuParser parser = new BiliDanmukuParser(); IDataSource<?> dataSource = loader.getDataSource(); parser.load(dataSource); return parser; } public static void start(Activity activity) { activity.startActivity(new Intent(activity, ActivityFeedback.class)); } public void onSendClick(View v) { Http http = new Http(); if (TextUtils.isEmpty(mContent.getText())) { Toast.makeText(this, R.string.saySomething, Toast.LENGTH_SHORT).show(); } else { JSONObject jo = U.buildPostFeedback(mContent.getText().toString()); http.url(Constant.API).JSON(jo).post(new HttpCallBack() { @Override public void onResponse(JSONObject response) { super.onResponse(response); Toast.makeText(ActivityFeedback.this, R.string.feedback_success, Toast.LENGTH_SHORT).show(); mContent.setText(""); U.hideSoftKeyboard(ActivityFeedback.this); } }); } } }