package com.cjj.nices.activity; import static com.norbsoft.typefacehelper.TypefaceHelper.typeface; import com.cjj.nices.constant.Constants; import com.cjj.nices.db.NicesDBHelper; import com.cjj.nices.fragment.DetailFragment; import com.cjj.nices.model.NicesApplication; import com.cjj.nices.model.NicesNewsListEntity.NewsListEntity; import com.norbsoft.typefacehelper.ActionBarHelper; import android.annotation.SuppressLint; import android.graphics.Typeface; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.app.ActionBarActivity; import android.text.TextUtils; import android.view.GestureDetector; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.widget.Toast; /** * 新闻详情 * * @author cjj * */ @SuppressLint("NewApi") public class NewsDetailActivity extends ActionBarActivity { private long news_id ; private NewsListEntity entity; private GestureDetector mGestureDetector; /**收藏的标志*/ private boolean isFavoriteFlag = false; private MenuItem item; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); initActionBar(); mGestureDetector = new GestureDetector(this, mGestureListener); if(savedInstanceState == null) { news_id = getIntent().getLongExtra("id", 0); entity = (NewsListEntity) getIntent().getSerializableExtra("newsEntity"); }else { entity = (NewsListEntity) savedInstanceState.getSerializable(Constants.NEWS_ENTIRY); news_id = savedInstanceState.getLong(Constants.NEWS_ID); } Fragment fragment = DetailFragment.newInstance(news_id); getSupportFragmentManager().beginTransaction().replace(R.id.fl_container, fragment).commit(); isFavoriteFlag = NicesDBHelper.queryIsFavorite(String.valueOf(news_id)); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.favorite, menu); item = menu.findItem(R.id.favorite); if(isFavoriteFlag) { item.setIcon(R.drawable.favorite_press); item.setTitle("已收藏"); }else { item.setIcon(R.drawable.favorite_nor); item.setTitle("取消收藏"); } return super.onCreateOptionsMenu(menu); } @Override protected void onSaveInstanceState(Bundle outState) { outState.putLong(Constants.NEWS_ID, news_id); outState.putSerializable(Constants.NEWS_ENTIRY, entity); super.onSaveInstanceState(outState); } private void initActionBar() { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); // 显示logo getSupportActionBar().setDisplayShowHomeEnabled(true); // 可以自定义actionbar getSupportActionBar().setDisplayShowCustomEnabled(true); // getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_bg)); ActionBarHelper.setTitle(getSupportActionBar(), typeface(this, R.string.app_name,NicesApplication.nicesApplication.getHuayunTypeface(),Typeface.NORMAL)); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case android.R.id.home: this.finish(); break; case R.id.favorite: favoriteDao(); break; case R.id.share: MainActivity.instance.showShare(entity.title); break; default: break; } return super.onOptionsItemSelected(item); } private void favoriteDao() { if(isFavoriteFlag) { NicesDBHelper.deleteFavoriteById(String.valueOf(news_id)); item.setIcon(R.drawable.favorite_nor); item.setTitle("取消收藏"); isFavoriteFlag = false; Toast.makeText(NewsDetailActivity.this,"已取消收藏", Toast.LENGTH_SHORT).show(); }else { String title = entity.title; String image = entity.images.get(0); String id = String.valueOf(news_id); if(!TextUtils.isEmpty(id)&&!TextUtils.isEmpty(title)&&!TextUtils.isEmpty(image)) { NicesDBHelper.insertFavoriteContent(id, title, image, "cjj"); Toast.makeText(NewsDetailActivity.this,"添加收藏成功", Toast.LENGTH_SHORT).show(); item.setIcon(R.drawable.favorite_press); item.setTitle("已收藏"); isFavoriteFlag = true; }else { Toast.makeText(NewsDetailActivity.this,"添加收藏失败", Toast.LENGTH_SHORT).show(); } } } @Override public boolean dispatchTouchEvent(MotionEvent ev) { try { mGestureDetector.onTouchEvent(ev); } catch (Exception e) { e.printStackTrace(); } return super.dispatchTouchEvent(ev); } /** * 手势处理 */ // 手指在屏幕滑动,X轴最小变化值 private static final int FLING_MIN_DISTANCE_X = 150; // 手指在屏幕滑动,Y轴最小变化值 private static final int FLING_MIN_DISTANCE = 10; // 手指在屏幕滑动,最小速度 private static final int FLING_MIN_VELOCITY = 1; public SimpleOnGestureListener mGestureListener = new SimpleOnGestureListener() { public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { boolean isXWell = Math.abs(e2.getX() - e1.getX()) < FLING_MIN_DISTANCE_X ? true : false; if (isXWell && e1.getY() - e2.getY() > FLING_MIN_DISTANCE && Math.abs(velocityY) > FLING_MIN_VELOCITY) { getSupportActionBar().hide(); } else if (isXWell && e2.getY() - e1.getY() > FLING_MIN_DISTANCE && Math.abs(velocityY) > FLING_MIN_VELOCITY) { getSupportActionBar().show(); } if(!isXWell) { NewsDetailActivity.this.finish(); } return false; }; }; }