Add FoxiGram Premium features screen with animated sticker header
This commit is contained in:
parent
660d2880bb
commit
2d473f33b9
5 changed files with 146 additions and 2 deletions
|
|
@ -45,7 +45,7 @@ import org.telegram.ui.LauncherIconController;
|
||||||
import org.telegram.ui.PremiumPreviewFragment;
|
import org.telegram.ui.PremiumPreviewFragment;
|
||||||
|
|
||||||
import tw.nekomimi.nekogram.helpers.SponsorHelper;
|
import tw.nekomimi.nekogram.helpers.SponsorHelper;
|
||||||
import tw.nekomimi.nekogram.settings.NekoDonateActivity;
|
import tw.nekomimi.nekogram.settings.FoxPremiumActivity;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
@ -113,7 +113,7 @@ public class AppIconsSelectorCell extends RecyclerListView implements Notificati
|
||||||
IconHolderView holderView = (IconHolderView) view;
|
IconHolderView holderView = (IconHolderView) view;
|
||||||
LauncherIconController.LauncherIcon icon = availableIcons.get(position);
|
LauncherIconController.LauncherIcon icon = availableIcons.get(position);
|
||||||
if (icon.premium && !SponsorHelper.isCurrentUserSponsor()) {
|
if (icon.premium && !SponsorHelper.isCurrentUserSponsor()) {
|
||||||
fragment.presentFragment(new NekoDonateActivity());
|
fragment.presentFragment(new FoxPremiumActivity());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,126 @@
|
||||||
|
package tw.nekomimi.nekogram.settings;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.view.Gravity;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import org.telegram.messenger.AndroidUtilities;
|
||||||
|
import org.telegram.messenger.ApplicationLoader;
|
||||||
|
import org.telegram.messenger.LocaleController;
|
||||||
|
import org.telegram.messenger.R;
|
||||||
|
import org.telegram.messenger.UserConfig;
|
||||||
|
import org.telegram.ui.ActionBar.Theme;
|
||||||
|
import org.telegram.ui.Components.AnimatedFileDrawable;
|
||||||
|
import org.telegram.ui.Components.BackupImageView;
|
||||||
|
import org.telegram.ui.Components.LayoutHelper;
|
||||||
|
import org.telegram.ui.Components.UItem;
|
||||||
|
import org.telegram.ui.Components.UniversalAdapter;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class FoxPremiumActivity extends BaseNekoSettingsActivity {
|
||||||
|
|
||||||
|
private final int serversRow = rowId++;
|
||||||
|
private final int sponsorRow = rowId++;
|
||||||
|
private final int iconsRow = rowId++;
|
||||||
|
private final int buttonRow = rowId++;
|
||||||
|
|
||||||
|
private FrameLayout topView;
|
||||||
|
private BackupImageView stickerView;
|
||||||
|
private AnimatedFileDrawable stickerDrawable;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View createView(Context context) {
|
||||||
|
topView = new FrameLayout(context);
|
||||||
|
|
||||||
|
stickerView = new BackupImageView(context);
|
||||||
|
topView.addView(stickerView, LayoutHelper.createFrame(130, 130, Gravity.CENTER_HORIZONTAL | Gravity.TOP, 0, 16, 0, 0));
|
||||||
|
|
||||||
|
var titleView = new TextView(context);
|
||||||
|
titleView.setTextSize(android.util.TypedValue.COMPLEX_UNIT_DIP, 22);
|
||||||
|
titleView.setTypeface(AndroidUtilities.bold());
|
||||||
|
titleView.setGravity(Gravity.CENTER);
|
||||||
|
titleView.setText(LocaleController.getString(R.string.FoxPremiumTitle));
|
||||||
|
titleView.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText));
|
||||||
|
topView.addView(titleView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL | Gravity.TOP, 16, 158, 16, 0));
|
||||||
|
|
||||||
|
var subtitleView = new TextView(context);
|
||||||
|
subtitleView.setTextSize(android.util.TypedValue.COMPLEX_UNIT_DIP, 14);
|
||||||
|
subtitleView.setGravity(Gravity.CENTER);
|
||||||
|
subtitleView.setText(LocaleController.getString(R.string.FoxPremiumSubtitle));
|
||||||
|
subtitleView.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteGrayText));
|
||||||
|
topView.addView(subtitleView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL | Gravity.TOP, 24, 192, 24, 0));
|
||||||
|
|
||||||
|
var fragmentView = super.createView(context);
|
||||||
|
loadSticker();
|
||||||
|
return fragmentView;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadSticker() {
|
||||||
|
try {
|
||||||
|
File cacheFile = new File(AndroidUtilities.getCacheDir(), "foxi_premium.webm");
|
||||||
|
if (!cacheFile.exists() || cacheFile.length() == 0) {
|
||||||
|
try (InputStream in = ApplicationLoader.applicationContext.getResources().openRawResource(R.raw.foxi_premium);
|
||||||
|
FileOutputStream out = new FileOutputStream(cacheFile)) {
|
||||||
|
byte[] buffer = new byte[16 * 1024];
|
||||||
|
int len;
|
||||||
|
while ((len = in.read(buffer)) > 0) {
|
||||||
|
out.write(buffer, 0, len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stickerDrawable = new AnimatedFileDrawable(cacheFile, true, 0, 0, null, null, null, 0, UserConfig.selectedAccount, true, 260, 260, null);
|
||||||
|
stickerView.setImageDrawable(stickerDrawable);
|
||||||
|
stickerView.getImageReceiver().setAutoRepeat(1);
|
||||||
|
stickerDrawable.start();
|
||||||
|
stickerView.setOnClickListener(v -> {
|
||||||
|
if (stickerDrawable != null) {
|
||||||
|
stickerDrawable.start();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (Throwable ignore) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean needActionBarPadding() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void fillItems(ArrayList<UItem> items, UniversalAdapter adapter) {
|
||||||
|
items.add(UItem.asCustomShadow(topView, 240));
|
||||||
|
items.add(UItem.asButtonSubtext(serversRow, R.drawable.msg2_devices, LocaleController.getString(R.string.FoxPremiumFeatureServersTitle), LocaleController.getString(R.string.FoxPremiumFeatureServersAbout)));
|
||||||
|
items.add(UItem.asButtonSubtext(sponsorRow, R.drawable.msg_input_like, LocaleController.getString(R.string.FoxPremiumFeatureSponsorTitle), LocaleController.getString(R.string.FoxPremiumFeatureSponsorAbout)));
|
||||||
|
items.add(UItem.asButtonSubtext(iconsRow, R.drawable.msg_emoji_smiles, LocaleController.getString(R.string.FoxPremiumFeatureIconsTitle), LocaleController.getString(R.string.FoxPremiumFeatureIconsAbout)));
|
||||||
|
items.add(UItem.asShadow(null));
|
||||||
|
items.add(UItem.asButton(buttonRow, R.drawable.msg_input_like, LocaleController.getString(R.string.FoxPremiumButton)));
|
||||||
|
items.add(UItem.asShadow(null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onItemClick(UItem item, View view, int position, float x, float y) {
|
||||||
|
if (item.id == buttonRow) {
|
||||||
|
presentFragment(new NekoDonateActivity());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getActionBarTitle() {
|
||||||
|
return LocaleController.getString(R.string.FoxPremiumTitle);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFragmentDestroy() {
|
||||||
|
super.onFragmentDestroy();
|
||||||
|
if (stickerDrawable != null) {
|
||||||
|
stickerDrawable.recycle();
|
||||||
|
stickerDrawable = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
TMessagesProj/src/main/res/raw/foxi_premium.webm
Normal file
BIN
TMessagesProj/src/main/res/raw/foxi_premium.webm
Normal file
Binary file not shown.
|
|
@ -325,6 +325,15 @@
|
||||||
<!-- Accessibility -->
|
<!-- Accessibility -->
|
||||||
<string name="AccessibilitySettings">Настройки специальных возможностей</string>
|
<string name="AccessibilitySettings">Настройки специальных возможностей</string>
|
||||||
<string name="FoxSponsorBadge">Спонсор GhostCloud</string>
|
<string name="FoxSponsorBadge">Спонсор GhostCloud</string>
|
||||||
|
<string name="FoxPremiumTitle">FoxiGram Premium</string>
|
||||||
|
<string name="FoxPremiumSubtitle">Поддержите проект и откройте эксклюзивные возможности</string>
|
||||||
|
<string name="FoxPremiumFeatureServersTitle">Больше LTE и Wi-Fi серверов</string>
|
||||||
|
<string name="FoxPremiumFeatureServersAbout">Доступ к дополнительным быстрым LTE и Wi-Fi серверам</string>
|
||||||
|
<string name="FoxPremiumFeatureSponsorTitle">Сердечко спонсора</string>
|
||||||
|
<string name="FoxPremiumFeatureSponsorAbout">Значок сердечка рядом с вашим именем в чатах</string>
|
||||||
|
<string name="FoxPremiumFeatureIconsTitle">Эксклюзивные иконки приложения</string>
|
||||||
|
<string name="FoxPremiumFeatureIconsAbout">Иконки приложения Premium, Космос и Облако</string>
|
||||||
|
<string name="FoxPremiumButton">Поддержать FoxiGram</string>
|
||||||
<string name="FoxSponsorBadgeInfo">Эта отметка выдана за поддержание проекта на 444+ рублей.</string>
|
<string name="FoxSponsorBadgeInfo">Эта отметка выдана за поддержание проекта на 444+ рублей.</string>
|
||||||
<string name="FoxSupportProject">Поддержать проект</string>
|
<string name="FoxSupportProject">Поддержать проект</string>
|
||||||
<string name="FoxSupportProjectAbout">Оформите GhostCloud через нашего бота</string>
|
<string name="FoxSupportProjectAbout">Оформите GhostCloud через нашего бота</string>
|
||||||
|
|
|
||||||
|
|
@ -155,6 +155,15 @@
|
||||||
<string name="NekogramVersion">FoxiGram %1$s\nBased on Telegram %2$s\nDesigned by %3$s</string>
|
<string name="NekogramVersion">FoxiGram %1$s\nBased on Telegram %2$s\nDesigned by %3$s</string>
|
||||||
<string name="UpdateInstalling">Installing update...</string>
|
<string name="UpdateInstalling">Installing update...</string>
|
||||||
<string name="FoxSponsorBadge">Sponsor GhostCloud</string>
|
<string name="FoxSponsorBadge">Sponsor GhostCloud</string>
|
||||||
|
<string name="FoxPremiumTitle">FoxiGram Premium</string>
|
||||||
|
<string name="FoxPremiumSubtitle">Support the project and unlock exclusive perks</string>
|
||||||
|
<string name="FoxPremiumFeatureServersTitle">More LTE and Wi-Fi servers</string>
|
||||||
|
<string name="FoxPremiumFeatureServersAbout">Get access to additional fast LTE and Wi-Fi servers</string>
|
||||||
|
<string name="FoxPremiumFeatureSponsorTitle">Sponsor heart</string>
|
||||||
|
<string name="FoxPremiumFeatureSponsorAbout">A heart badge next to your name in chats</string>
|
||||||
|
<string name="FoxPremiumFeatureIconsTitle">Exclusive app icons</string>
|
||||||
|
<string name="FoxPremiumFeatureIconsAbout">Premium, Space and Cloud app icons</string>
|
||||||
|
<string name="FoxPremiumButton">Support FoxiGram</string>
|
||||||
<string name="FoxSponsorBadgeInfo">This badge is granted for supporting the project with 444+ rubles.</string>
|
<string name="FoxSponsorBadgeInfo">This badge is granted for supporting the project with 444+ rubles.</string>
|
||||||
<string name="FoxSupportProject">Support the project</string>
|
<string name="FoxSupportProject">Support the project</string>
|
||||||
<string name="FoxSupportProjectAbout">Subscribe to GhostCloud via our bot</string>
|
<string name="FoxSupportProjectAbout">Subscribe to GhostCloud via our bot</string>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue