Commit 97c88374 authored by feihuaduo's avatar feihuaduo

修复有悬浮窗权限,无通知权限时不提示的bug

新增卡组分享(卡组截图,储存路径ygocore/deckShare)
parent 2450c6bc
...@@ -350,6 +350,13 @@ public class AppsSettings { ...@@ -350,6 +350,13 @@ public class AppsSettings {
return new File(getResourcePath(), Constants.MOBILE_LOG).getAbsolutePath(); return new File(getResourcePath(), Constants.MOBILE_LOG).getAbsolutePath();
} }
/***
* 卡组分享图片文件夹
*/
public String getDeckSharePath() {
return new File(getResourcePath(), Constants.MOBILE_DECK_SHARE).getAbsolutePath();
}
/*** /***
* 当前数据库文件夹 * 当前数据库文件夹
*/ */
......
...@@ -67,6 +67,7 @@ public interface Constants { ...@@ -67,6 +67,7 @@ public interface Constants {
String CORE_SINGLE_PATH = "single"; String CORE_SINGLE_PATH = "single";
String CORE_IMAGE_PATH = "pics"; String CORE_IMAGE_PATH = "pics";
String MOBILE_LOG="log"; String MOBILE_LOG="log";
String MOBILE_DECK_SHARE="deckShare";
String CORE_EXPANSIONS_IMAGE_PATH = "expansions/pics"; String CORE_EXPANSIONS_IMAGE_PATH = "expansions/pics";
String CORE_IMAGE_FIELD_PATH = "field"; String CORE_IMAGE_FIELD_PATH = "field";
String CORE_SCRIPT_PATH = "script"; String CORE_SCRIPT_PATH = "script";
......
...@@ -29,7 +29,7 @@ import ocgcore.data.Card; ...@@ -29,7 +29,7 @@ import ocgcore.data.Card;
public abstract class BaseCardsAcitivity extends BaseActivity implements CardLoader.CallBack { public abstract class BaseCardsAcitivity extends BaseActivity implements CardLoader.CallBack {
protected DrawerLayout mDrawerlayout; protected DrawerLayout mDrawerlayout;
private RecyclerView mListView; protected RecyclerView mListView;
protected CardSearcher mCardSelector; protected CardSearcher mCardSelector;
protected CardListAdapter mCardListAdapater; protected CardListAdapter mCardListAdapater;
protected CardLoader mCardLoader; protected CardLoader mCardLoader;
......
...@@ -3,10 +3,16 @@ package cn.garymb.ygomobile.ui.cards; ...@@ -3,10 +3,16 @@ package cn.garymb.ygomobile.ui.cards;
import android.content.ClipData; import android.content.ClipData;
import android.content.ClipboardManager; import android.content.ClipboardManager;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.util.LruCache;
import android.support.v7.widget.AppCompatSpinner; import android.support.v7.widget.AppCompatSpinner;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerViewItemListener; import android.support.v7.widget.RecyclerViewItemListener;
...@@ -57,6 +63,7 @@ import cn.garymb.ygomobile.ui.plus.AOnGestureListener; ...@@ -57,6 +63,7 @@ import cn.garymb.ygomobile.ui.plus.AOnGestureListener;
import cn.garymb.ygomobile.ui.plus.DefaultOnBoomListener; import cn.garymb.ygomobile.ui.plus.DefaultOnBoomListener;
import cn.garymb.ygomobile.ui.plus.DialogPlus; import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit; import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.BitmapUtil;
import cn.garymb.ygomobile.utils.IOUtils; import cn.garymb.ygomobile.utils.IOUtils;
import cn.garymb.ygomobile.utils.ShareUtil; import cn.garymb.ygomobile.utils.ShareUtil;
import ocgcore.DataManager; import ocgcore.DataManager;
...@@ -575,6 +582,9 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -575,6 +582,9 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
case R.id.action_card_list: case R.id.action_card_list:
showResult(true); showResult(true);
break; break;
case R.id.action_share_deck:
shareDeck();
break;
case R.id.action_save: case R.id.action_save:
if (mYdkFile == null) { if (mYdkFile == null) {
inputDeckName(null); inputDeckName(null);
...@@ -655,13 +665,38 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -655,13 +665,38 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
} }
private void shareDeck() { private void shareDeck() {
// 开启绘图缓存
mRecyclerView.setDrawingCacheEnabled(true);
//这个方法可调可不调,因为在getDrawingCache()里会自动判断有没有缓存有没有准备好,
//如果没有,会自动调用buildDrawingCache()
mRecyclerView.buildDrawingCache();
//获取绘图缓存 这里直接创建了一个新的bitmap
//因为我们在最后需要释放缓存资源,会释放掉缓存中创建的bitmap对象
Bitmap bitmap =BitmapUtil.drawBg4Bitmap(Color.parseColor("#e6f3fd"), Bitmap.createBitmap(mRecyclerView.getDrawingCache(), 0, 0, mRecyclerView.getMeasuredWidth(),
mRecyclerView.getMeasuredHeight()));
//清理绘图缓存,释放资源
mRecyclerView.destroyDrawingCache();
// shotRecyclerView(mRecyclerView)
Deck deck = mDeckAdapater.toDeck(mYdkFile); Deck deck = mDeckAdapater.toDeck(mYdkFile);
String label = TextUtils.isEmpty(deck.getName()) ? getString(R.string.share_deck) : deck.getName(); String deckName=deck.getName();
final String uriString = deck.toAppUri().toString(); int end=deckName.lastIndexOf(".");
final String httpUri = deck.toHttpUri().toString(); if (end!=-1){
shareUrl(uriString, label); deckName=deckName.substring(0,end);
}
String savePath=new File(AppsSettings.get().getDeckSharePath(),deckName+".jpg").getAbsolutePath();
BitmapUtil.saveBitmap(bitmap,savePath,50);
ShareUtil.shareImage(DeckManagerActivityImpl.this,"卡组分享",savePath,null);
// String label = TextUtils.isEmpty(deck.getName()) ? getString(R.string.share_deck) : deck.getName();
// final String uriString = deck.toAppUri().toString();
// final String httpUri = deck.toHttpUri().toString();
// shareUrl(uriString, label);
} }
private void shareUrl(String uri, String label) { private void shareUrl(String uri, String label) {
String url = getString(R.string.deck_share_head) + " " + uri; String url = getString(R.string.deck_share_head) + " " + uri;
ShareUtil.shareText(this, getString(R.string.share_deck), url, null); ShareUtil.shareText(this, getString(R.string.share_deck), url, null);
...@@ -861,7 +896,8 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -861,7 +896,8 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
private void initBoomMenuButton(BoomMenuButton menu) { private void initBoomMenuButton(BoomMenuButton menu) {
final SparseArray<Integer> mMenuIds = new SparseArray<>(); final SparseArray<Integer> mMenuIds = new SparseArray<>();
addMenuButton(mMenuIds, menu, R.id.action_card_search, R.string.deck_list, R.drawable.listicon); // addMenuButton(mMenuIds, menu, R.id.action_card_search, R.string.deck_list, R.drawable.listicon);
addMenuButton(mMenuIds,menu,R.id.action_share_deck,R.string.share_deck,R.drawable.listicon);
addMenuButton(mMenuIds, menu, R.id.action_save, R.string.save_deck, R.drawable.save); addMenuButton(mMenuIds, menu, R.id.action_save, R.string.save_deck, R.drawable.save);
addMenuButton(mMenuIds, menu, R.id.action_clear_deck, R.string.clear_deck, R.drawable.clear_deck); addMenuButton(mMenuIds, menu, R.id.action_clear_deck, R.string.clear_deck, R.drawable.clear_deck);
......
...@@ -130,8 +130,11 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie ...@@ -130,8 +130,11 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
checkPgyerUpdateSilent(getContext(), false, false, false); checkPgyerUpdateSilent(getContext(), false, false, false);
//ServiceDuelAssistant //ServiceDuelAssistant
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (PermissionUtil.isNotificationPermission(this)==null) DialogPlus dialogPlus = PermissionUtil.isNotificationPermission(this);
this.startForegroundService(new Intent(this, ServiceDuelAssistant.class)); if (dialogPlus == null)
this.startForegroundService(new Intent(this, ServiceDuelAssistant.class));
else
dialogPlus.show();
} else { } else {
startService(new Intent(this, ServiceDuelAssistant.class)); startService(new Intent(this, ServiceDuelAssistant.class));
} }
...@@ -143,17 +146,17 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie ...@@ -143,17 +146,17 @@ public abstract class HomeActivity extends BaseActivity implements NavigationVie
//检查是否有刘海 //检查是否有刘海
private void checkNotch() { private void checkNotch() {
ScreenUtil.findNotchInformation(HomeActivity.this, new ScreenUtil.FindNotchInformation() { ScreenUtil.findNotchInformation(HomeActivity.this, new ScreenUtil.FindNotchInformation() {
@Override @Override
public void onNotchInformation(boolean isNotch, int notchHeight, int phoneType) { public void onNotchInformation(boolean isNotch, int notchHeight, int phoneType) {
try { try {
FileLogUtil.writeAndTime("检查刘海"+isNotch+" "+notchHeight); FileLogUtil.writeAndTime("检查刘海" + isNotch + " " + notchHeight);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
}
AppsSettings.get().setNotchHeight(notchHeight);
} }
}); AppsSettings.get().setNotchHeight(notchHeight);
}
});
} }
@Override @Override
......
...@@ -275,7 +275,8 @@ public class ResCheckTask extends AsyncTask<Void, Integer, Integer> { ...@@ -275,7 +275,8 @@ public class ResCheckTask extends AsyncTask<Void, Integer, Integer> {
Constants.CORE_REPLAY_PATH, Constants.CORE_REPLAY_PATH,
Constants.FONT_DIRECTORY, Constants.FONT_DIRECTORY,
Constants.CORE_IMAGE_PATH, Constants.CORE_IMAGE_PATH,
Constants.MOBILE_LOG Constants.MOBILE_LOG,
Constants.MOBILE_DECK_SHARE
}; };
File dirFile = null; File dirFile = null;
for (String dir : dirs) { for (String dir : dirs) {
......
...@@ -5,6 +5,8 @@ import android.content.res.AssetManager; ...@@ -5,6 +5,8 @@ import android.content.res.AssetManager;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
...@@ -210,4 +212,16 @@ public class BitmapUtil { ...@@ -210,4 +212,16 @@ public class BitmapUtil {
view.measure(widthSpec, heightSpec); view.measure(widthSpec, heightSpec);
view.layout(0, 0, w, h); view.layout(0, 0, w, h);
} }
public static Bitmap drawBg4Bitmap(int color, Bitmap orginBitmap) {
Paint paint = new Paint();
paint.setColor(color);
Bitmap bitmap = Bitmap.createBitmap(orginBitmap.getWidth(),
orginBitmap.getHeight(), orginBitmap.getConfig());
Canvas canvas = new Canvas(bitmap);
canvas.drawRect(0, 0, orginBitmap.getWidth(), orginBitmap.getHeight(), paint);
canvas.drawBitmap(orginBitmap, 0, 0, paint);
return bitmap;
}
} }
...@@ -128,7 +128,7 @@ ...@@ -128,7 +128,7 @@
android:divider="@android:color/transparent" android:divider="@android:color/transparent"
android:dividerHeight="4dp" android:dividerHeight="4dp"
android:padding="2dp" android:padding="2dp"
android:scrollbars="none"/> android:scrollbars="none" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
......
...@@ -6,11 +6,18 @@ ...@@ -6,11 +6,18 @@
android:icon="@drawable/search" android:icon="@drawable/search"
android:title="@string/search" android:title="@string/search"
app:showAsAction="always"/> app:showAsAction="always"/>
<item <item
android:id="@+id/action_card_list" android:id="@+id/action_share_deck"
android:icon="@drawable/listicon" android:icon="@drawable/listicon"
android:title="@string/card_result" android:title="@string/share_deck"
app:showAsAction="always"/> app:showAsAction="always"/>
<!--<item-->
<!--android:id="@+id/action_card_list"-->
<!--android:icon="@drawable/listicon"-->
<!--android:title="@string/card_result"-->
<!--app:showAsAction="always"/>-->
<!--<item <!--<item
android:id="@+id/action_refresh" android:id="@+id/action_refresh"
android:icon="@drawable/ic_refresh" android:icon="@drawable/ic_refresh"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment