使用textview显示上图样式,后台返回的是html代码。
1,layout布局代码
<TextView android:id="@+id/task_being_txt_html" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/ui_10_dip" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp"/>
2,java代码
/**
* <P>任务进行中</P>
* Created by xxx on 2016/3/15.
*/
public class TaskBeingDetailActivity extends BaseActivity implements Html.ImageGetter{
private List<GetOrderDetailInfo> mListGetOrderDetailInfo = new ArrayList<>();
private GetOrderDetailInfo getOrderDetailInfo;
private TextView mTxtHtml;
/**
* 解析任务进行中数据
*/
Handler handlerGetOrderDetailInfo = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case CommonData.HTTP_HANDLE_FAILE:
break;
case CommonData.HTTP_HANDLE_SUCCESS:
if (msg.obj != null) {
String json = msg.obj.toString();
mListGetOrderDetailInfo = JsonUtil.parseFromJsonToList(json,
GetOrderDetailInfo.class);
getOrderDetailInfo = mListGetOrderDetailInfo.get(0);
try {
//获取data
JSONArray mJSONArray = new JSONArray(JsonUtil.getDataJson(json));
JSONObject item = mJSONArray.getJSONObject(0);
JSONObject taskInfo = item.getJSONObject("TaskInfo");
String Title = taskInfo.optString("Title");
String Content = taskInfo.optString("Content");
mMapgetOrderDetailInfoTaskInfo = new HashMap<>();
mMapgetOrderDetailInfoTaskInfo.put("Content", Content);
if (!getOrderDetailInfo.getOID().isEmpty()) {
setWidgetsData();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
break;
default:
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.push_right_in, R.anim.push_left_out);
setContentView(R.layout.activity_task_being_detail);
initViews();
initDatas();
}
@Override
public void initViews() {
mTxtHtml = (TextView) findViewById(R.id.task_being_txt_html);
}
@Override
public void initDatas() {
if (!Utils.isNetworkAvailable(this)) {
Toast.makeText(this, R.string.common_net_notwork, Toast.LENGTH_SHORT).show();
return;
}
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("orderID", taskOID);
HttpRequestUtil.sendHttpPostCommonRequest(IRequestAction.GetOrderDetailInfo, paramsMap,
handlerGetOrderDetailInfo);
}
@Override
public Drawable getDrawable(String source) {
LevelListDrawable d = new LevelListDrawable();
Drawable empty = getResources().getDrawable(R.mipmap.ic_launcher);
d.addLevel(0, 0, empty);
d.setBounds(0, 0, empty.getIntrinsicWidth(), empty.getIntrinsicHeight());
new LoadImage().execute(source, d);
return d;
}
/**
* 给组件赋值
*/
private void setWidgetsData() {
Spanned spanned = Html.fromHtml(mMapgetOrderDetailInfoTaskInfo.get("Content"),
TaskBeingDetailActivity.this, null);
mTxtHtml.setText(spanned);
}
/**
* 加载html代码中的图片
*/
private class LoadImage extends AsyncTask<Object, Void, Bitmap> {
private LevelListDrawable mDrawable;
@Override
protected Bitmap doInBackground(Object... params) {
String source = (String) params[0];
mDrawable = (LevelListDrawable) params[1];
try {
InputStream is = new URL(source).openStream();
return BitmapFactory.decodeStream(is);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
if (bitmap != null) {
@SuppressWarnings("deprecation")
BitmapDrawable d = new BitmapDrawable(bitmap);
mDrawable.addLevel(1, 1, d);
mDrawable.setBounds(0, 0, mTxtHtml.getWidth(), bitmap.getHeight());
mDrawable.setLevel(1);
CharSequence t = mTxtHtml.getText();
mTxtHtml.setText(t);
}
}
}
}