package org.aisen.weibo.sina.support.utils;
import android.app.Activity;
import android.app.Fragment;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.provider.Settings;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.widget.ShareActionProvider;
import android.text.TextUtils;
import android.util.TypedValue;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import com.afollestad.materialdialogs.AlertDialogWrapper;
import org.aisen.android.common.context.GlobalContext;
import org.aisen.android.common.md.MDHelper;
import org.aisen.android.common.setting.SettingUtility;
import org.aisen.android.common.utils.DateUtils;
import org.aisen.android.common.utils.FileUtils;
import org.aisen.android.common.utils.Logger;
import org.aisen.android.common.utils.SystemUtils;
import org.aisen.android.common.utils.Utils;
import org.aisen.android.common.utils.ViewUtils;
import org.aisen.android.component.bitmaploader.BitmapLoader;
import org.aisen.android.component.bitmaploader.core.BitmapDecoder;
import org.aisen.android.network.task.TaskException;
import org.aisen.android.network.task.WorkTask;
import org.aisen.android.ui.activity.basic.BaseActivity;
import org.aisen.android.ui.fragment.ABaseFragment;
import org.aisen.android.ui.fragment.APagingFragment;
import org.aisen.android.ui.fragment.ATabsFragment;
import org.aisen.android.ui.fragment.ATabsTabLayoutFragment;
import org.aisen.weibo.sina.R;
import org.aisen.weibo.sina.base.AppContext;
import org.aisen.weibo.sina.base.AppSettings;
import org.aisen.weibo.sina.sinasdk.SinaSDK;
import org.aisen.weibo.sina.sinasdk.bean.GroupSortResult;
import org.aisen.weibo.sina.sinasdk.bean.StatusComment;
import org.aisen.weibo.sina.sinasdk.bean.StatusContent;
import org.aisen.weibo.sina.sinasdk.bean.WeiBoUser;
import org.aisen.weibo.sina.ui.activity.base.MainActivity;
import org.aisen.weibo.sina.ui.activity.base.SinaCommonActivity;
import org.aisen.weibo.sina.ui.activity.profile.UserProfileActivity;
import org.aisen.weibo.sina.ui.activity.publish.PublishActivity;
import org.aisen.weibo.sina.ui.fragment.base.BizFragment;
import org.aisen.weibo.sina.ui.fragment.comment.TimelineCommentFragment;
import org.aisen.weibo.sina.ui.fragment.comment.TimelineDetailPagerFragment;
import org.aisen.weibo.sina.ui.fragment.timeline.ATimelineFragment;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.lang.reflect.Field;
import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import fr.castorflex.android.circularprogressbar.CircularProgressDrawable;
/**
* Created by wangdan on 15/4/12.
*/
public class AisenUtils {
public static int getThemeColor(Context context) {
final int materialBlue = Color.parseColor("#ff0000");
int themeColor = MDHelper.resolveColor(context, R.attr.themeColor, materialBlue);
return themeColor;
}
public static String getUserScreenName(WeiBoUser user) {
if (AppSettings.isShowRemark() && !TextUtils.isEmpty(user.getRemark()))
return user.getRemark();
return user.getScreen_name();
}
public static String getUserKey(String key, WeiBoUser user) {
return key + "-" + user.getIdstr();
}
public static File getUploadFile(Context context, File source) {
Logger.w("原图图片大小" + (source.length() / 1024) + "KB");
if (source.getName().toLowerCase().endsWith(".gif")) {
Logger.w("上传图片是GIF图片,上传原图");
return source;
}
File file = null;
String imagePath = GlobalContext.getInstance().getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS) + File.separator +
SettingUtility.getStringSetting("draft") + File.separator;
int sample = 1;
int maxSize = 0;
int type = AppSettings.getUploadSetting();
// 自动,WIFI时原图,移动网络时高
if (type == 0) {
if (SystemUtils.getNetworkType(context) == SystemUtils.NetWorkType.wifi)
type = 1;
else
type = 2;
}
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile(source.getAbsolutePath(), opts);
switch (type) {
// 原图
case 1:
Logger.w("原图上传");
file = source;
break;
// 高
case 2:
sample = BitmapDecoder.calculateInSampleSize(opts, 1920, 1080);
Logger.w("高质量上传");
maxSize = 700 * 1024;
imagePath = imagePath + "高" + File.separator + source.getName();
file = new File(imagePath);
break;
// 中
case 3:
Logger.w("中质量上传");
sample = BitmapDecoder.calculateInSampleSize(opts, 1280, 720);
maxSize = 300 * 1024;
imagePath = imagePath + "中" + File.separator + source.getName();
file = new File(imagePath);
break;
// 低
case 4:
Logger.w("低质量上传");
sample = BitmapDecoder.calculateInSampleSize(opts, 1280, 720);
maxSize = 100 * 1024;
imagePath = imagePath + "低" + File.separator + source.getName();
file = new File(imagePath);
break;
default:
break;
}
// 压缩图片
if (type != 1 && !file.exists()) {
Logger.w(String.format("压缩图片,原图片 path = %s", source.getAbsolutePath()));
byte[] imageBytes = FileUtils.readFileToBytes(source);
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
out.write(imageBytes);
} catch (Exception e) {
}
Logger.w(String.format("原图片大小%sK", String.valueOf(imageBytes.length / 1024)));
if (imageBytes.length > maxSize) {
// 尺寸做压缩
BitmapFactory.Options options = new BitmapFactory.Options();
if (sample > 1) {
options.inSampleSize = sample;
Bitmap bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length, options);
Logger.w(String.format("压缩图片至大小:%d*%d", bitmap.getWidth(), bitmap.getHeight()));
out.reset();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
imageBytes = out.toByteArray();
}
options.inSampleSize = 1;
if (imageBytes.length > maxSize) {
BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length, options);
Bitmap bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length, options);
int quality = 90;
out.reset();
Logger.w(String.format("压缩图片至原来的百分之%d大小", quality));
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, out);
while (out.toByteArray().length > maxSize) {
out.reset();
quality -= 10;
Logger.w(String.format("压缩图片至原来的百分之%d大小", quality));
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, out);
}
}
}
try {
if (!file.getParentFile().exists())
file.getParentFile().mkdirs();
Logger.w(String.format("最终图片大小%sK", String.valueOf(out.toByteArray().length / 1024)));
FileOutputStream fo = new FileOutputStream(file);
fo.write(out.toByteArray());
fo.flush();
fo.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return file;
}
public static void showMenuDialog(ABaseFragment fragment, final View targetView,
String[] menuArr, DialogInterface.OnClickListener onItemClickListener) {
new AlertDialogWrapper.Builder(fragment.getActivity())
.setItems(menuArr, onItemClickListener)
.show();
}
public static String getFirstId(@SuppressWarnings("rawtypes") List datas) {
int size = datas.size();
if (size > 0)
return getId(datas.get(0));
return null;
}
public static String getLastId(@SuppressWarnings("rawtypes") List datas) {
int size = datas.size();
if (size > 0)
return getId(datas.get(size - 1));
return null;
}
public static String getId(Object t) {
try {
Field idField = t.getClass().getDeclaredField("id");
idField.setAccessible(true);
return idField.get(t).toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@SuppressWarnings("deprecation")
public static String convDate(String time) {
try {
Context context = GlobalContext.getInstance();
Resources res = context.getResources();
StringBuffer buffer = new StringBuffer();
Calendar createCal = Calendar.getInstance();
if (time.length() == 13) {
try {
createCal.setTimeInMillis(Long.parseLong(time));
} catch (Exception e) {
createCal.setTimeInMillis(Date.parse(time));
}
}
else {
createCal.setTimeInMillis(Date.parse(time));
}
Calendar currentcal = Calendar.getInstance();
currentcal.setTimeInMillis(System.currentTimeMillis());
long diffTime = (currentcal.getTimeInMillis() - createCal.getTimeInMillis()) / 1000;
// 同一月
if (currentcal.get(Calendar.MONTH) == createCal.get(Calendar.MONTH)) {
// 同一天
if (currentcal.get(Calendar.DAY_OF_MONTH) == createCal.get(Calendar.DAY_OF_MONTH)) {
if (diffTime < 3600 && diffTime >= 60) {
buffer.append((diffTime / 60) + res.getString(R.string.msg_few_minutes_ago));
} else if (diffTime < 60) {
buffer.append(res.getString(R.string.msg_now));
} else {
buffer.append(res.getString(R.string.msg_today)).append(" ").append(DateUtils.formatDate(createCal.getTimeInMillis(), "HH:mm"));
}
}
// 前一天
else if (currentcal.get(Calendar.DAY_OF_MONTH) - createCal.get(Calendar.DAY_OF_MONTH) == 1) {
buffer.append(res.getString(R.string.msg_yesterday)).append(" ").append(DateUtils.formatDate(createCal.getTimeInMillis(), "HH:mm"));
}
}
if (buffer.length() == 0) {
buffer.append(DateUtils.formatDate(createCal.getTimeInMillis(), "MM-dd HH:mm"));
}
String timeStr = buffer.toString();
if (currentcal.get(Calendar.YEAR) != createCal.get(Calendar.YEAR)) {
timeStr = createCal.get(Calendar.YEAR) + " " + timeStr;
}
return timeStr;
} catch (Throwable e) {
e.printStackTrace();
}
return time;
}
public static String getGender(WeiBoUser user) {
Resources res = GlobalContext.getInstance().getResources();
if (user != null) {
if ("m".equals(user.getGender())) {
return res.getString(R.string.msg_male);
} else if ("f".equals(user.getGender())) {
return res.getString(R.string.msg_female);
} else if ("n".equals(user.getGender())) {
return res.getString(R.string.msg_gender_unknow);
}
}
return "";
}
public static String convCount(int count) {
if (count < 10000) {
return count + "";
} else {
Resources res = GlobalContext.getInstance().getResources();
String result = new DecimalFormat("#.0").format(count * 1.0f / 10000) + res.getString(R.string.msg_ten_thousand);
return result;
}
}
public static String getCounter(int count, String append) {
Resources res = GlobalContext.getInstance().getResources();
if (count < 10000)
return String.valueOf(count) + append;
else if (count < 100 * 10000)
return new DecimalFormat("#.0").format(count * 1.0f / 10000) + append + res.getString(R.string.msg_ten_thousand);
else
return new DecimalFormat("#").format(count * 1.0f / 10000) + append + res.getString(R.string.msg_ten_thousand);
}
public static String getCounter(int count) {
return getCounter(count, "");
}
/**
* 显示高清头像
*
* @param user
* @return
*/
public static String getUserPhoto(WeiBoUser user) {
if (user == null)
return "";
if (AppSettings.isLargePhoto() && !TextUtils.isEmpty(user.getAvatar_large())) {
return user.getAvatar_large();
}
return user.getProfile_image_url();
}
public static void setImageVerified(ImageView imgVerified, WeiBoUser user) {
// 2014-08-27 新增判断,VerifiedType存在为null的情况
if (user == null || user.getVerified_type() == null) {
imgVerified.setVisibility(View.GONE);
return;
}
// 黄V
if (user.getVerified_type() == 0) {
imgVerified.setImageResource(R.drawable.avatar_vip);
}
// 200:初级达人 220:高级达人
else if (user.getVerified_type() == 200 || user.getVerified_type() == 220) {
imgVerified.setImageResource(R.drawable.avatar_grassroot);
}
// 蓝V
else if (user.getVerified_type() > 0) {
imgVerified.setImageResource(R.drawable.avatar_enterprise_vip);
}
if (user.getVerified_type() >= 0)
imgVerified.setVisibility(View.VISIBLE);
else
imgVerified.setVisibility(View.GONE);
}
public static void timelineMenuSelected(final ABaseFragment fragment, String selectedItem, final StatusContent status) {
final String[] timelineMenuArr = GlobalContext.getInstance().getResources().getStringArray(R.array.timeline_menus);
try {
int position = 0;
for (int i = 0; i < timelineMenuArr.length; i++) {
if (timelineMenuArr[i].equals(selectedItem)) {
position = i;
break;
}
}
switch (position) {
// 原微博
case 0:
TimelineDetailPagerFragment.launch(fragment.getActivity(), status.getRetweeted_status());
break;
// 复制
case 1:
AisenUtils.copyToClipboard(status.getText());
if (fragment.getActivity() != null)
ViewUtils.showMessage(fragment.getActivity(), R.string.msg_text_copyed);
break;
// 转发
case 2:
BizFragment.createBizFragment(fragment).statusRepost(status);
break;
// 评论
case 3:
BizFragment.createBizFragment(fragment).commentCreate(status);
break;
// 收藏
case 4:
BizFragment.createBizFragment(fragment).favorityCreate(status.getId() + "", null);
break;
// 取消收藏
case 5:
BizFragment.createBizFragment(fragment).favorityDestory(status.getId() + "", null);
break;
// 删除微博
case 6:
deleteStatus(fragment, status);
break;
// 屏蔽微博
case 7:
shieldStatus(fragment, status);
break;
// 围观
case 8:
PublishActivity.publishStatusRepostAndWeiguan(fragment.getActivity(), null, status);
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static void deleteStatus(final ABaseFragment fragment, final StatusContent status) {
new AlertDialogWrapper.Builder(fragment.getActivity())
.setMessage(R.string.msg_del_status_remind)
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
BizFragment.createBizFragment(fragment).statusDestory(status.getId() + "", new BizFragment.OnStatusDestoryCallback() {
@SuppressWarnings({"rawtypes"})
@Override
public void onStatusDestory(StatusContent status) {
if (fragment instanceof ATimelineFragment) {
APagingFragment aRefreshFragment = ((APagingFragment) fragment);
for (Object so : aRefreshFragment.getAdapterItems()) {
StatusContent s = (StatusContent) so;
if (String.valueOf(s.getId()).equals(String.valueOf(status.getId()))) {
aRefreshFragment.getAdapterItems().remove(s);
aRefreshFragment.getAdapter().notifyDataSetChanged();
break;
}
}
} else {
if (fragment.getActivity() != null && fragment instanceof TimelineCommentFragment) {
Intent data = new Intent();
data.putExtra("status", status.getId());
fragment.getActivity().setResult(Activity.RESULT_OK, data);
fragment.getActivity().finish();
}
if (fragment.getActivity() != null)
ViewUtils.showMessage(fragment.getActivity(), R.string.delete_success);
}
}
@Override
public boolean onFaild(TaskException e) {
if (fragment.getActivity() != null)
ViewUtils.showMessage(fragment.getActivity(), R.string.delete_faild);
return true;
}
});
}
})
.show();
}
private static void shieldStatus(final ABaseFragment fragment, final StatusContent status) {
new AlertDialogWrapper.Builder(fragment.getActivity())
.setMessage(R.string.msg_shield_remind)
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new WorkTask<Void, Void, GroupSortResult>() {
@Override
protected void onPrepare() {
super.onPrepare();
Resources res = GlobalContext.getInstance().getResources();
ViewUtils.createProgressDialog(fragment.getActivity(), res.getString(R.string.processing), ThemeUtils.getThemeColor()).show();
}
@Override
protected void onFinished() {
super.onFinished();
ViewUtils.dismissProgressDialog();
}
@Override
protected void onFailure(TaskException exception) {
super.onFailure(exception);
if (fragment.getActivity() != null)
ViewUtils.showMessage(fragment.getActivity(), exception.getMessage());
}
@Override
protected void onSuccess(GroupSortResult result) {
super.onSuccess(result);
if (fragment.getActivity() != null) {
if ("true".equals(result.getResult()))
ViewUtils.showMessage(fragment.getActivity(), R.string.msg_shield_success);
else
ViewUtils.showMessage(fragment.getActivity(), R.string.msg_shield_faild);
}
}
@Override
public GroupSortResult workInBackground(Void... params) throws TaskException {
return SinaSDK.getInstance(AppContext.getAccount().getAccessToken()).statusMentionsShield(status.getId() + "");
}
}.execute();
}
})
.show();
}
public static String getCommentText(String text) {
if (TextUtils.isEmpty(text))
return "";
try {
if (text.startsWith("回覆") || text.startsWith("回复")) {
if (text.indexOf(":") != -1) {
text = text.substring(text.indexOf(":") + 1, text.length());
}
else if (text.indexOf(":") != -1) {
text = text.substring(text.indexOf(":") + 1, text.length());
}
}
} catch (Exception e) {
}
return text.trim();
}
public static void setTextSize(TextView textView) {
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, AppSettings.getTextSize());
}
public static int getStrLength(String content) {
int length = 0;
int tempLength = 0;
for (int i = 0; i < content.length(); i++) {
String temp = content.charAt(i) + "";
if (temp.getBytes().length == 3) {
length++;
} else {
tempLength++;
}
}
length += tempLength / 2 + ((tempLength % 2) == 0 ? 0 : 1);
return length;
}
public static void commentMenuSelected(final ABaseFragment fragment, String selectedItem, final StatusComment comment) {
final String[] commentMenuArr = GlobalContext.getInstance().getResources().getStringArray(R.array.cmt_menus);
try {
int position = 0;
for (int i = 0; i < commentMenuArr.length; i++) {
if (commentMenuArr[i].equals(selectedItem)) {
position = i;
break;
}
}
switch (position) {
// 复制
case 0:
AisenUtils.copyToClipboard(comment.getText());
if (fragment.getActivity() != null)
ViewUtils.showMessage(fragment.getActivity(), R.string.msg_text_copyed);
break;
// 转发
case 1:
BizFragment.createBizFragment(fragment).commentRepost(comment);
break;
// 删除
case 2:
new AlertDialogWrapper.Builder(fragment.getActivity()).setMessage(R.string.msg_del_cmt_remind)
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
BizFragment.createBizFragment(fragment).commentDestory(comment, new BizFragment.OnCommentDestoryCallback() {
@SuppressWarnings("unchecked")
@Override
public void onCommentDestory(StatusComment commnet) {
if (fragment instanceof APagingFragment) {
@SuppressWarnings("rawtypes")
APagingFragment aRefreshFragment = ((APagingFragment) fragment);
for (Object so : aRefreshFragment.getAdapterItems()) {
StatusComment s = (StatusComment) so;
if (s.getId().equals(commnet.getId())) {
aRefreshFragment.getAdapterItems().remove(s);
aRefreshFragment.getAdapter().notifyDataSetChanged();
break;
}
}
}
}
});
}
})
.show();
break;
// 评论
case 3:
BizFragment.createBizFragment(fragment).replyComment(comment.getStatus(), comment);
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void copyToClipboard(String text) {
// 得到剪贴板管理器
try {
ClipboardManager cmb = (ClipboardManager) GlobalContext.getInstance().getSystemService(Context.CLIPBOARD_SERVICE);
cmb.setPrimaryClip(ClipData.newPlainText(null, text.trim()));
} catch (Exception e) {
}
}
public static void launchBrowser(Activity from, String url) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri content_url = Uri.parse(url);
intent.setData(content_url);
from.startActivity(intent);
}
public static String getStatusMulImage(Context context, String thumbImage) {
switch (AppSettings.getPictureMode()) {
// MODE_AUTO
case 2:
if (SystemUtils.getNetworkType(context) == SystemUtils.NetWorkType.wifi)
return thumbImage.replace("thumbnail", "bmiddle");
return thumbImage;
// MODE_ALWAYS_ORIG
case 1:
return thumbImage.replace("thumbnail", "bmiddle");
case 3:
return thumbImage.replace("thumbnail", "bmiddle");
// MODE_ALWAYS_THUMB
case 0:
return thumbImage;
default:
return thumbImage;
}
}
public static void onMenuClicked(ABaseFragment fragment, int menuId, StatusContent status) {
switch (menuId) {
case R.id.comment:
BizFragment.createBizFragment(fragment).commentCreate(status);
break;
case R.id.repost:
BizFragment.createBizFragment(fragment).statusRepost(status);
break;
case R.id.fav:
BizFragment.createBizFragment(fragment).favorityCreate(status.getId() + "", null);
break;
case R.id.fav_destory:
BizFragment.createBizFragment(fragment).favorityDestory(status.getId() + "", null);
break;
case R.id.copy:
copyToClipboard(status.getText());
if (fragment.getActivity() != null)
ViewUtils.showMessage(fragment.getActivity(), R.string.msg_text_copyed);
break;
case R.id.delete:
deleteStatus(fragment, status);
break;
case R.id.weiguan:
PublishActivity.publishStatusRepostAndWeiguan(fragment.getActivity(), null, status);
break;
case R.id.share:
break;
}
}
public static void setStatusShareMenu(MenuItem shareItem, StatusContent status) {
String url = null;
if (status.getPic_urls() != null && status.getPic_urls().length > 0) {
url = status.getPic_urls()[0].getThumbnail_pic();
}
else if (!TextUtils.isEmpty(status.getThumbnail_pic())) {
url = status.getThumbnail_pic();
}
if (!TextUtils.isEmpty(url)) {
File file = BitmapLoader.getInstance().getCacheFile(url.replace("thumbnail", "large"));
if (file.exists()) {
url = url.replace("thumbnail", "large");
} else {
file = BitmapLoader.getInstance().getCacheFile(url.replace("thumbnail", "bmiddle"));
if (file.exists()) {
url = url.replace("thumbnail", "bmiddle");
}
}
}
Intent shareIntent = Utils.getShareIntent(status.getText(), status.getText(), url);
ShareActionProvider shareProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem);
shareProvider.setShareHistoryFileName("channe_share.xml");
shareProvider.setShareIntent(shareIntent);
}
public static boolean isLoggedUser(WeiBoUser user) {
return user.getIdstr().equalsIgnoreCase(AppContext.getAccount().getUser().getIdstr());
}
public static String getUnit(long length) {
String sizeStr;
if (length * 1.0f / 1024 / 1024 > 1)
sizeStr = String.format("%s M", new DecimalFormat("#.00").format(length * 1.0d / 1024 / 1024));
else
sizeStr = String.format("%s Kb", new DecimalFormat("#.00").format(length * 1.0d / 1024));
return sizeStr;
}
public static Drawable getProgressBarDrawable() {
if (BaseActivity.getRunningActivity() != null) {
Activity context = BaseActivity.getRunningActivity();
int color = context.getResources().getColor(ThemeUtils.themeColorArr[AppSettings.getThemeColor()][0]);
return new CircularProgressDrawable.Builder(context).color(color).build();
}
return null;
}
public static void setStatusBar(Activity activity) {
// if (true) return;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
Window window = activity.getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
);//| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// window.setStatusBarColor(Utils.resolveColor(activity, R.attr.theme_statusbar_color, Color.BLUE));
window.setStatusBarColor(Color.parseColor("#20000000"));
window.setNavigationBarColor(activity.getResources().getColor(ThemeUtils.themeColorArr[AppSettings.getThemeColor()][1]));
// window.setNavigationBarColor(Utils.resolveColor(activity, R.attr.theme_color, Color.BLUE));
// Window window = activity.getWindow();
// window.requestFeature(Window.FEATURE_NO_TITLE);
// window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
// | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
// window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
// | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
// | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
// window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// window.setStatusBarColor(Color.TRANSPARENT);
// window.setNavigationBarColor(Utils.resolveColor(activity, R.attr.theme_statusbar_color, Color.TRANSPARENT));
}
}
public static void setPicStatusBar(Activity activity) {
// if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// activity.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
// Window window = activity.getWindow();
// window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
// | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
// window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
// | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
// | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
// window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// window.setStatusBarColor(Color.TRANSPARENT);
// }
}
public static boolean checkTabsFragmentCanRequestData(Fragment checkedFragment) {
if (checkedFragment.getActivity() == null)
return false;
ABaseFragment aFragment = null;
if (checkedFragment.getActivity() instanceof SinaCommonActivity) {
aFragment = (ABaseFragment) checkedFragment.getActivity().getFragmentManager().findFragmentByTag(SinaCommonActivity.FRAGMENT_TAG);
}
else if (checkedFragment.getActivity() instanceof MainActivity) {
aFragment = (ABaseFragment) checkedFragment.getActivity().getFragmentManager().findFragmentByTag("MainFragment");
}
else if (checkedFragment.getActivity() instanceof UserProfileActivity) {
aFragment = (ABaseFragment) checkedFragment.getActivity().getFragmentManager().findFragmentByTag(SinaCommonActivity.FRAGMENT_TAG);
}
if (aFragment != null && aFragment instanceof ATabsFragment) {
ATabsFragment fragment = (ATabsFragment) aFragment;
return fragment.getCurrentFragment() == checkedFragment;
}
return false;
}
public static void setTabsText(Fragment fragment, int index, String text) {
if (fragment.getActivity() == null)
return;
ABaseFragment aFragment = null;
if (fragment.getActivity() instanceof SinaCommonActivity) {
aFragment = (ABaseFragment) fragment.getActivity().getFragmentManager().findFragmentByTag(SinaCommonActivity.FRAGMENT_TAG);
}
else if (fragment.getActivity() instanceof MainActivity) {
aFragment = (ABaseFragment) fragment.getActivity().getFragmentManager().findFragmentByTag("MainFragment");
}
if (aFragment != null && aFragment instanceof ATabsTabLayoutFragment) {
ATabsTabLayoutFragment tabsFragment = (ATabsTabLayoutFragment) aFragment;
tabsFragment.getTablayout().getTabAt(index).setText(text);
}
}
public static String convertUnicode(String ori) {
char aChar;
int len = ori.length();
StringBuffer outBuffer = new StringBuffer(len);
for (int x = 0; x < len; ) {
aChar = ori.charAt(x++);
if (aChar == '\\') {
aChar = ori.charAt(x++);
if (aChar == 'u') {
// Read the xxxx
int value = 0;
for (int i = 0; i < 4; i++) {
aChar = ori.charAt(x++);
switch (aChar) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
value = (value << 4) + aChar - '0';
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
value = (value << 4) + 10 + aChar - 'a';
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
value = (value << 4) + 10 + aChar - 'A';
break;
default:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");
}
}
outBuffer.append((char) value);
} else {
if (aChar == 't')
aChar = '\t';
else if (aChar == 'r')
aChar = '\r';
else if (aChar == 'n')
aChar = '\n';
else if (aChar == 'f')
aChar = '\f';
outBuffer.append(aChar);
}
} else
outBuffer.append(aChar);
}
return outBuffer.toString();
}
public static void gotoSettings(Context context) {
//Goto settings details
final Uri packageURI = Uri.parse("package:" + context.getPackageName());
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI);
try {
context.startActivity(intent);
} catch (Exception e) {
// e.printStackTrace();
//加入Launcher报错
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
}