Android Open Source - SimpleReader Item Detail Activity






From Project

Back to project page SimpleReader.

License

The source code is released under:

Apache License

If you think the Android project SimpleReader listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.dreamteam.app.ui;
/* ww w .  j  av  a 2 s  .  c o  m*/
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.webkit.WebView;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

import com.dreamteam.app.commons.AppConfig;
import com.dreamteam.app.commons.AppContext;
import com.dreamteam.app.commons.HtmlFilter;
import com.dreamteam.app.commons.SeriaHelper;
import com.dreamteam.app.commons.UIHelper;
import com.dreamteam.app.db.DbManager;
import com.dreamteam.app.db.FavoItemDbHelper;
import com.dreamteam.app.entity.FeedItem;
import com.dreamteam.app.entity.ItemListEntity;
import com.dreamteam.app.utils.MD5;
import com.dreateam.app.ui.R;
import com.umeng.socialize.bean.SocializeEntity;
import com.umeng.socialize.bean.UMComment;
import com.umeng.socialize.controller.RequestType;
import com.umeng.socialize.controller.UMServiceFactory;
import com.umeng.socialize.controller.UMSocialService;
import com.umeng.socialize.controller.listener.SocializeListeners.FetchCommetsListener;

@SuppressLint("JavascriptInterface")
@SuppressWarnings("deprecation")
public class ItemDetailActivity extends FragmentActivity {
  private ImageButton collectBtn;
  private ImageButton shareBtn;
  private ImageButton commentBtn;
  private TextView countTv;// ????
  private static WebView mWebView;
  private String sectionTitle;
  private String sectionUrl;
  private String title;
  private String pubdate;
  private String itemDetail;
  private String link;
  private String firstImgUrl;
  private UMSocialService mController;
  private boolean isFavorite;// ??????????
  private String css = UIHelper.WEB_STYLE;
  private int[] favoIcons = { R.drawable.btn_favorite_empty,
      R.drawable.btn_favorite_full };// 0??

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    initView();
    loadData();
    initComments();
  }

  @SuppressLint("HandlerLeak")
  private Handler mHandler = new Handler() {

    @Override
    public void handleMessage(Message msg) {
      Intent intent = new Intent();
      intent.setAction(ItemListActivity.ACTION_UPDATE_ITEM_LIST);
      sendBroadcast(intent);
      super.handleMessage(msg);
    }
  };

  private void initComments() {
    String key = MD5.Md5(link);
    mController = UMServiceFactory.getUMSocialService(AppConfig.UM_BASE_KEY
        + key, RequestType.SOCIAL);
    mController.getComments(this, new FetchCommetsListener() {
      @Override
      public void onStart() {
      }

      @Override
      public void onComplete(int status, List<UMComment> comments,
          SocializeEntity entity) {
        if (status == 200 && comments != null && !comments.isEmpty()) {
          countTv.setText(comments.size() + "");
        }
      }
    }, -1);
  }

  @SuppressLint("SetJavaScriptEnabled")
  private void initView() {
    SharedPreferences prefs = AppContext.getPrefrences(this);
    if (prefs.getBoolean("day_night_mode", false)) {
      setTheme(R.style.AppNightTheme);
      css = UIHelper.WEB_STYLE_NIGHT;
      favoIcons = new int[] { R.drawable.btn_favorite_empty_night,
          R.drawable.btn_favorite_full_night };
    }

    isFavorite = getIntent().getBooleanExtra("is_favorite", false);
    setContentView(R.layout.feed_item_detail);
    shareBtn = (ImageButton) findViewById(R.id.fid_btn_share);
    shareBtn.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        mController.openShare(ItemDetailActivity.this, false);
      }

    });
    commentBtn = (ImageButton) findViewById(R.id.fid_btn_comment);
    commentBtn.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        mController.setShareContent(title + "????:" + link);
        mController.openComment(ItemDetailActivity.this, false);
      }
    });
    collectBtn = (ImageButton) findViewById(R.id.fid_btn_collecte);
    if (isFavorite)
      collectBtn.setImageResource(R.drawable.btn_favorite_full);
    collectBtn.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        DbManager helper = new DbManager(ItemDetailActivity.this,
            DbManager.DB_NAME, null, 1);
        final SQLiteDatabase db = helper.getWritableDatabase();
        // ????????????
        if (isFavorite) {
          collectBtn.setImageResource(favoIcons[0]);
          Toast.makeText(ItemDetailActivity.this, "????????",
              Toast.LENGTH_SHORT).show();
          FavoItemDbHelper.removeRecord(db, link);
          isFavorite = false;
        } else {
          // ?????
          isFavorite = true;
          collectBtn.setImageResource(favoIcons[1]);
          Toast.makeText(ItemDetailActivity.this, "??????!",
              Toast.LENGTH_SHORT).show();
          FavoItemDbHelper.insert(db, title, pubdate, itemDetail,
              link, firstImgUrl, sectionTitle);
        }
        Intent intent = new Intent();
        intent.putExtra("link", link);
        intent.putExtra("is_favorite", isFavorite);
        intent.setAction(ItemListActivity.ACTION_UPDATE_ITEM_LIST);
        sendBroadcast(intent);

        new Thread() {
          @Override
          public void run() {
            SeriaHelper helper = SeriaHelper.newInstance();
            File cache = AppContext.getSectionCache(sectionUrl);
            ItemListEntity entity = (ItemListEntity) helper
                .readObject(cache);
            ArrayList<FeedItem> items = entity.getItemList();
            for (FeedItem f : items) {
              if (f.getLink().equals(link))
                f.setFavorite(isFavorite);
            }
            entity.setItemList(items);
            helper.saveObject(entity, cache);
          }
        }.start();
      }
    });
    countTv = (TextView) findViewById(R.id.fid_tv_comment_count);
    mWebView = (WebView) findViewById(R.id.my_web_view);
    mWebView.getSettings()
        .setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
    mWebView.getSettings().setJavaScriptEnabled(true);
  }

  private void loadData() {
    Intent intent = getIntent();
    sectionTitle = intent.getStringExtra("section_title");
    sectionUrl = intent.getStringExtra("section_url");
    firstImgUrl = intent.getStringExtra("first_img_url");

    StringBuffer sb = new StringBuffer();
    title = intent.getStringExtra("title");
    pubdate = intent.getStringExtra("pubdate");
    itemDetail = intent.getStringExtra("item_detail");
    Log.e("ItemDetail", itemDetail);
    link = intent.getStringExtra("link");
    // ??style
    itemDetail = itemDetail.replaceAll(HtmlFilter.regexpForStyle, "");
    // ??img???
    itemDetail = itemDetail.replaceAll(
        "(<img[^>]*?)\\s+width\\s*=\\s*\\S+", "$1");
    itemDetail = itemDetail.replaceAll(
        "(<img[^>]*?)\\s+height\\s*=\\s*\\S+", "$1");
    // //??????
    // itemDetail = itemDetail.replaceAll("(<img[^>]+src=\")(\\S+)\"",
    // "$1$2\" onClick=\"javascript:mWebViewImageListener.onImageClick('$2')\"");
    // mWebView.addJavascriptInterface(this, "mWebViewImageListener");
    // ????????
    SharedPreferences pref = AppContext.getPrefrences(this);
    if (!pref.getBoolean("pref_imageLoad", false)) {
      itemDetail = itemDetail.replaceAll(
          "(<|;)\\s*(IMG|img)\\s+([^;^>]*)\\s*(;|>)", "");
    }
    sb.append("<h1>" + title + "</h1>");
    sb.append("<body>" + itemDetail + "</body>");
    mWebView.loadDataWithBaseURL(null, css + sb.toString(), "text/html",
        "UTF-8", null);
  }

  public void onImageClick(String url) {
    Intent intent = new Intent();
    intent.putExtra("url", url);
    intent.setClass(this, ImageDialog.class);
    startActivity(intent);
  }
}




Java Source Code List

com.dreamteam.app.adapter.CategoryDetailAdapter.java
com.dreamteam.app.adapter.FeedCategoryAdapter.java
com.dreamteam.app.adapter.GridAdapter.java
com.dreamteam.app.adapter.GuideViewPagerAdapter.java
com.dreamteam.app.adapter.ItemListAdapter.java
com.dreamteam.app.adapter.MPagerAdapter.java
com.dreamteam.app.commons.AppConfig.java
com.dreamteam.app.commons.AppContext.java
com.dreamteam.app.commons.HtmlFilter.java
com.dreamteam.app.commons.IFlyHelper.java
com.dreamteam.app.commons.ItemListEntityParser.java
com.dreamteam.app.commons.SectionHelper.java
com.dreamteam.app.commons.SeriaHelper.java
com.dreamteam.app.commons.SkinManager.java
com.dreamteam.app.commons.UIHelper.java
com.dreamteam.app.config.Contants.java
com.dreamteam.app.db.DbManager.java
com.dreamteam.app.db.FavoItemDbHelper.java
com.dreamteam.app.db.FeedDBManager.java
com.dreamteam.app.db.provider.RSSFeedCategoryProvider.java
com.dreamteam.app.entity.FeedItem.java
com.dreamteam.app.entity.Feed.java
com.dreamteam.app.entity.ItemListEntity.java
com.dreamteam.app.entity.RSSFeedCategroy.java
com.dreamteam.app.entity.Section.java
com.dreamteam.app.img.FileCacheManager.java
com.dreamteam.app.img.FileCache.java
com.dreamteam.app.img.ICache.java
com.dreamteam.app.img.ImageLoadTask.java
com.dreamteam.app.img.ImageLoad.java
com.dreamteam.app.img.ImageLoader.java
com.dreamteam.app.img.MemoryCache.java
com.dreamteam.app.rss.Dates.java
com.dreamteam.app.rss.Integers.java
com.dreamteam.app.rss.MediaAttributes.java
com.dreamteam.app.rss.MediaEnclosure.java
com.dreamteam.app.rss.MediaThumbnail.java
com.dreamteam.app.rss.RSSBase.java
com.dreamteam.app.rss.RSSConfig.java
com.dreamteam.app.rss.RSSException.java
com.dreamteam.app.rss.RSSFault.java
com.dreamteam.app.rss.RSSFeed.java
com.dreamteam.app.rss.RSSHandler.java
com.dreamteam.app.rss.RSSItem.java
com.dreamteam.app.rss.RSSLoader.java
com.dreamteam.app.rss.RSSParserSPI.java
com.dreamteam.app.rss.RSSParser.java
com.dreamteam.app.rss.RSSReaderException.java
com.dreamteam.app.rss.RSSReader.java
com.dreamteam.app.rss.Resources.java
com.dreamteam.app.ui.About.java
com.dreamteam.app.ui.BaseActivity.java
com.dreamteam.app.ui.BaseTitledActivity.java
com.dreamteam.app.ui.CategoryDetailActivity.java
com.dreamteam.app.ui.ColorListActivity.java
com.dreamteam.app.ui.FavoriteItemList.java
com.dreamteam.app.ui.FeedCategoryActivity.java
com.dreamteam.app.ui.FeedbackUI.java
com.dreamteam.app.ui.GuideActivity.java
com.dreamteam.app.ui.ImageDialog.java
com.dreamteam.app.ui.ImagesBrowseActivity.java
com.dreamteam.app.ui.ItemDetailActivity.java
com.dreamteam.app.ui.ItemListActivity.java
com.dreamteam.app.ui.LocalImageBrowseActivity.java
com.dreamteam.app.ui.LoginDialog.java
com.dreamteam.app.ui.MainActivity.java
com.dreamteam.app.ui.Setting.java
com.dreamteam.app.ui.SplashActivity.java
com.dreamteam.app.ui.SwitchBgActivity.java
com.dreamteam.app.ui.WidgetProvider.java
com.dreamteam.app.ui.adapter.ColorListAdapter.java
com.dreamteam.app.utils.CategoryNameExchange.java
com.dreamteam.app.utils.DateUtils.java
com.dreamteam.app.utils.FileUtils.java
com.dreamteam.app.utils.HttpUtils.java
com.dreamteam.app.utils.ImageLoader.java
com.dreamteam.app.utils.ImageUtils.java
com.dreamteam.app.utils.Logger.java
com.dreamteam.app.utils.MD5.java
com.dreamteam.app.utils.StringUtils.java
com.dreamteam.app.wallpaper.ChildAdapter.java
com.dreamteam.app.wallpaper.GroupGridAdapter.java
com.dreamteam.app.wallpaper.ImageBean.java
com.dreamteam.app.wallpaper.MyImageView.java
com.dreamteam.app.wallpaper.NativeImageLoader.java
com.dreamteam.app.wallpaper.WallPaperManager.java
com.dreamteam.custom.ui.PathAnimations.java
com.dreamteam.custom.ui.PullToRefreshListView.java