更新UI与功能 1.0.3(4)

This commit is contained in:
zhouzhijia 2024-08-14 15:45:01 +08:00
parent d463263098
commit fe45d77a92
77 changed files with 3271 additions and 122 deletions

View File

@ -24,8 +24,8 @@ android {
applicationId = "com.fun.funnyprank" applicationId = "com.fun.funnyprank"
minSdk = 23 minSdk = 23
targetSdk = 34 targetSdk = 34
versionCode = 3 versionCode = 4
versionName = "1.0.2" versionName = "1.0.3"
setProperty( setProperty(
"archivesBaseName", "archivesBaseName",
"funnyprank_v" + versionName + "(${versionCode})_$timestamp" "funnyprank_v" + versionName + "(${versionCode})_$timestamp"

View File

@ -3,7 +3,15 @@
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<application <application
android:name=".FunnyPrankSkin" android:name=".FunnyPrankSkin"
android:allowBackup="true" android:allowBackup="true"
@ -15,6 +23,18 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
tools:targetApi="31"> tools:targetApi="31">
<activity
android:name=".activity.WebActivity"
android:exported="false" />
<activity
android:name=".activity.SettingActivity"
android:exported="false" />
<activity
android:name=".activity.SaveActivity"
android:exported="false" />
<activity
android:name=".activity.RecordActivity"
android:exported="false" />
<activity <activity
android:name=".activity.PrewActivity" android:name=".activity.PrewActivity"
android:exported="false" /> android:exported="false" />
@ -24,19 +44,15 @@
<activity <activity
android:name=".activity.SplashActivity" android:name=".activity.SplashActivity"
android:exported="true"> android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<intent-filter> <category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.MAIN" /> </intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </activity>
<activity <activity
android:name=".activity.MainActivity" android:name=".activity.MainActivity"
android:exported="true"> android:exported="true" />
</activity>
</application> </application>
</manifest> </manifest>

View File

@ -0,0 +1,122 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Privacy Policy</title>
<style>
body {
font-family: Arial, sans-serif;
line-height: 1.6;
margin: 0;
padding: 0;
padding: 20px;
}
h1, h2 {
color: #333;
}
h2 {
margin-top: 20px;
}
p {
margin: 10px 0;
}
ul {
margin: 10px 0;
padding-left: 20px;
}
</style>
</head>
<body>
<h1>Privacy Policy</h1>
<p><strong>Date:</strong> August 14, 2024</p>
<p>We provide this Privacy Policy to help you understand how we collect, use, and disclose
information, including what you may provide to us or that we obtain from our products and
services. We treat your privacy very seriously. Your privacy is important to us.</p>
<h2>Information Collection and Use</h2>
<p>For a better experience, while using our Service, we may require you to provide us with certain
personally identifiable information, such as users' name, address, location, pictures, etc. The
information that we request will be retained on your device and is not collected or retained by
us in any way and used as described in this privacy policy.</p>
<p>The app does use third-party services that may collect information used to identify you.</p>
<p>Please refer to the privacy policy of the third-party service provider used by the
application:</p>
<ul>
<li>Google Play Services</li>
<li>Google Analytics for Firebase</li>
<li>Firebase Crashlytics</li>
<li>Unity</li>
<li>AppLovin</li>
<li>Pangle</li>
<li>Mintegral</li>
<li>Bigo</li>
<li>Ironsource</li>
<li>Vungle</li>
</ul>
<h2>Log Data</h2>
<p>We want to inform you that whenever you use our Service, in case of an error in the app, we
collect data and information (through third-party products) on your phone called Log Data. This
Log Data may include information such as your device Internet Protocol (“IP”) address, device
name, operating system version, the configuration of the app when utilizing our Service, the
time and date of your use of the Service, and other statistics.</p>
<h2>Cookies</h2>
<p>Cookies are files with a small amount of data that are commonly used as anonymous unique
identifiers. These are sent to your browser from the websites that you visit and are stored on
your device's internal memory.</p>
<p>This Service does not use these “cookies” explicitly. However, the app may use third-party code
and libraries that use “cookies” to collect information and improve their services. You have the
option to either accept or refuse these cookies and know when a cookie is being sent to your
device. If you choose to refuse our cookies, you may not be able to use some portions of this
Service.</p>
<h2>Service Providers</h2>
<p>We may employ third-party companies and individuals due to the following reasons:</p>
<ul>
<li>To facilitate our Service</li>
<li>To provide the Service on our behalf</li>
<li>To perform Service-related services</li>
<li>To assist us in analyzing how our Service is used</li>
</ul>
<p>We want to inform users of this Service that these third parties have access to their Personal
Information. The reason is to perform the tasks assigned to them on our behalf. However, they
are obligated not to disclose or use the information for any other purpose.</p>
<h2>Security</h2>
<p>We value your trust in providing us your Personal Information, thus we are striving to use
commercially acceptable means of protecting it. But remember that no method of transmission over
the internet, or method of electronic storage is 100% secure and reliable, and we cannot
guarantee its absolute security.</p>
<h2>Links to Other Sites</h2>
<p>This Service may contain links to other sites. If you click on a third-party link, you will be
directed to that site. Note that these external sites are not operated by us. Therefore, we
strongly advise you to review the Privacy Policy of these websites. We have no control over and
assume no responsibility for the content, privacy policies, or practices of any third-party
sites or services.</p>
<h2>Childrens Privacy</h2>
<p>These Services do not address anyone under the age of 13. We do not knowingly collect personally
identifiable information from children under 13 years of age. In the case we discover that a
child under 13 has provided us with personal information, we will immediately delete this from
our servers. If you are a parent or guardian and you are aware that your child has provided us
with personal information, please contact us so that we will be able to take the necessary
actions.</p>
<h2>Changes to This Privacy Policy</h2>
<p>We may update our Privacy Policy from time to time. Thus, you are advised to review this page
periodically for any changes. We will notify you of any changes by posting the new Privacy
Policy on this page.</p>
<h2>Privacy Questions</h2>
<p>We may update the Privacy Policy from time to time. When we change the policy in a material way,
a notice will be posted on our website along with the updated Privacy Policy.</p>
<p>If you have any questions or concerns about our Privacy Policy or data processing, please contact
us: <a href="mailto:alokamalinga207">alokamalinga207</a>.</p>
</body>
</html>

View File

@ -34,6 +34,7 @@ public class FunnyPrankSkin extends Application {
public static final String AD_BROADCAST = "on_success_action"; public static final String AD_BROADCAST = "on_success_action";
private static final String MAX_SDK = "6GTFERcq2m3KHo37uityeCg0kfcqx3iT31OJG_a5weBmXsslFg5NuR8mlBXEqZ3ExDdXIl16PTMg0442tdRaJs"; private static final String MAX_SDK = "6GTFERcq2m3KHo37uityeCg0kfcqx3iT31OJG_a5weBmXsslFg5NuR8mlBXEqZ3ExDdXIl16PTMg0442tdRaJs";
public static Boolean initSDK = false; public static Boolean initSDK = false;
private static List<LikeData> mydataList = new ArrayList<>();
@Override @Override
public void onCreate() { public void onCreate() {
@ -59,6 +60,30 @@ public class FunnyPrankSkin extends Application {
} }
}); });
} }
initCreate();
}
private void initCreate() {
Mytools.runIO(new Runnable() {
@Override
public void run() {
List<LikeData> allData = MydataBase.getInstance().likeDao().getAll();
mydataList.clear();
int[] indices = {0, 456, 111, 333, 222, 555, 444, 345, 234};
for (int index : indices) {
if (index < allData.size()) {
LikeData data = allData.get(index);
data.setIsrank(true);
MydataBase.getInstance().likeDao().update(data);
mydataList.add(data);
}
}
}
});
} }
private void initSDk() { private void initSDk() {

View File

@ -18,6 +18,7 @@ import com.google.android.material.tabs.TabLayout;
public class MainActivity extends AppCompatActivity { public class MainActivity extends AppCompatActivity {
ActivityMainBinding binding; ActivityMainBinding binding;
@SuppressLint("MissingInflatedId") @SuppressLint("MissingInflatedId")
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -33,11 +34,12 @@ public class MainActivity extends AppCompatActivity {
}); });
initView(); initView();
setmainTabIcons(binding.mainTabLayout); // setmainTabIcons(binding.mainTabLayout);
setTabIcons(0);
} }
private void initView() { private void initView() {
PageAdapter pageAdapter =new PageAdapter(getSupportFragmentManager()); PageAdapter pageAdapter = new PageAdapter(getSupportFragmentManager());
binding.mainViewpager.setAdapter(pageAdapter); binding.mainViewpager.setAdapter(pageAdapter);
binding.mainTabLayout.setupWithViewPager(binding.mainViewpager); binding.mainTabLayout.setupWithViewPager(binding.mainViewpager);
binding.mainViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { binding.mainViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@ -58,6 +60,7 @@ public class MainActivity extends AppCompatActivity {
}); });
} }
private void setTabIcons(final int position) { private void setTabIcons(final int position) {
for (int i = 0; i < binding.mainTabLayout.getTabCount(); i++) { for (int i = 0; i < binding.mainTabLayout.getTabCount(); i++) {
final TabLayout.Tab tab = binding.mainTabLayout.getTabAt(i); final TabLayout.Tab tab = binding.mainTabLayout.getTabAt(i);
@ -67,7 +70,13 @@ public class MainActivity extends AppCompatActivity {
tab.setIcon(position == 0 ? R.drawable.main_check : R.drawable.main_uncheck); tab.setIcon(position == 0 ? R.drawable.main_check : R.drawable.main_uncheck);
break; break;
case 1: case 1:
tab.setIcon(position == 0 ? R.drawable.like_uncheck : R.drawable.like_check); tab.setIcon(position == 1 ? R.drawable.custom_check : R.drawable.custom_uncheck);
break;
case 2:
tab.setIcon(position == 2 ? R.drawable.rank_check : R.drawable.rank_uncheck);
break;
case 3:
tab.setIcon(position == 3 ? R.drawable.like_check : R.drawable.like_uncheck);
break; break;
default: default:
break; break;
@ -75,6 +84,7 @@ public class MainActivity extends AppCompatActivity {
} }
} }
} }
private void setmainTabIcons(TabLayout tabLayout) { private void setmainTabIcons(TabLayout tabLayout) {
for (int i = 0; i < tabLayout.getTabCount(); i++) { for (int i = 0; i < tabLayout.getTabCount(); i++) {
TabLayout.Tab tab = tabLayout.getTabAt(i); TabLayout.Tab tab = tabLayout.getTabAt(i);

View File

@ -119,22 +119,6 @@ public class PrewActivity extends AppCompatActivity {
} }
} }
}); });
binding.volumeleft.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int a = binding.seekbar.getProgress();
binding.seekbar.setProgress(a - 10);
}
});
binding.volumeright.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int a = binding.seekbar.getProgress();
binding.seekbar.setProgress(a + 10);
}
});
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override @Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
@ -271,22 +255,27 @@ public class PrewActivity extends AppCompatActivity {
binding.preLike.setBackgroundResource(R.drawable.icon_liek_uncheck); binding.preLike.setBackgroundResource(R.drawable.icon_liek_uncheck);
} }
binding.preTitle.setText(data.getTitle()); binding.preTitle.setText(data.getTitle());
Glide.with(PrewActivity.this) if (name.equals("custom_url")){
.asBitmap() binding.preImage.setBackgroundResource(R.mipmap.save_image);
.load(data.getPreUrl()) }else {
.placeholder(R.mipmap.icon_logo) Glide.with(PrewActivity.this)
.into(new CustomTarget<Bitmap>() { .asBitmap()
@Override .load(data.getPreUrl())
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) { .placeholder(R.mipmap.icon_logo)
binding.preImage.setImageBitmap(resource); .into(new CustomTarget<Bitmap>() {
showmenu(); @Override
} public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
binding.preImage.setImageBitmap(resource);
showmenu();
}
@Override @Override
public void onLoadCleared(@Nullable Drawable placeholder) { public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
}
}
});
} }
} }
}); });

View File

@ -0,0 +1,98 @@
package com.fun.funnyprank.activity;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.view.View;
import com.fun.funnyprank.R;
import com.fun.funnyprank.data.StaticValue;
import com.fun.funnyprank.databinding.ActivityRecordBinding;
import com.fun.funnyprank.tools.AudioRecorder;
public class RecordActivity extends AppCompatActivity {
ActivityRecordBinding binding;
private long startTime;
private long elapsedTime;
private Handler handler = new Handler();
private Runnable runnable;
private boolean isCreate = false;
private AudioRecorder audioRecorder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityRecordBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
audioRecorder = new AudioRecorder(this);
EdgeToEdge.enable(this);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.activity_record), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
binding.recordTime.setText(R.string.time_text);
initEvent();
}
private void initEvent() {
binding.recordBack.setOnClickListener(v -> finish());
binding.recordPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createSound();
}
});
}
private void createSound() {
if (!isCreate) {
audioRecorder.startRecording();
binding.recordPlay.setBackgroundResource(R.drawable.icon_record_pause);
isCreate = true;
runnable = new Runnable() {
@SuppressLint("DefaultLocale")
@Override
public void run() {
long currentTime = SystemClock.elapsedRealtime();
elapsedTime = currentTime - startTime;
int milliseconds = (int) (elapsedTime % 1000) / 10;
int seconds = (int) (elapsedTime / 1000) % 60;
int minutes = (int) (elapsedTime / (1000 * 60)) % 60;
binding.recordTime.setText(String.format("%d : %02d : %02d", minutes, seconds, milliseconds));
handler.postDelayed(this, 10);
}
};
startTime = SystemClock.elapsedRealtime();
handler.post(runnable);
} else {
audioRecorder.stopRecording();
binding.recordPlay.setBackgroundResource(R.drawable.icon_record_play);
isCreate = false;
handler.removeCallbacks(runnable);
Intent intent = new Intent(RecordActivity.this, SaveActivity.class);
intent.putExtra(StaticValue.KEY_Time, elapsedTime);
intent.putExtra(StaticValue.KEY_Path, audioRecorder.getTempFileName());
intent.putExtra(StaticValue.KEY_import, 1);
startActivity(intent);
finish();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
handler.removeCallbacks(runnable);
}
}

View File

@ -0,0 +1,212 @@
package com.fun.funnyprank.activity;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import android.annotation.SuppressLint;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.media.AudioAttributes;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
import com.fun.funnyprank.R;
import com.fun.funnyprank.data.LikeData;
import com.fun.funnyprank.data.MydataBase;
import com.fun.funnyprank.data.StaticValue;
import com.fun.funnyprank.databinding.ActivitySaveBinding;
import com.fun.funnyprank.tools.Mytools;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class SaveActivity extends AppCompatActivity {
private ActivitySaveBinding binding;
private String path;
private boolean isPlayerActive = false;
private MediaPlayer mediaPlayer;
private Handler handler = new Handler();
private Runnable timeUpdater;
private long startTime;
private long elapsedTime;
private long audioDuration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivitySaveBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
EdgeToEdge.enable(this);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.activity_save), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
binding.saveTime.setText(R.string.time_text);
initData();
initEvent();
}
private void togglePrank() throws IOException {
if (!isPlayerActive) {
startPrank();
} else {
stopPrank();
}
}
private void stopPrank() {
isPlayerActive = false;
handler.removeCallbacks(timeUpdater);
binding.savePlay.setBackgroundResource(R.drawable.icon_play);
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}
private void startPrank() throws IOException {
isPlayerActive = true;
binding.savePlay.setBackgroundResource(R.drawable.icon_pause);
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioAttributes(
new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setUsage(AudioAttributes.USAGE_MEDIA)
.build());
mediaPlayer.setDataSource(path);
mediaPlayer.setOnPreparedListener(mp -> {
mediaPlayer.start();
startTimer();
});
mediaPlayer.setOnCompletionListener(mp -> {
handler.removeCallbacks(timeUpdater);
binding.savePlay.setBackgroundResource(R.drawable.icon_play);
isPlayerActive = false;
});
mediaPlayer.prepareAsync();
}
private void startTimer() {
timeUpdater = new Runnable() {
@SuppressLint("DefaultLocale")
@Override
public void run() {
long currentTime = SystemClock.elapsedRealtime();
elapsedTime = currentTime - startTime;
int milliseconds = (int) (elapsedTime % 1000) / 10;
int seconds = (int) (elapsedTime / 1000) % 60;
int minutes = (int) (elapsedTime / (1000 * 60)) % 60;
binding.saveTime.setText(String.format("%d : %02d : %02d", minutes, seconds, milliseconds));
handler.postDelayed(this, 10);
}
};
startTime = SystemClock.elapsedRealtime();
handler.post(timeUpdater);
}
private void initEvent() {
binding.saveBack.setOnClickListener(v -> finish());
binding.savePlay.setOnClickListener(v -> {
try {
togglePrank();
} catch (IOException e) {
Log.e("SaveActivity", "Error toggling prank", e);
}
});
binding.save.setOnClickListener(v -> {
String name = binding.saveEdit.getText().toString().trim();
if (!TextUtils.isEmpty(name)) {
saveData(name);
Toast.makeText(SaveActivity.this, getString(R.string.save_tips), Toast.LENGTH_SHORT).show();
stopPrank();
finish();
} else {
Toast.makeText(SaveActivity.this, getString(R.string.save_tip), Toast.LENGTH_SHORT).show();
}
});
}
private void saveData(String name) {
File cacheDir = getCacheDir();
File sourceFile = new File(path);
File destinationFile = new File(cacheDir, name + ".mp3");
if (sourceFile.renameTo(destinationFile)) {
LikeData mydata = new LikeData();
mydata.setCategoryname("custom");
mydata.setLike(false);
mydata.setTitle(name);
mydata.setMp3Url(destinationFile.getAbsolutePath());
mydata.setPreUrl("custom_url");
mydata.setCategoryUrl("custom_url");
mydata.setTime(audioDuration);
Mytools.runIO(() -> MydataBase.getInstance().likeDao().insertCustom(mydata));
} else {
Log.e("SaveActivity", "Failed to rename file");
}
}
private String readFileFromUri(Context context, Uri uri) {
ContentResolver contentResolver = context.getContentResolver();
try (InputStream inputStream = contentResolver.openInputStream(uri);
FileOutputStream outputStream = new FileOutputStream(new File(getCacheDir(), "temp_audio_file.mp3"))) {
if (inputStream == null) {
Log.e("SaveActivity", "Input stream is null");
return null;
}
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
return new File(getCacheDir(), "temp_audio_file.mp3").getAbsolutePath();
} catch (IOException e) {
Log.e("SaveActivity", "Error reading file from URI", e);
return null;
}
}
private void initData() {
Intent intent = getIntent();
audioDuration = intent.getLongExtra(StaticValue.KEY_Time, 0);
int importFlag = intent.getIntExtra(StaticValue.KEY_import, 0);
if (importFlag == 1) {
path = intent.getStringExtra(StaticValue.KEY_Path);
Log.e("zzj", "save path is" + path);
} else {
String uriPath = intent.getStringExtra(StaticValue.KEY_Path);
Uri uri = Uri.parse(uriPath);
path = readFileFromUri(this, uri);
}
}
@Override
protected void onStop() {
super.onStop();
stopPrank();
}
}

View File

@ -0,0 +1,69 @@
package com.fun.funnyprank.activity;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import com.fun.funnyprank.R;
import com.fun.funnyprank.databinding.ActivitySettingBinding;
public class SettingActivity extends AppCompatActivity {
ActivitySettingBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivitySettingBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
EdgeToEdge.enable(this);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.activity_setting), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
initEvent();
}
private void initEvent() {
binding.privacy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(SettingActivity.this, WebActivity.class);
startActivity(intent);
}
});
binding.settingBack.setOnClickListener(v -> finish());
binding.versionText.setText("1.0.2");
binding.rate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = "https://play.google.com/store/apps/details?id=com.fun.funnyprank";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
}
});
binding.share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_SUBJECT, R.string.app_name);
String text = getString(R.string.share_title);
text = text + "\n https://play.google.com/store/apps/details?id=" + "com.fun.funnyprank";
share.putExtra(Intent.EXTRA_TEXT, text);
startActivity(Intent.createChooser(share, "choose one"));
}
});
}
}

View File

@ -22,6 +22,7 @@ import com.applovin.sdk.AppLovinSdk;
import com.fun.funnyprank.FunnyPrankSkin; import com.fun.funnyprank.FunnyPrankSkin;
import com.fun.funnyprank.R; import com.fun.funnyprank.R;
import com.fun.funnyprank.tools.Adcallback; import com.fun.funnyprank.tools.Adcallback;
import com.fun.funnyprank.tools.CustomProgressBar;
import com.fun.funnyprank.tools.Mytools; import com.fun.funnyprank.tools.Mytools;
import java.util.List; import java.util.List;
@ -30,7 +31,8 @@ public class SplashActivity extends AppCompatActivity {
private CountDownTimer countDownTimer; private CountDownTimer countDownTimer;
private static List<MaxInterstitialAd> adsList; private static List<MaxInterstitialAd> adsList;
public static boolean isAlreadyShow = false; private boolean isAlreadyShow = false;
private float i = 0;
@SuppressLint("MissingInflatedId") @SuppressLint("MissingInflatedId")
@Override @Override
@ -44,9 +46,13 @@ public class SplashActivity extends AppCompatActivity {
return insets; return insets;
}); });
countDownTimer = new CountDownTimer(11000, 100) { CustomProgressBar customProgressBar = findViewById(R.id.splash_pg);
countDownTimer = new CountDownTimer(10100, 100) {
@Override @Override
public void onTick(long l) { public void onTick(long l) {
i++;
customProgressBar.setProgress(i);
if (!isAlreadyShow) { if (!isAlreadyShow) {
showAdOrStartView(false); showAdOrStartView(false);
} }
@ -74,8 +80,11 @@ public class SplashActivity extends AppCompatActivity {
Mytools.setCallBcak(cachedAd, new Adcallback() { Mytools.setCallBcak(cachedAd, new Adcallback() {
@Override @Override
public void onShowFail(MaxAd ad) { public void onShowFail(MaxAd ad) {
isAlreadyShow = false; if (countDownTimer != null) {
countDownTimer.cancel();
countDownTimer = null;
}
starMainactivity();
} }
@Override @Override
@ -116,4 +125,13 @@ public class SplashActivity extends AppCompatActivity {
startActivity(intent); startActivity(intent);
finish(); finish();
} }
@Override
protected void onDestroy() {
super.onDestroy();
if (countDownTimer != null) {
countDownTimer.cancel();
countDownTimer = null;
}
}
} }

View File

@ -0,0 +1,34 @@
package com.fun.funnyprank.activity;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.fun.funnyprank.R;
public class WebActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
EdgeToEdge.enable(this);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.activity_web), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
WebView webView = findViewById(R.id.web);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("file:///android_asset/privacy.html");
}
}

View File

@ -0,0 +1,196 @@
package com.fun.funnyprank.adapter;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;
import com.fun.funnyprank.R;
import com.fun.funnyprank.activity.PrewActivity;
import com.fun.funnyprank.data.LikeData;
import com.fun.funnyprank.data.MydataBase;
import com.fun.funnyprank.data.StaticValue;
import com.fun.funnyprank.databinding.CustomListBinding;
import com.fun.funnyprank.tools.Mytools;
import java.util.List;
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.CustomVH> {
private Activity mactivity;
private List<LikeData> mlist;
private boolean islike = false;
private boolean show;
public CustomAdapter(Activity activity) {
mactivity = activity;
}
public void SetData(List<LikeData> list) {
mlist = list;
}
public void showDelete(boolean isShow) {
show = isShow;
notifyDataSetChanged();
}
@NonNull
@Override
public CustomVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
CustomListBinding binding = CustomListBinding.inflate(mactivity.getLayoutInflater(), parent, false);
return new CustomVH(binding);
}
@SuppressLint("DefaultLocale")
@Override
public void onBindViewHolder(@NonNull CustomVH holder, int position) {
LikeData customdata = mlist.get(position);
boolean like = customdata.getLike();
if (like) {
holder.getLike().setBackgroundResource(R.drawable.icon_liek_check);
} else {
holder.getLike().setBackgroundResource(R.drawable.icon_liek_uncheck);
}
int milliseconds = (int) (customdata.getTime() % 1000) / 10;
int seconds = (int) (customdata.getTime() / 1000) % 60;
int minutes = (int) (customdata.getTime() / (1000 * 60)) % 60;
holder.getTime().setText(String.format("%d : %02d : %02d", minutes, seconds, milliseconds));
if (show) {
holder.getDelete().setVisibility(View.VISIBLE);
} else {
holder.getDelete().setVisibility(View.GONE);
}
holder.getDelete().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(mactivity)
.setTitle("Tips")
.setMessage("Are you sure you want to delete" + " " + customdata.getTitle())
.setPositiveButton("Sure", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Mytools.runIO(new Runnable() {
@Override
public void run() {
MydataBase.getInstance().likeDao().deleteCutsom(customdata.id);
}
});
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.show();
}
});
holder.getLike().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!islike) {
islike = true;
customdata.setLike(true);
holder.getLike().setBackgroundResource(R.drawable.icon_liek_check);
Mytools.runIO(new Runnable() {
@Override
public void run() {
MydataBase.getInstance().likeDao().update(customdata);
}
});
} else {
islike = false;
customdata.setLike(false);
holder.getLike().setBackgroundResource(R.drawable.icon_liek_uncheck);
Mytools.runIO(new Runnable() {
@Override
public void run() {
MydataBase.getInstance().likeDao().update(customdata);
}
});
}
}
});
holder.getImage().setImageResource(R.mipmap.save_image);
if (customdata.getTitle().length() > 3) {
String name = customdata.getTitle().substring(0, 3);
holder.getName().setText(name + "...");
} else {
holder.getName().setText(customdata.getTitle());
}
holder.getCustomcons().setBackgroundResource(R.drawable.custom_item_bg);
holder.getImage().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mactivity, PrewActivity.class);
intent.putExtra(StaticValue.KEY_TITLE, customdata.getTitle());
mactivity.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return mlist.size();
}
public static class CustomVH extends RecyclerView.ViewHolder {
private ConstraintLayout customcons;
private TextView name, time;
private ImageView image;
private ImageView like;
private ConstraintLayout delete;
public CustomVH(@NonNull CustomListBinding binding) {
super(binding.getRoot());
name = binding.customName;
customcons = binding.customCons;
time = binding.customTime;
like = binding.customLike;
image = binding.customImage;
delete = binding.customItemDelete;
}
public ConstraintLayout getDelete() {
return delete;
}
public ConstraintLayout getCustomcons() {
return customcons;
}
public TextView getName() {
return name;
}
public TextView getTime() {
return time;
}
public ImageView getImage() {
return image;
}
public ImageView getLike() {
return like;
}
}
}

View File

@ -44,10 +44,14 @@ public class LikeAdapter extends RecyclerView.Adapter<LikeAdapter.LikeVH> {
@Override @Override
public void onBindViewHolder(@NonNull LikeAdapter.LikeVH holder, int position) { public void onBindViewHolder(@NonNull LikeAdapter.LikeVH holder, int position) {
LikeData likeData = mlist.get(position); LikeData likeData = mlist.get(position);
Glide.with(minflater.getContext()) if (likeData.getPreUrl().equals("custom_url")) {
.load(likeData.getPreUrl()) holder.getImage().setImageResource(R.mipmap.save_image);
.placeholder(R.mipmap.icon_logo) } else {
.into(holder.getImage()); Glide.with(minflater.getContext())
.load(likeData.getPreUrl())
.placeholder(R.mipmap.icon_logo)
.into(holder.getImage());
}
holder.getText().setText(likeData.getTitle()); holder.getText().setText(likeData.getTitle());
if (position == getItemCount() - 1) { if (position == getItemCount() - 1) {
@ -56,6 +60,7 @@ public class LikeAdapter extends RecyclerView.Adapter<LikeAdapter.LikeVH> {
holder.getView().setVisibility(View.GONE); holder.getView().setVisibility(View.GONE);
} }
Drawable[] randomcolor = { Drawable[] randomcolor = {
ContextCompat.getDrawable(minflater.getContext(), R.drawable.like_background_1), ContextCompat.getDrawable(minflater.getContext(), R.drawable.like_background_1),
ContextCompat.getDrawable(minflater.getContext(), R.drawable.like_background_2), ContextCompat.getDrawable(minflater.getContext(), R.drawable.like_background_2),

View File

@ -30,7 +30,8 @@ public class ListAdapter extends RecyclerView.Adapter<ListAdapter.PreVH> {
private List<LikeData> otherdataList; private List<LikeData> otherdataList;
private final LayoutInflater mInflater; private final LayoutInflater mInflater;
private int mcolor; private int mcolor;
public ListAdapter(Activity activity, List<LikeData> list,int color) {
public ListAdapter(Activity activity, List<LikeData> list, int color) {
mInflater = LayoutInflater.from(activity); mInflater = LayoutInflater.from(activity);
otherdataList = list; otherdataList = list;
mcolor = color; mcolor = color;
@ -46,10 +47,16 @@ public class ListAdapter extends RecyclerView.Adapter<ListAdapter.PreVH> {
@Override @Override
public void onBindViewHolder(@NonNull ListAdapter.PreVH holder, int position) { public void onBindViewHolder(@NonNull ListAdapter.PreVH holder, int position) {
LikeData otherdata = otherdataList.get(position); LikeData otherdata = otherdataList.get(position);
Glide.with(mInflater.getContext())
.load(otherdata.getPreUrl()) if (otherdata.getPreUrl().equals("custom_url")) {
.placeholder(R.mipmap.icon_logo) holder.getImageViewThumb().setImageResource(R.mipmap.save_image);
.into(holder.getImageViewThumb()); } else {
Glide.with(mInflater.getContext())
.load(otherdata.getPreUrl())
.placeholder(R.mipmap.icon_logo)
.into(holder.getImageViewThumb());
}
holder.getTextView().setText(otherdata.getTitle()); holder.getTextView().setText(otherdata.getTitle());
Drawable backgroundDrawable = ContextCompat.getDrawable(mInflater.getContext(), R.drawable.mainlist_bg); Drawable backgroundDrawable = ContextCompat.getDrawable(mInflater.getContext(), R.drawable.mainlist_bg);
if (backgroundDrawable != null) { if (backgroundDrawable != null) {
@ -74,7 +81,7 @@ public class ListAdapter extends RecyclerView.Adapter<ListAdapter.PreVH> {
public class PreVH extends RecyclerView.ViewHolder { public class PreVH extends RecyclerView.ViewHolder {
PreRvItemBinding binding; PreRvItemBinding binding;
private ImageView imageViewThumb; private ImageView imageViewThumb;
private ConstraintLayout constraintLayout,listcons; private ConstraintLayout constraintLayout, listcons;
private TextView textView; private TextView textView;
public TextView getTextView() { public TextView getTextView() {

View File

@ -5,8 +5,10 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter; import androidx.fragment.app.FragmentPagerAdapter;
import com.fun.funnyprank.fragment.CustomFragment;
import com.fun.funnyprank.fragment.LikeFragment; import com.fun.funnyprank.fragment.LikeFragment;
import com.fun.funnyprank.fragment.MainFragment; import com.fun.funnyprank.fragment.MainFragment;
import com.fun.funnyprank.fragment.RankFragment;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -17,6 +19,8 @@ public class PageAdapter extends FragmentPagerAdapter {
public PageAdapter(@NonNull FragmentManager fm) { public PageAdapter(@NonNull FragmentManager fm) {
super(fm); super(fm);
fragmentList.add(new MainFragment()); fragmentList.add(new MainFragment());
fragmentList.add(new CustomFragment());
fragmentList.add(new RankFragment());
fragmentList.add(new LikeFragment()); fragmentList.add(new LikeFragment());
} }

View File

@ -0,0 +1,166 @@
package com.fun.funnyprank.adapter;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.fun.funnyprank.R;
import com.fun.funnyprank.activity.PrewActivity;
import com.fun.funnyprank.data.LikeData;
import com.fun.funnyprank.data.MydataBase;
import com.fun.funnyprank.data.StaticValue;
import com.fun.funnyprank.databinding.RankListBinding;
import com.fun.funnyprank.tools.Mytools;
import java.util.List;
public class RankAdapter extends RecyclerView.Adapter<RankAdapter.RankVH> {
private Activity mactivity;
private List<LikeData> mlist;
private boolean islike = false;
public RankAdapter(Activity activity) {
mactivity = activity;
}
public void SetData(List<LikeData> list) {
mlist = list;
}
@NonNull
@Override
public RankVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
RankListBinding binding = RankListBinding.inflate(mactivity.getLayoutInflater(), parent, false);
return new RankVH(binding);
}
@SuppressLint("DefaultLocale")
@Override
public void onBindViewHolder(@NonNull RankVH holder, int position) {
LikeData customdata = mlist.get(position);
boolean like = customdata.getLike();
if (position == getItemCount() - 1) {
holder.getView().setVisibility(View.VISIBLE);
} else {
holder.getView().setVisibility(View.GONE);
}
if (like) {
holder.getLike().setBackgroundResource(R.drawable.icon_liek_check);
} else {
holder.getLike().setBackgroundResource(R.drawable.icon_liek_uncheck);
}
Glide.with(mactivity.getApplicationContext())
.load(customdata.getPreUrl())
.placeholder(R.mipmap.icon_logo)
.into(holder.getImage());
holder.getLike().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!islike) {
islike = true;
customdata.setLike(true);
holder.getLike().setBackgroundResource(R.drawable.icon_liek_check);
Mytools.runIO(new Runnable() {
@Override
public void run() {
MydataBase.getInstance().likeDao().update(customdata);
}
});
} else {
islike = false;
customdata.setLike(false);
holder.getLike().setBackgroundResource(R.drawable.icon_liek_uncheck);
Mytools.runIO(new Runnable() {
@Override
public void run() {
MydataBase.getInstance().likeDao().update(customdata);
}
});
}
}
});
int id = position + 4;
holder.getId().setText(String.valueOf(id));
if (customdata.getTitle().length() > 10) {
String name = customdata.getTitle().substring(0, 10);
holder.getName().setText(name + "...");
} else {
holder.getName().setText(customdata.getTitle());
}
holder.getRela().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mactivity, PrewActivity.class);
intent.putExtra(StaticValue.KEY_TITLE, customdata.getTitle());
mactivity.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return mlist.size();
}
public static class RankVH extends RecyclerView.ViewHolder {
private TextView id;
private TextView name;
private ImageView image;
private ImageView like;
private RelativeLayout rela;
private View view;
public View getView() {
return view;
}
public TextView getId() {
return id;
}
public TextView getName() {
return name;
}
public ImageView getImage() {
return image;
}
public ImageView getLike() {
return like;
}
public RelativeLayout getRela() {
return rela;
}
public RankVH(@NonNull RankListBinding binding) {
super(binding.getRoot());
name = binding.rankItemName;
like = binding.rankItemLike;
image = binding.rankItemImage;
id = binding.rankItemId;
rela = binding.rankItemRelative;
view = binding.rankItemView;
}
}
}

View File

@ -30,13 +30,13 @@ import java.util.List;
import java.util.Random; import java.util.Random;
public class ThumAdapter extends RecyclerView.Adapter<ThumAdapter.ThumVH> { public class ThumAdapter extends RecyclerView.Adapter<ThumAdapter.ThumVH> {
private List<Mydata> myDataList; private List<LikeData> myDataList;
private final LayoutInflater mInflater; private final LayoutInflater mInflater;
private int currentIndex = 0; private int currentIndex = 0;
public ThumAdapter(Activity activity, List<Mydata> list) { public ThumAdapter(Activity activity, List<LikeData> list) {
myDataList = list; myDataList = list;
mInflater = LayoutInflater.from(activity); mInflater = LayoutInflater.from(activity);
} }
@ -50,19 +50,25 @@ public class ThumAdapter extends RecyclerView.Adapter<ThumAdapter.ThumVH> {
@Override @Override
public void onBindViewHolder(@NonNull ThumVH holder, int position) { public void onBindViewHolder(@NonNull ThumVH holder, int position) {
Mydata myData = myDataList.get(position); LikeData myData = myDataList.get(position);
if (position == getItemCount() - 1) { if (position == getItemCount() - 1) {
holder.getView().setVisibility(View.VISIBLE); holder.getView().setVisibility(View.VISIBLE);
} else if (position == getItemCount()-2){ } else if (position == getItemCount() - 2) {
holder.getView().setVisibility(View.VISIBLE); holder.getView().setVisibility(View.VISIBLE);
}else { } else {
holder.getView().setVisibility(View.GONE); holder.getView().setVisibility(View.GONE);
} }
Glide.with(mInflater.getContext())
.load(myData.getCategoryUrl()) if (myData.getCategoryUrl().equals("custom_url")) {
.placeholder(R.mipmap.icon_logo) holder.getImageViewThumb().setImageResource(R.mipmap.save_image);
.into(holder.getImageViewThumb()); } else {
holder.getTextView().setText(myData.getCategoryName()); Glide.with(mInflater.getContext())
.load(myData.getCategoryUrl())
.placeholder(R.mipmap.icon_logo)
.into(holder.getImageViewThumb());
}
holder.getTextView().setText(myData.getCategoryname());
int[] randomcolor = { int[] randomcolor = {
ContextCompat.getColor(mInflater.getContext(), R.color.color_1), ContextCompat.getColor(mInflater.getContext(), R.color.color_1),
@ -75,16 +81,18 @@ public class ThumAdapter extends RecyclerView.Adapter<ThumAdapter.ThumVH> {
ContextCompat.getColor(mInflater.getContext(), R.color.color_8), ContextCompat.getColor(mInflater.getContext(), R.color.color_8),
ContextCompat.getColor(mInflater.getContext(), R.color.color_9), ContextCompat.getColor(mInflater.getContext(), R.color.color_9),
}; };
int randomColor = Randomcolor(randomcolor); int randomColor = Randomcolor(randomcolor);
int i = position % 9;
Drawable backgroundDrawable1 = ContextCompat.getDrawable(mInflater.getContext(), R.drawable.mainlist_bg); Drawable backgroundDrawable1 = ContextCompat.getDrawable(mInflater.getContext(), R.drawable.mainlist_bg);
if (backgroundDrawable1 != null) { if (backgroundDrawable1 != null) {
backgroundDrawable1.setColorFilter(randomColor, PorterDuff.Mode.SRC_ATOP); backgroundDrawable1.setColorFilter(randomcolor[i], PorterDuff.Mode.SRC_ATOP);
holder.getMainlistcons().setBackground(backgroundDrawable1); holder.getMainlistcons().setBackground(backgroundDrawable1);
} }
holder.getConstraintLayout().setOnClickListener(v -> { holder.getConstraintLayout().setOnClickListener(v -> {
Intent intent = new Intent(mInflater.getContext(), ListActivity.class); Intent intent = new Intent(mInflater.getContext(), ListActivity.class);
intent.putExtra(StaticValue.KEY_CategoryName, myData.getCategoryName()); intent.putExtra(StaticValue.KEY_CategoryName, myData.getCategoryname());
intent.putExtra(StaticValue.KEY_Color, randomColor); intent.putExtra(StaticValue.KEY_Color, randomcolor[i]);
mInflater.getContext().startActivity(intent); mInflater.getContext().startActivity(intent);
}); });
} }
@ -109,11 +117,14 @@ public class ThumAdapter extends RecyclerView.Adapter<ThumAdapter.ThumVH> {
private ImageView imageViewThumb; private ImageView imageViewThumb;
private ConstraintLayout constraintLayout, mainlistcons; private ConstraintLayout constraintLayout, mainlistcons;
public ConstraintLayout getMainlistcons() { public ConstraintLayout getMainlistcons() {
return mainlistcons; return mainlistcons;
} }
private TextView textView; private TextView textView;
private View view; private View view;
public ThumVH(@NonNull MainRvItemBinding binding) { public ThumVH(@NonNull MainRvItemBinding binding) {
super(binding.getRoot()); super(binding.getRoot());
imageViewThumb = binding.mainRvImage; imageViewThumb = binding.mainRvImage;
@ -130,9 +141,11 @@ public class ThumAdapter extends RecyclerView.Adapter<ThumAdapter.ThumVH> {
public ImageView getImageViewThumb() { public ImageView getImageViewThumb() {
return imageViewThumb; return imageViewThumb;
} }
public View getView() { public View getView() {
return view; return view;
} }
public TextView getTextView() { public TextView getTextView() {
return textView; return textView;
} }

View File

@ -1,5 +1,6 @@
package com.fun.funnyprank.data; package com.fun.funnyprank.data;
import androidx.lifecycle.LiveData;
import androidx.room.Dao; import androidx.room.Dao;
import androidx.room.Insert; import androidx.room.Insert;
import androidx.room.Query; import androidx.room.Query;
@ -17,12 +18,31 @@ public interface LikeDAO {
@Query("select * from like_table where title =:title ") @Query("select * from like_table where title =:title ")
List<LikeData> getliketitle(String title); List<LikeData> getliketitle(String title);
@Query("select * from like_table where categoryname =:name ") @Query("select * from like_table where categoryname =:name ")
List<LikeData> getlist(String name); List<LikeData> getlist(String name);
@Insert @Insert
void insertAll(List<LikeData> likeDataList); void insertAll(List<LikeData> likeDataList);
@Query("DELETE FROM like_table WHERE id = :id")
void deleteCutsom(int id);
@Query("select * from like_table where categoryname =:name ")
LiveData<List<LikeData>> getCustom(String name);
@Query("select * from like_table where isRank =:isrank ")
LiveData<List<LikeData>> getRankdata(boolean isrank);
@Query("SELECT * FROM like_table")
LiveData<List<LikeData>> livegetAll();
@Query("select * from like_table where islike =:islike ")
LiveData<List<LikeData>> getLikelist(boolean islike);
@Insert
void insertCustom(LikeData mydata);
@Update @Update
void update(LikeData likeData); void update(LikeData likeData);
} }

View File

@ -20,6 +20,24 @@ public class LikeData {
public Boolean islike ; public Boolean islike ;
public String categoryUrl; public String categoryUrl;
public Boolean isrank;
public long time;
public long getTime() {
return time;
}
public void setTime(long time) {
this.time = time;
}
public Boolean getIsrank() {
return isrank;
}
public void setIsrank(Boolean isrank) {
this.isrank = isrank;
}
public String getCategoryUrl() { public String getCategoryUrl() {
return categoryUrl; return categoryUrl;

View File

@ -8,4 +8,7 @@ public class StaticValue {
public static String KEY_MP3URL = "key_mp3url"; public static String KEY_MP3URL = "key_mp3url";
public static String KEY_PREURL = "KEY_preurl"; public static String KEY_PREURL = "KEY_preurl";
public static String KEY_LIKE = "KEY_like"; public static String KEY_LIKE = "KEY_like";
public static String KEY_Time = "KEY_time";
public static String KEY_Path = "KEY_path";
public static String KEY_import = "";
} }

View File

@ -0,0 +1,230 @@
package com.fun.funnyprank.fragment;
import android.Manifest;
import android.app.Dialog;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.drawable.ColorDrawable;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.LinearLayoutManager;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import com.fun.funnyprank.R;
import com.fun.funnyprank.activity.RecordActivity;
import com.fun.funnyprank.activity.SaveActivity;
import com.fun.funnyprank.adapter.CustomAdapter;
import com.fun.funnyprank.data.LikeData;
import com.fun.funnyprank.data.Mydata;
import com.fun.funnyprank.data.MydataBase;
import com.fun.funnyprank.data.StaticValue;
import com.fun.funnyprank.databinding.FragmentCustomBinding;
import java.io.IOException;
import java.util.List;
public class CustomFragment extends Fragment {
FragmentCustomBinding binding;
private CustomAdapter customAdapter;
private Dialog dialog;
private static final int REQUEST_RECORD_AUDIO_PERMISSION = 200;
private static final int REQUEST_READ_STORAGE_PERMISSION = 500;
private static final int REQUEST_PICK_AUDIO = 300;
private String[] permissions = {Manifest.permission.RECORD_AUDIO};
private String[] permission = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
private boolean show = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentCustomBinding.inflate(getLayoutInflater());
initData();
initEvent();
return binding.getRoot();
}
private void initData() {
customAdapter = new CustomAdapter(requireActivity());
binding.customRv.setLayoutManager(new LinearLayoutManager(requireContext()));
MydataBase.getInstance().likeDao().getCustom("custom").observe(getViewLifecycleOwner(), new Observer<List<LikeData>>() {
@Override
public void onChanged(List<LikeData> mydata) {
if (!mydata.isEmpty()) {
initView(mydata);
} else {
show = false;
customAdapter.showDelete(false);
binding.customDelete.setVisibility(View.GONE);
binding.addHide.setVisibility(View.VISIBLE);
binding.addTips.setVisibility(View.VISIBLE);
binding.add.setVisibility(View.GONE);
binding.customRv.setVisibility(View.GONE);
}
}
});
}
private void initView(List<LikeData> customData) {
binding.customDelete.setVisibility(View.VISIBLE);
binding.addHide.setVisibility(View.GONE);
binding.addTips.setVisibility(View.GONE);
binding.add.setVisibility(View.VISIBLE);
binding.customRv.setVisibility(View.VISIBLE);
customAdapter.SetData(customData);
binding.customRv.setAdapter(customAdapter);
}
private void initEvent() {
binding.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog();
}
});
binding.addHide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog();
}
});
binding.customDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
show = !show;
customAdapter.showDelete(show);
}
});
}
private void showDialog() {
dialog = new Dialog(requireContext());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog);
dialog.setCancelable(true);
dialog.getWindow().setGravity(Gravity.BOTTOM);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
dialog.findViewById(R.id.dialog_import).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
if (ContextCompat.checkSelfPermission(requireActivity(), Manifest.permission.READ_MEDIA_AUDIO)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(requireActivity(),
new String[]{Manifest.permission.READ_MEDIA_AUDIO},
REQUEST_READ_STORAGE_PERMISSION);
} else {
importAudio();
}
} else {
if (ContextCompat.checkSelfPermission(requireActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(requireActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(requireActivity(), permission, REQUEST_READ_STORAGE_PERMISSION);
} else {
importAudio();
}
}
}
});
dialog.findViewById(R.id.dialog_record).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(requireActivity(), Manifest.permission.RECORD_AUDIO)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(requireActivity(), permissions, REQUEST_RECORD_AUDIO_PERMISSION);
} else {
Intent intent = new Intent(requireContext(), RecordActivity.class);
startActivity(intent);
}
}
});
dialog.show();
dialog.getWindow().setAttributes(lp);
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_PICK_AUDIO && resultCode == getActivity().RESULT_OK) {
if (data != null) {
Uri selectedAudioUri = data.getData();
if (selectedAudioUri != null) {
long duration = getAudioDuration(requireContext(), selectedAudioUri);
Intent intent = new Intent(requireContext(), SaveActivity.class);
intent.putExtra(StaticValue.KEY_Path, selectedAudioUri.toString());
intent.putExtra(StaticValue.KEY_Time, duration);
startActivity(intent);
}
}
}
}
private long getAudioDuration(Context context, Uri uri) {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
long duration = 0;
try {
ContentResolver contentResolver = context.getContentResolver();
retriever.setDataSource(context, uri);
String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
duration = Long.parseLong(time);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
retriever.release();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return duration;
}
private void importAudio() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("audio/*");
startActivityForResult(Intent.createChooser(intent, "Select Audio"), REQUEST_PICK_AUDIO);
}
@Override
public void onStop() {
super.onStop();
if (dialog != null) {
dialog.dismiss();
}
}
}

View File

@ -4,6 +4,7 @@ import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@ -26,8 +27,6 @@ import java.util.List;
public class LikeFragment extends Fragment { public class LikeFragment extends Fragment {
FragmentLikeBinding binding; FragmentLikeBinding binding;
private List<LikeData> list = new ArrayList<>();
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
@ -38,33 +37,22 @@ public class LikeFragment extends Fragment {
} }
private void initData() { private void initData() {
Mytools.runIO(new Runnable() { MydataBase.getInstance().likeDao().getLikelist(true).observe(getViewLifecycleOwner(), new Observer<List<LikeData>>() {
@Override @Override
public void run() { public void onChanged(List<LikeData> mydata) {
list = MydataBase.getInstance().likeDao().getLikedata(true); if (mydata.isEmpty()) {
requireActivity().runOnUiThread(new Runnable() { binding.likeHintText.setVisibility(View.VISIBLE);
@Override binding.likeHintImage.setVisibility(View.VISIBLE);
public void run() { binding.likeRv.setVisibility(View.GONE);
if (list.isEmpty()) { } else {
binding.likeHintText.setVisibility(View.VISIBLE); binding.likeRv.setVisibility(View.VISIBLE);
binding.likeHintImage.setVisibility(View.VISIBLE); binding.likeHintImage.setVisibility(View.GONE);
binding.likeRv.setVisibility(View.GONE); binding.likeHintText.setVisibility(View.GONE);
} else { binding.likeRv.setAdapter(new LikeAdapter(requireActivity(), mydata));
binding.likeRv.setVisibility(View.VISIBLE); binding.likeRv.setLayoutManager(new LinearLayoutManager(requireContext()));
binding.likeHintText.setVisibility(View.GONE); }
binding.likeHintImage.setVisibility(View.GONE);
binding.likeRv.setAdapter(new LikeAdapter(requireActivity(), list));
binding.likeRv.setLayoutManager(new LinearLayoutManager(requireContext()));
}
}
});
} }
}); });
} }
@Override
public void onResume() {
super.onResume();
initData();
}
} }

View File

@ -1,32 +1,82 @@
package com.fun.funnyprank.fragment; package com.fun.funnyprank.fragment;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.fun.funnyprank.FunnyPrankSkin; import com.fun.funnyprank.FunnyPrankSkin;
import com.fun.funnyprank.activity.SettingActivity;
import com.fun.funnyprank.adapter.ThumAdapter; import com.fun.funnyprank.adapter.ThumAdapter;
import com.fun.funnyprank.data.LikeData;
import com.fun.funnyprank.data.MydataBase;
import com.fun.funnyprank.databinding.FragmentMainBinding; import com.fun.funnyprank.databinding.FragmentMainBinding;
import com.fun.funnyprank.tools.SpaceItem; import com.fun.funnyprank.tools.SpaceItem;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class MainFragment extends Fragment { public class MainFragment extends Fragment {
FragmentMainBinding bind; FragmentMainBinding bind;
private ThumAdapter thumAdapter;
private SpaceItem spaceItem = new SpaceItem(12, 20, 12);
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
bind = FragmentMainBinding.inflate(inflater, container, false); bind = FragmentMainBinding.inflate(inflater, container, false);
SpaceItem spaceItem = new SpaceItem(12, 20, 12);
bind.marinRv.setAdapter(new ThumAdapter(requireActivity(), FunnyPrankSkin.getMyDataArrayList())); initData();
bind.marinRv.setLayoutManager(new GridLayoutManager(requireContext(),2));
bind.marinRv.addItemDecoration(spaceItem); bind.mainSetting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(requireContext(), SettingActivity.class);
startActivity(intent);
}
});
return bind.getRoot(); return bind.getRoot();
} }
private void initData() {
MydataBase.getInstance().likeDao().livegetAll().observe(getViewLifecycleOwner(), new Observer<List<LikeData>>() {
@Override
public void onChanged(List<LikeData> list) {
initView(chekData(list));
}
});
}
private void initView(List<LikeData> maindata) {
thumAdapter = new ThumAdapter(requireActivity(), maindata);
bind.marinRv.setAdapter(thumAdapter);
bind.marinRv.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
bind.marinRv.addItemDecoration(spaceItem);
}
private static List<LikeData> chekData(List<LikeData> data) {
List<LikeData> main = new ArrayList<>();
Set<String> name = new HashSet<>();
for (LikeData mydata : data) {
if (!name.contains(mydata.getCategoryname())) {
main.add(mydata);
name.add(mydata.getCategoryname());
}
}
return main;
}
} }

View File

@ -0,0 +1,124 @@
package com.fun.funnyprank.fragment;
import android.content.Intent;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.LinearLayoutManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.bumptech.glide.Glide;
import com.fun.funnyprank.R;
import com.fun.funnyprank.activity.PrewActivity;
import com.fun.funnyprank.adapter.RankAdapter;
import com.fun.funnyprank.data.LikeData;
import com.fun.funnyprank.data.MydataBase;
import com.fun.funnyprank.data.StaticValue;
import com.fun.funnyprank.databinding.FragmentRankBinding;
import com.fun.funnyprank.tools.Mytools;
import java.util.List;
public class RankFragment extends Fragment {
FragmentRankBinding binding;
private RankAdapter rankAdapter;
private boolean islike1 = false;
private boolean islike2 = false;
private boolean islike3 = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentRankBinding.inflate(getLayoutInflater());
rankAdapter = new RankAdapter(requireActivity());
binding.rankRv.setLayoutManager(new LinearLayoutManager(requireContext()));
initData();
return binding.getRoot();
}
private void initData() {
MydataBase.getInstance().likeDao().getRankdata(true).observe(getViewLifecycleOwner(), new Observer<List<LikeData>>() {
@Override
public void onChanged(List<LikeData> list) {
LikeData mydata1 = list.get(0);
LikeData mydata2 = list.get(1);
LikeData mydata3 = list.get(2);
Glide.with(requireContext())
.load(mydata1.getPreUrl())
.placeholder(R.mipmap.icon_logo)
.into(binding.rankImage1);
if (mydata1.getTitle().length() > 6) {
String name = mydata1.getTitle().substring(0, 6);
binding.rankText1.setText(name + "...");
} else {
binding.rankText1.setText(mydata1.getTitle());
}
binding.rankRelative1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(requireContext(), PrewActivity.class);
intent.putExtra(StaticValue.KEY_TITLE, mydata1.getTitle());
requireContext().startActivity(intent);
}
});
Glide.with(requireContext())
.load(mydata2.getPreUrl())
.placeholder(R.mipmap.icon_logo)
.into(binding.rankImage2);
if (mydata2.getTitle().length() > 6) {
String name = mydata2.getTitle().substring(0, 6);
binding.rankText2.setText(name + "...");
} else {
binding.rankText2.setText(mydata1.getTitle());
}
binding.rankRelative2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(requireContext(), PrewActivity.class);
intent.putExtra(StaticValue.KEY_TITLE, mydata2.getTitle());
requireContext().startActivity(intent);
}
});
Glide.with(requireContext())
.load(mydata3.getPreUrl())
.placeholder(R.mipmap.icon_logo)
.into(binding.rankImage3);
if (mydata3.getTitle().length() > 6) {
String name = mydata3.getTitle().substring(0, 6);
binding.rankText3.setText(name + "...");
} else {
binding.rankText3.setText(mydata1.getTitle());
}
binding.rankRelative3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(requireContext(), PrewActivity.class);
intent.putExtra(StaticValue.KEY_TITLE, mydata3.getTitle());
requireContext().startActivity(intent);
}
});
List<LikeData> reList = list.subList(3, 9);
rankAdapter.SetData(reList);
binding.rankRv.setAdapter(rankAdapter);
}
});
}
}

View File

@ -0,0 +1,58 @@
package com.fun.funnyprank.tools;
import android.content.Context;
import android.media.MediaRecorder;
import java.io.File;
import java.io.IOException;
public class AudioRecorder {
private MediaRecorder mediaRecorder;
private String tempFileName;
private String fileName;
private boolean isRecording = false;
public AudioRecorder(Context context) {
File dir = context.getCacheDir();
File file = new File(dir, "temp_audio.mp3");
tempFileName = file.getAbsolutePath();
}
public void startRecording() {
if (isRecording) return;
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile(tempFileName);
try {
mediaRecorder.prepare();
mediaRecorder.start();
isRecording = true;
} catch (IOException e) {
e.printStackTrace();
}
}
public void stopRecording() {
if (!isRecording) return;
try {
mediaRecorder.stop();
} catch (IllegalStateException e) {
e.printStackTrace();
} finally {
mediaRecorder.release();
mediaRecorder = null;
isRecording = false;
}
}
public String getTempFileName() {
return tempFileName;
}
}

View File

@ -0,0 +1,62 @@
package com.`fun`.funnyprank.tools
import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.LinearGradient
import android.graphics.Paint
import android.graphics.RectF
import android.graphics.Shader
import android.util.AttributeSet
import android.view.View
class CustomProgressBar(context: Context, attrs: AttributeSet?) : View(context, attrs) {
private var progress = 0f // 当前进度
private val maxProgress = 100f // 最大进度
private val progressBarHeight = 20f // 进度条高度
private val cornerRadius = 10f // 圆角半径
private val backgroundColor = Color.parseColor("#26FFFFFF")
private val startColor = Color.parseColor("#FF9ce8ff") // 起始颜色
private val middleColor = Color.parseColor("#FFa4c4fb") // 中间颜色
private val endColor = Color.parseColor("#FFbfa4ee") // 结束颜色
private val paint = Paint()
private val paintTow = Paint()
init {
paint.style = Paint.Style.FILL
paint.isAntiAlias = true
paintTow.style = Paint.Style.FILL
paintTow.isAntiAlias = true
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
// 绘制底色矩形
paint.shader = null // 重置着色器
paint.color = backgroundColor
val backgroundRect = RectF(0f, (height / 2 - progressBarHeight / 2), width.toFloat(), (height / 2 + progressBarHeight / 2))
canvas.drawRoundRect(backgroundRect, cornerRadius, cornerRadius, paint)
// 计算进度条的宽度
val progressBarWidth = (width * progress / maxProgress)
// 创建颜色渐变对象
val gradient = LinearGradient(0f, 0f, width.toFloat(), 0f, intArrayOf(startColor, middleColor, endColor), null, Shader.TileMode.CLAMP)
paintTow.shader = gradient
// 绘制带圆角的进度条矩形
val rect = RectF(0f, (height / 2 - progressBarHeight / 2), progressBarWidth.toFloat(), (height / 2 + progressBarHeight / 2))
canvas.drawRoundRect(rect, cornerRadius, cornerRadius, paintTow)
}
fun getProgress():Float{
return progress
}
// 设置进度
fun setProgress(progress: Float) {
this.progress = progress
invalidate() // 请求重绘
}
}

View File

@ -40,7 +40,7 @@ public class Mytools {
ad.setListener(new MaxAdListener() { ad.setListener(new MaxAdListener() {
@Override @Override
public void onAdLoaded(@NonNull MaxAd maxAd) { public void onAdLoaded(@NonNull MaxAd maxAd) {
Log.e("zzj", "-----------onAdLoaded------" + maxAd.getAdUnitId());
} }
@Override @Override
@ -61,13 +61,13 @@ public class Mytools {
@Override @Override
public void onAdLoadFailed(@NonNull String s, @NonNull MaxError maxError) { public void onAdLoadFailed(@NonNull String s, @NonNull MaxError maxError) {
Log.e("zzj","-----------onAdLoadFailed------"+maxError); Log.e("zzj", "-----------onAdLoadFailed------" + maxError);
} }
@Override @Override
public void onAdDisplayFailed(@NonNull MaxAd maxAd, @NonNull MaxError maxError) { public void onAdDisplayFailed(@NonNull MaxAd maxAd, @NonNull MaxError maxError) {
adcallback.onShowFail(maxAd); adcallback.onShowFail(maxAd);
Log.e("zzj","-----------onAdDisplayFailed------"+maxError); Log.e("zzj", "-----------onAdDisplayFailed------" + maxError);
} }
}); });
} }
@ -103,7 +103,6 @@ public class Mytools {
} }
public static void runIO(Runnable task) { public static void runIO(Runnable task) {
getExecutorService().execute(task); getExecutorService().execute(task);
} }
@ -143,12 +142,16 @@ public class Mytools {
List<LikeData> likeDataList = new ArrayList<>(); List<LikeData> likeDataList = new ArrayList<>();
myData.setCategoryName(list.getString("categoryName")); myData.setCategoryName(list.getString("categoryName"));
myData.setCategoryUrl(list.getString("categoryUrl")); myData.setCategoryUrl(list.getString("categoryUrl"));
String categoryName = list.getString("categoryName");
String categoryUrl = list.getString("categoryUrl");
JSONArray classArray = list.getJSONArray("list"); JSONArray classArray = list.getJSONArray("list");
for (int i = 0; i < classArray.length(); i++) { for (int i = 0; i < classArray.length(); i++) {
JSONObject item = classArray.getJSONObject(i); JSONObject item = classArray.getJSONObject(i);
LikeData likeData = new LikeData(); LikeData likeData = new LikeData();
likeData.setCategoryUrl(categoryUrl);
likeData.setIsrank(false);
likeData.setLike(false); likeData.setLike(false);
likeData.setCategoryname(myData.getCategoryName()); likeData.setCategoryname(categoryName);
likeData.setTitle(item.getString("title")); likeData.setTitle(item.getString("title"));
likeData.setMp3Url(item.getString("mp3Url")); likeData.setMp3Url(item.getString("mp3Url"));
likeData.setPreUrl(item.getString("preUrl")); likeData.setPreUrl(item.getString("preUrl"));

View File

@ -0,0 +1,73 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="41dp"
android:height="40dp"
android:viewportWidth="41"
android:viewportHeight="40">
<path
android:pathData="M14.364,11.153H15.309V10.208V5.947C15.309,4.842 14.403,3.936 13.299,3.936C12.194,3.936 11.288,4.842 11.288,5.947V10.279V11.395L12.389,11.212C12.654,11.167 12.949,11.153 13.299,11.153H14.364Z"
android:fillColor="#292D32"/>
<path
android:pathData="M14.364,11.153H15.309V10.208V5.947C15.309,4.842 14.403,3.936 13.299,3.936C12.194,3.936 11.288,4.842 11.288,5.947V10.279V11.395L12.389,11.212C12.654,11.167 12.949,11.153 13.299,11.153H14.364Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M14.364,11.153H15.309V10.208V5.947C15.309,4.842 14.403,3.936 13.299,3.936C12.194,3.936 11.288,4.842 11.288,5.947V10.279V11.395L12.389,11.212C12.654,11.167 12.949,11.153 13.299,11.153H14.364Z"
android:strokeWidth="1.89"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
<path
android:pathData="M27.436,9.032H13.231C12.849,9.032 12.442,9.045 12.033,9.112C9.999,9.353 8.273,10.237 7.057,11.646C5.838,13.059 5.183,14.938 5.183,17.079V27.023C5.183,29.369 5.969,31.397 7.413,32.841C8.857,34.285 10.885,35.071 13.231,35.071H27.436C29.782,35.071 31.81,34.285 33.254,32.841C34.698,31.397 35.484,29.369 35.484,27.023V17.079C35.484,14.734 34.698,12.706 33.254,11.262C31.81,9.818 29.782,9.032 27.436,9.032Z"
android:fillColor="#292D32"/>
<path
android:pathData="M27.436,9.032H13.231C12.849,9.032 12.442,9.045 12.033,9.112C9.999,9.353 8.273,10.237 7.057,11.646C5.838,13.059 5.183,14.938 5.183,17.079V27.023C5.183,29.369 5.969,31.397 7.413,32.841C8.857,34.285 10.885,35.071 13.231,35.071H27.436C29.782,35.071 31.81,34.285 33.254,32.841C34.698,31.397 35.484,29.369 35.484,27.023V17.079C35.484,14.734 34.698,12.706 33.254,11.262C31.81,9.818 29.782,9.032 27.436,9.032Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M27.436,9.032H13.231C12.849,9.032 12.442,9.045 12.033,9.112C9.999,9.353 8.273,10.237 7.057,11.646C5.838,13.059 5.183,14.938 5.183,17.079V27.023C5.183,29.369 5.969,31.397 7.413,32.841C8.857,34.285 10.885,35.071 13.231,35.071H27.436C29.782,35.071 31.81,34.285 33.254,32.841C34.698,31.397 35.484,29.369 35.484,27.023V17.079C35.484,14.734 34.698,12.706 33.254,11.262C31.81,9.818 29.782,9.032 27.436,9.032Z"
android:strokeWidth="1.89"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
<path
android:pathData="M14.151,10.53H14.611V10.07V6.033C14.611,5.303 14.088,4.563 13.299,4.563C12.509,4.563 11.986,5.303 11.986,6.033V10.137V10.697L12.535,10.589C12.765,10.543 13.014,10.53 13.299,10.53H14.151Z"
android:fillColor="#292D32"/>
<path
android:pathData="M14.151,10.53H14.611V10.07V6.033C14.611,5.303 14.088,4.563 13.299,4.563C12.509,4.563 11.986,5.303 11.986,6.033V10.137V10.697L12.535,10.589C12.765,10.543 13.014,10.53 13.299,10.53H14.151Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M14.151,10.53H14.611V10.07V6.033C14.611,5.303 14.088,4.563 13.299,4.563C12.509,4.563 11.986,5.303 11.986,6.033V10.137V10.697L12.535,10.589C12.765,10.543 13.014,10.53 13.299,10.53H14.151Z"
android:strokeWidth="0.92"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:pathData="M27.533,10.05H13.133C12.758,10.05 12.398,10.064 12.053,10.121C8.337,10.55 5.933,13.28 5.933,17.197V27.203C5.933,31.491 8.813,34.35 13.133,34.35H27.533C31.853,34.35 34.733,31.491 34.733,27.203V17.197C34.733,12.909 31.853,10.05 27.533,10.05Z"
android:fillColor="#292D32"/>
<path
android:pathData="M27.533,10.05H13.133C12.758,10.05 12.398,10.064 12.053,10.121C8.337,10.55 5.933,13.28 5.933,17.197V27.203C5.933,31.491 8.813,34.35 13.133,34.35H27.533C31.853,34.35 34.733,31.491 34.733,27.203V17.197C34.733,12.909 31.853,10.05 27.533,10.05Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M27.533,9.59H13.133C12.753,9.59 12.367,9.604 11.989,9.666C10.034,9.894 8.398,10.731 7.252,12.049C6.105,13.37 5.473,15.143 5.473,17.197V27.203C5.473,29.452 6.23,31.362 7.589,32.711C8.947,34.059 10.869,34.81 13.133,34.81H27.533C29.796,34.81 31.719,34.059 33.077,32.711C34.435,31.362 35.193,29.452 35.193,27.203V17.197C35.193,14.947 34.435,13.037 33.077,11.689C31.719,10.341 29.796,9.59 27.533,9.59Z"
android:strokeWidth="0.92"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:pathData="M13.941,22.051m-4.295,0a4.295,4.295 0,1 1,8.591 0a4.295,4.295 0,1 1,-8.591 0"
android:strokeWidth="0.92"
android:fillColor="#ffffff"
android:strokeColor="#000000"/>
<path
android:pathData="M22.89,18.607L29.709,18.607A1.312,1.312 0,0 1,31.021 19.92L31.021,19.92A1.312,1.312 0,0 1,29.709 21.232L22.89,21.232A1.312,1.312 0,0 1,21.578 19.92L21.578,19.92A1.312,1.312 0,0 1,22.89 18.607z"
android:strokeWidth="0.92"
android:fillColor="#ffffff"
android:strokeColor="#000000"/>
<path
android:pathData="M22.89,22.869L25.447,22.869A1.312,1.312 0,0 1,26.76 24.181L26.76,24.181A1.312,1.312 0,0 1,25.447 25.494L22.89,25.494A1.312,1.312 0,0 1,21.578 24.181L21.578,24.181A1.312,1.312 0,0 1,22.89 22.869z"
android:strokeWidth="0.92"
android:fillColor="#ffffff"
android:strokeColor="#000000"/>
<path
android:pathData="M29.709,22.869L29.709,22.869A1.312,1.312 0,0 1,31.021 24.181L31.021,24.181A1.312,1.312 0,0 1,29.709 25.494L29.709,25.494A1.312,1.312 0,0 1,28.396 24.181L28.396,24.181A1.312,1.312 0,0 1,29.709 22.869z"
android:strokeWidth="0.92"
android:fillColor="#ffffff"
android:strokeColor="#000000"/>
<path
android:pathData="M12.238,11.844C12.463,12.215 11.959,12.93 11.113,13.443C10.267,13.956 9.4,14.071 9.175,13.701C8.951,13.331 9.355,12.369 10.201,11.856C11.047,11.343 12.014,11.474 12.238,11.844Z"
android:fillColor="#ffffff"/>
</vector>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/save_sound_butoom_bg" />
<corners android:radius="63dp" />
</shape>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<corners android:radius="29dp" />
</shape>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<corners android:radius="20dp" />
</shape>

View File

@ -0,0 +1,61 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="41dp"
android:height="40dp"
android:viewportWidth="41"
android:viewportHeight="40">
<path
android:pathData="M14.365,11.17H15.31V10.226V5.964C15.31,4.86 14.404,3.953 13.3,3.953C12.195,3.953 11.289,4.86 11.289,5.964V10.297V11.412L12.39,11.229C12.655,11.184 12.95,11.17 13.3,11.17H14.365Z"
android:fillColor="#292D32"/>
<path
android:pathData="M14.365,11.17H15.31V10.226V5.964C15.31,4.86 14.404,3.953 13.3,3.953C12.195,3.953 11.289,4.86 11.289,5.964V10.297V11.412L12.39,11.229C12.655,11.184 12.95,11.17 13.3,11.17H14.365Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M14.365,11.17H15.31V10.226V5.964C15.31,4.86 14.404,3.953 13.3,3.953C12.195,3.953 11.289,4.86 11.289,5.964V10.297V11.412L12.39,11.229C12.655,11.184 12.95,11.17 13.3,11.17H14.365Z"
android:strokeWidth="1.89"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
<path
android:pathData="M27.436,9.032H13.231C12.849,9.032 12.442,9.045 12.033,9.112C9.999,9.353 8.273,10.237 7.057,11.646C5.838,13.059 5.183,14.938 5.183,17.079V27.023C5.183,29.369 5.969,31.397 7.413,32.841C8.857,34.285 10.885,35.071 13.231,35.071H27.436C29.782,35.071 31.81,34.285 33.254,32.841C34.698,31.397 35.484,29.369 35.484,27.023V17.079C35.484,14.734 34.698,12.706 33.254,11.262C31.81,9.818 29.782,9.032 27.436,9.032Z"
android:fillColor="#292D32"/>
<path
android:pathData="M27.436,9.032H13.231C12.849,9.032 12.442,9.045 12.033,9.112C9.999,9.353 8.273,10.237 7.057,11.646C5.838,13.059 5.183,14.938 5.183,17.079V27.023C5.183,29.369 5.969,31.397 7.413,32.841C8.857,34.285 10.885,35.071 13.231,35.071H27.436C29.782,35.071 31.81,34.285 33.254,32.841C34.698,31.397 35.484,29.369 35.484,27.023V17.079C35.484,14.734 34.698,12.706 33.254,11.262C31.81,9.818 29.782,9.032 27.436,9.032Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M27.436,9.032H13.231C12.849,9.032 12.442,9.045 12.033,9.112C9.999,9.353 8.273,10.237 7.057,11.646C5.838,13.059 5.183,14.938 5.183,17.079V27.023C5.183,29.369 5.969,31.397 7.413,32.841C8.857,34.285 10.885,35.071 13.231,35.071H27.436C29.782,35.071 31.81,34.285 33.254,32.841C34.698,31.397 35.484,29.369 35.484,27.023V17.079C35.484,14.734 34.698,12.706 33.254,11.262C31.81,9.818 29.782,9.032 27.436,9.032Z"
android:strokeWidth="1.89"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
<path
android:pathData="M14.152,10.547H14.612V10.087V6.05C14.612,5.32 14.089,4.581 13.3,4.581C12.51,4.581 11.987,5.32 11.987,6.05V10.155V10.714L12.536,10.606C12.766,10.561 13.016,10.547 13.3,10.547H14.152Z"
android:strokeWidth="0.92"
android:fillColor="#ffffff"
android:strokeColor="#000000"/>
<path
android:pathData="M27.533,10.05H13.133C12.758,10.05 12.398,10.064 12.053,10.121C8.337,10.55 5.933,13.28 5.933,17.197V27.203C5.933,31.491 8.813,34.35 13.133,34.35H27.533C31.853,34.35 34.733,31.491 34.733,27.203V17.197C34.733,12.909 31.853,10.05 27.533,10.05Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M27.533,9.671H13.133C12.754,9.671 12.373,9.685 12,9.746C10.062,9.971 8.445,10.8 7.313,12.102C6.18,13.406 5.553,15.16 5.553,17.197V27.203C5.553,29.434 6.304,31.322 7.645,32.653C8.986,33.985 10.887,34.729 13.133,34.729H27.533C29.778,34.729 31.679,33.985 33.02,32.653C34.361,31.322 35.112,29.434 35.112,27.203V17.197C35.112,14.966 34.361,13.077 33.02,11.746C31.679,10.415 29.778,9.671 27.533,9.671Z"
android:strokeWidth="0.758567"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:pathData="M13.941,22.051m-4.295,0a4.295,4.295 0,1 1,8.591 0a4.295,4.295 0,1 1,-8.591 0"
android:strokeWidth="0.92"
android:fillColor="#ffffff"
android:strokeColor="#000000"/>
<path
android:pathData="M22.89,18.607L29.709,18.607A1.312,1.312 0,0 1,31.021 19.92L31.021,19.92A1.312,1.312 0,0 1,29.709 21.232L22.89,21.232A1.312,1.312 0,0 1,21.578 19.92L21.578,19.92A1.312,1.312 0,0 1,22.89 18.607z"
android:strokeWidth="0.92"
android:fillColor="#ffffff"
android:strokeColor="#000000"/>
<path
android:pathData="M22.89,22.869L25.447,22.869A1.312,1.312 0,0 1,26.76 24.181L26.76,24.181A1.312,1.312 0,0 1,25.447 25.494L22.89,25.494A1.312,1.312 0,0 1,21.578 24.181L21.578,24.181A1.312,1.312 0,0 1,22.89 22.869z"
android:strokeWidth="0.92"
android:fillColor="#ffffff"
android:strokeColor="#000000"/>
<path
android:pathData="M29.709,22.869L29.709,22.869A1.312,1.312 0,0 1,31.021 24.181L31.021,24.181A1.312,1.312 0,0 1,29.709 25.494L29.709,25.494A1.312,1.312 0,0 1,28.396 24.181L28.396,24.181A1.312,1.312 0,0 1,29.709 22.869z"
android:strokeWidth="0.92"
android:fillColor="#ffffff"
android:strokeColor="#000000"/>
</vector>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<corners
android:topLeftRadius="40dp"
android:topRightRadius="40dp" />
</shape>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/save_sound_butoom_bg" />
<corners android:radius="20dp" />
</shape>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<corners android:radius="44dp" />
<stroke
android:width="2dp"
android:color="@color/black" />
</shape>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<path
android:pathData="M10.001,16.665V9.999M10.001,9.999V3.332M10.001,9.999H16.667M10.001,9.999H3.334"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
</vector>

View File

@ -0,0 +1,39 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M4,4C4,3.448 4.448,3 5,3H13.5V9H20V20C20,20.552 19.552,21 19,21H5C4.448,21 4,20.552 4,20V4Z"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:fillType="evenOdd"
android:strokeColor="#ffffff"/>
<path
android:pathData="M13.5,3L20,9"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
<path
android:pathData="M13.512,3V9.041H20"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
<path
android:pathData="M7,15H13"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
<path
android:pathData="M10,12V18"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
</vector>

View File

@ -0,0 +1,27 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="24dp"
android:viewportWidth="25"
android:viewportHeight="24">
<path
android:pathData="M4.5,22V2H16L20.5,7.25V22H4.5Z"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
<path
android:pathData="M16.5,7L13.5,8.484V15.75"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
<path
android:pathData="M10.75,18.5C12.269,18.5 13.5,17.269 13.5,15.75C13.5,14.231 12.269,13 10.75,13C9.231,13 8,14.231 8,15.75C8,17.269 9.231,18.5 10.75,18.5Z"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
android:viewportWidth="32"
android:viewportHeight="32">
<path
android:pathData="M16,28.799C15.6,28.799 15.2,28.649 14.9,28.399C13.75,27.399 12.6,26.449 11.6,25.599C8.7,23.149 6.15,20.999 4.4,18.899C2.4,16.499 1.5,14.299 1.5,11.849C1.5,9.499 2.3,7.299 3.8,5.699C5.3,4.099 7.35,3.199 9.6,3.199C11.25,3.199 12.8,3.749 14.15,4.749C14.7,5.149 15.15,5.649 15.6,6.199C15.8,6.449 16.15,6.449 16.35,6.199C16.8,5.649 17.3,5.199 17.8,4.749C19.15,3.699 20.7,3.199 22.35,3.199C24.6,3.199 26.65,4.099 28.15,5.699C29.65,7.299 30.45,9.499 30.45,11.849C30.45,14.299 29.55,16.499 27.55,18.849C25.8,20.949 23.25,23.099 20.35,25.549C19.35,26.399 18.2,27.349 17.05,28.349C16.8,28.649 16.4,28.799 16,28.799Z"
android:fillColor="#F0ECFF"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="21dp"
android:viewportWidth="20"
android:viewportHeight="21">
<path
android:pathData="M15.85,4.787H4.235C3.867,4.787 3.57,5.1 3.57,5.486V7.01C3.57,7.396 3.867,7.709 4.235,7.709H4.869V15.018C4.869,16.834 6.268,18.307 7.994,18.307H12.02C13.746,18.307 15.145,16.834 15.145,15.018V7.711H15.839C16.206,7.711 16.503,7.398 16.503,7.012V5.488C16.514,5.1 16.215,4.787 15.85,4.787ZM8.357,14.715C8.357,15.195 7.99,15.592 7.524,15.592C7.068,15.592 6.691,15.195 6.691,14.715V9.756C6.691,9.275 7.068,8.879 7.524,8.879C7.981,8.879 8.357,9.266 8.357,9.756V14.715ZM10.87,14.715C10.87,15.195 10.502,15.592 10.037,15.592C9.571,15.592 9.204,15.195 9.204,14.715V9.756C9.204,9.275 9.58,8.879 10.037,8.879C10.493,8.879 10.87,9.266 10.87,9.756V14.715ZM13.382,14.715C13.382,15.195 13.015,15.592 12.549,15.592C12.083,15.592 11.716,15.195 11.716,14.715V9.756C11.716,9.275 12.092,8.879 12.549,8.879C13.005,8.879 13.382,9.266 13.382,9.756V14.715ZM10.831,2.752H9.244C8.491,2.752 7.875,3.379 7.836,4.162H12.239C12.209,3.377 11.595,2.752 10.831,2.752Z"
android:fillColor="#ffffff"/>
</vector>

View File

@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<path
android:pathData="M15.719,4.67C15.887,4.683 16.043,4.759 16.157,4.883C16.271,5.007 16.334,5.169 16.333,5.337L16.331,5.387L15.38,17.44C15.354,17.763 15.212,18.065 14.98,18.291C14.747,18.517 14.441,18.65 14.118,18.666L14.05,18.668H5.949C5.625,18.668 5.312,18.55 5.069,18.336C4.826,18.123 4.669,17.827 4.627,17.506L4.62,17.44L3.668,5.387C3.655,5.215 3.709,5.045 3.819,4.912C3.928,4.779 4.085,4.694 4.256,4.674C4.427,4.654 4.599,4.701 4.736,4.805C4.874,4.909 4.965,5.062 4.992,5.233L4.998,5.282L5.949,17.335H14.05L15.002,5.282C15.015,5.115 15.091,4.958 15.215,4.844C15.339,4.73 15.501,4.667 15.669,4.668L15.719,4.67H15.719Z"
android:fillColor="#DF272A"/>
<path
android:pathData="M17.333,4C17.506,3.999 17.673,4.066 17.798,4.185C17.923,4.305 17.996,4.469 18.003,4.642C18.009,4.815 17.948,4.983 17.833,5.112C17.717,5.241 17.556,5.319 17.383,5.332L17.333,5.333H2.667C2.494,5.334 2.327,5.268 2.202,5.148C2.077,5.028 2.004,4.865 1.998,4.692C1.991,4.519 2.052,4.35 2.168,4.221C2.283,4.093 2.444,4.014 2.617,4.002L2.667,4H17.333Z"
android:fillColor="#DF272A"/>
<path
android:pathData="M11.667,1.336C12.184,1.336 12.682,1.536 13.054,1.895C13.427,2.254 13.646,2.744 13.665,3.261L13.667,3.336V4.669C13.668,4.842 13.601,5.009 13.481,5.134C13.362,5.259 13.198,5.332 13.025,5.338C12.852,5.345 12.684,5.284 12.555,5.168C12.426,5.053 12.347,4.892 12.335,4.719L12.333,4.669V3.336C12.333,3.168 12.27,3.006 12.156,2.882C12.041,2.759 11.884,2.684 11.717,2.671L11.667,2.669H8.333C8.165,2.669 8.003,2.733 7.88,2.847C7.757,2.961 7.681,3.118 7.668,3.286L7.667,3.336V4.669C7.668,4.842 7.601,5.009 7.481,5.134C7.362,5.259 7.198,5.332 7.025,5.338C6.852,5.345 6.684,5.284 6.555,5.168C6.426,5.053 6.347,4.892 6.335,4.719L6.333,4.669V3.336C6.333,2.818 6.534,2.321 6.893,1.948C7.252,1.576 7.741,1.357 8.259,1.337L8.333,1.336H11.667Z"
android:fillColor="#DF272A"/>
<path
android:pathData="M13.333,14.668V15.335C13.333,15.422 13.316,15.509 13.282,15.59C13.249,15.671 13.2,15.744 13.138,15.806C13.076,15.868 13.002,15.917 12.922,15.951C12.841,15.984 12.754,16.001 12.667,16.001H7.333C7.246,16.001 7.159,15.984 7.078,15.951C6.997,15.917 6.924,15.868 6.862,15.806C6.8,15.744 6.751,15.671 6.717,15.59C6.684,15.509 6.667,15.422 6.667,15.335V14.668H13.333Z"
android:fillColor="#DF272A"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
android:viewportWidth="32"
android:viewportHeight="32">
<path
android:pathData="M16,28.799C15.6,28.799 15.2,28.649 14.9,28.399C13.75,27.399 12.6,26.449 11.6,25.599C8.7,23.149 6.15,20.999 4.4,18.899C2.4,16.499 1.5,14.299 1.5,11.849C1.5,9.499 2.3,7.299 3.8,5.699C5.3,4.099 7.35,3.199 9.6,3.199C11.25,3.199 12.8,3.749 14.15,4.749C14.7,5.149 15.15,5.649 15.6,6.199C15.8,6.449 16.15,6.449 16.35,6.199C16.8,5.649 17.3,5.199 17.8,4.749C19.15,3.699 20.7,3.199 22.35,3.199C24.6,3.199 26.65,4.099 28.15,5.699C29.65,7.299 30.45,9.499 30.45,11.849C30.45,14.299 29.55,16.499 27.55,18.849C25.8,20.949 23.25,23.099 20.35,25.549C19.35,26.399 18.2,27.349 17.05,28.349C16.8,28.649 16.4,28.799 16,28.799Z"
android:fillColor="#F52C2C"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M22,2.856V14.067C22,14.74 21.833,15.408 21.5,16.073C21.166,16.74 20.73,17.383 20.19,18.009C19.65,18.633 19.033,19.226 18.34,19.783C17.646,20.342 16.943,20.839 16.23,21.275C15.516,21.712 14.823,22.076 14.15,22.365C13.477,22.654 12.887,22.852 12.38,22.96L12.14,23L11.92,22.96C11.4,22.852 10.797,22.654 10.11,22.365C9.423,22.076 8.71,21.712 7.97,21.275C7.23,20.839 6.504,20.342 5.79,19.783C5.077,19.226 4.44,18.633 3.88,18.009C3.32,17.383 2.867,16.74 2.521,16.073C2.173,15.408 2,14.74 2,14.067V2.856L2.82,2.734L12.02,1L21.4,2.734L22,2.856ZM12.023,2.623L11.912,2.601L4.016,3.955V11.028H12.023V2.623ZM19.984,11.028H12.023V21.097C12.535,20.978 13.092,20.797 13.694,20.553C14.295,20.309 14.889,20.021 15.475,19.688C16.062,19.356 16.626,18.986 17.169,18.58C17.712,18.173 18.191,17.736 18.61,17.27C19.028,16.806 19.361,16.322 19.61,15.818C19.86,15.316 19.984,14.806 19.984,14.288V11.028Z"
android:fillColor="#ffffff"/>
</vector>

View File

@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12.177,10.613C12.062,10.754 11.975,10.881 11.917,10.993C11.859,11.105 11.809,11.228 11.766,11.362C11.728,11.449 11.684,11.606 11.632,11.833C11.58,12.061 11.528,12.309 11.476,12.578C11.424,12.847 11.375,13.107 11.331,13.356C11.286,13.606 11.261,13.796 11.256,13.926C11.242,14.168 11.062,14.604 11.154,14.697C11.246,14.79 11.635,14.541 11.881,14.49C11.998,14.459 12.175,14.401 12.411,14.312C12.647,14.224 12.897,14.123 13.159,14.01C13.421,13.896 13.672,13.781 13.91,13.665C14.149,13.549 14.328,13.452 14.451,13.375C14.574,13.308 14.691,13.222 14.8,13.119C14.909,13.016 15.005,12.92 15.088,12.83L12.262,10.512C12.224,10.557 12.196,10.591 12.177,10.613Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M22.415,3.464C22.403,3.346 22.381,3.233 22.347,3.125C22.314,3.017 22.274,2.924 22.229,2.845H22.229C22.074,2.582 21.867,2.337 21.608,2.108C21.349,1.878 21.119,1.723 20.916,1.641C20.82,1.605 20.708,1.574 20.581,1.549C20.454,1.525 20.324,1.517 20.19,1.525C20.056,1.534 19.924,1.566 19.79,1.62C19.657,1.675 19.53,1.759 19.412,1.872C19.32,1.965 19.205,2.09 19.067,2.247C18.93,2.404 18.811,2.538 18.711,2.65L21.536,4.968C21.595,4.906 21.657,4.835 21.724,4.755C21.782,4.684 21.85,4.603 21.929,4.512C22.008,4.421 22.097,4.315 22.196,4.194C22.286,4.074 22.349,3.952 22.382,3.828C22.416,3.704 22.427,3.583 22.415,3.464Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M13.205,9.345C13.027,9.562 12.868,9.756 12.729,9.927L15.568,12.256C15.709,12.084 15.872,11.883 16.057,11.654C16.321,11.327 16.618,10.967 16.95,10.573L17.941,9.351L20.934,5.702L18.108,3.37L13.205,9.345Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M21.604,9.476C20.72,9.202 19.424,8.801 19.424,8.801L18.459,9.978L17.055,11.711C16.585,12.269 16.163,12.779 15.789,13.243C15.716,13.333 15.025,14.024 14.478,14.254C13.375,14.717 11.185,15.901 10.408,15.43C10.065,15.222 11.168,10.795 11.168,10.795C11.271,10.667 11.626,10.116 11.745,9.97L14.917,6.105C14.917,6.105 12.986,3.411 12.574,2.786C12.163,2.161 11.745,2.332 11.407,2.811C11.069,3.29 7.909,7.768 7.909,7.768C7.909,7.768 3.023,9.276 2.165,9.547C1.306,9.818 1.295,10.083 1.9,10.892C2.505,11.701 5.382,15.548 5.382,15.548C5.382,15.548 5.319,20.919 5.297,21.644C5.276,22.369 5.305,22.634 6.11,22.36C6.915,22.086 12,20.356 12,20.356C12,20.356 16.726,21.982 17.48,22.221C18.234,22.46 18.711,22.286 18.696,21.245C18.682,20.203 18.618,15.548 18.618,15.548C18.618,15.548 21.413,11.804 22.114,10.873C22.813,9.942 22.489,9.75 21.604,9.476Z"
android:fillColor="#ffffff"/>
</vector>

View File

@ -0,0 +1,32 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="95dp"
android:height="95dp"
android:viewportWidth="95"
android:viewportHeight="95">
<path
android:pathData="M47.5,95C73.733,95 95,73.733 95,47.5C95,21.267 73.733,0 47.5,0C21.267,0 0,21.267 0,47.5C0,73.733 21.267,95 47.5,95Z"
android:fillColor="#181818"/>
<path
android:pathData="M36,30L59,30A6,6 0,0 1,65 36L65,59A6,6 0,0 1,59 65L36,65A6,6 0,0 1,30 59L30,36A6,6 0,0 1,36 30z"
android:fillColor="#D9D9D9"/>
<path
android:pathData="M36,30L59,30A6,6 0,0 1,65 36L65,59A6,6 0,0 1,59 65L36,65A6,6 0,0 1,30 59L30,36A6,6 0,0 1,36 30z">
<aapt:attr name="android:fillColor">
<gradient
android:startX="47.5"
android:startY="65"
android:endX="47.5"
android:endY="30"
android:type="linear">
<item android:offset="0" android:color="#FFCF1919"/>
<item android:offset="1" android:color="#FFF27E7E"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M47.5,90.868C71.452,90.868 90.869,71.451 90.869,47.499C90.869,23.546 71.452,4.129 47.5,4.129C23.548,4.129 4.13,23.546 4.13,47.499C4.13,71.451 23.548,90.868 47.5,90.868ZM47.5,88.803C70.312,88.803 88.804,70.311 88.804,47.499C88.804,24.686 70.312,6.194 47.5,6.194C24.688,6.194 6.196,24.686 6.196,47.499C6.196,70.311 24.688,88.803 47.5,88.803Z"
android:fillColor="#020202"
android:fillAlpha="0.5"
android:fillType="evenOdd"/>
</vector>

View File

@ -0,0 +1,29 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="95dp"
android:height="95dp"
android:viewportWidth="95"
android:viewportHeight="95">
<path
android:pathData="M47.5,95C73.733,95 95,73.733 95,47.5C95,21.267 73.733,0 47.5,0C21.267,0 0,21.267 0,47.5C0,73.733 21.267,95 47.5,95Z"
android:fillColor="#181818"/>
<path
android:pathData="M47.5,84C67.658,84 84,67.658 84,47.5C84,27.342 67.658,11 47.5,11C27.342,11 11,27.342 11,47.5C11,67.658 27.342,84 47.5,84Z">
<aapt:attr name="android:fillColor">
<gradient
android:startX="47.5"
android:startY="84"
android:endX="47.5"
android:endY="11"
android:type="linear">
<item android:offset="0" android:color="#FFCF1919"/>
<item android:offset="1" android:color="#FFF27E7E"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M47.5,90.868C71.452,90.868 90.869,71.451 90.869,47.499C90.869,23.546 71.452,4.129 47.5,4.129C23.548,4.129 4.13,23.546 4.13,47.499C4.13,71.451 23.548,90.868 47.5,90.868ZM47.5,88.803C70.312,88.803 88.804,70.311 88.804,47.499C88.804,24.686 70.312,6.194 47.5,6.194C24.688,6.194 6.196,24.686 6.196,47.499C6.196,70.311 24.688,88.803 47.5,88.803Z"
android:fillColor="#020202"
android:fillAlpha="0.5"
android:fillType="evenOdd"/>
</vector>

View File

@ -0,0 +1,14 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="25dp"
android:viewportWidth="24"
android:viewportHeight="25">
<path
android:pathData="M12,16C11.072,16 10.181,15.631 9.525,14.975C8.869,14.318 8.5,13.428 8.5,12.5C8.5,11.572 8.869,10.682 9.525,10.025C10.181,9.369 11.072,9 12,9C12.928,9 13.818,9.369 14.475,10.025C15.131,10.682 15.5,11.572 15.5,12.5C15.5,13.428 15.131,14.318 14.475,14.975C13.818,15.631 12.928,16 12,16ZM19.43,13.47C19.47,13.15 19.5,12.83 19.5,12.5C19.5,12.17 19.47,11.84 19.43,11.5L21.54,9.87C21.73,9.72 21.78,9.45 21.66,9.23L19.66,5.77C19.54,5.55 19.27,5.46 19.05,5.55L16.56,6.55C16.04,6.16 15.5,5.82 14.87,5.57L14.5,2.92C14.479,2.802 14.418,2.695 14.327,2.619C14.235,2.542 14.119,2.5 14,2.5H10C9.75,2.5 9.54,2.68 9.5,2.92L9.13,5.57C8.5,5.82 7.96,6.16 7.44,6.55L4.95,5.55C4.73,5.46 4.46,5.55 4.34,5.77L2.34,9.23C2.21,9.45 2.27,9.72 2.46,9.87L4.57,11.5C4.53,11.84 4.5,12.17 4.5,12.5C4.5,12.83 4.53,13.15 4.57,13.47L2.46,15.13C2.27,15.28 2.21,15.55 2.34,15.77L4.34,19.23C4.46,19.45 4.73,19.53 4.95,19.45L7.44,18.44C7.96,18.84 8.5,19.18 9.13,19.43L9.5,22.08C9.54,22.32 9.75,22.5 10,22.5H14C14.25,22.5 14.46,22.32 14.5,22.08L14.87,19.43C15.5,19.17 16.04,18.84 16.56,18.44L19.05,19.45C19.27,19.53 19.54,19.45 19.66,19.23L21.66,15.77C21.78,15.55 21.73,15.28 21.54,15.13L19.43,13.47Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M18.579,13.335L18.557,13.506L18.694,13.611L20.646,15.105C20.698,15.145 20.719,15.221 20.68,15.294L18.831,18.404L18.831,18.404L18.828,18.41C18.799,18.462 18.714,18.501 18.629,18.473L16.331,17.567L16.176,17.506L16.041,17.606C15.578,17.953 15.101,18.236 14.546,18.459L14.385,18.523L14.361,18.694L14.019,21.074C14.006,21.139 13.943,21.2 13.852,21.2H10.151C10.061,21.2 9.998,21.139 9.985,21.074L9.644,18.694L9.619,18.52L9.455,18.457C8.904,18.245 8.429,17.955 7.963,17.606L7.829,17.506L7.673,17.567L5.375,18.473C5.29,18.501 5.206,18.462 5.176,18.41L5.176,18.41L5.173,18.404L3.322,15.29L3.322,15.29L3.321,15.287C3.284,15.227 3.297,15.152 3.358,15.105C3.358,15.105 3.358,15.105 3.358,15.105L5.31,13.611L5.447,13.506L5.425,13.335C5.389,13.052 5.363,12.779 5.363,12.5C5.363,12.221 5.389,11.938 5.425,11.636L5.446,11.464L5.308,11.36L3.357,9.894C3.297,9.847 3.284,9.773 3.321,9.713L3.322,9.71L5.173,6.596L5.173,6.596L5.176,6.59C5.211,6.528 5.299,6.496 5.368,6.524L5.37,6.524L7.674,7.424L7.827,7.484L7.96,7.387C8.428,7.046 8.904,6.755 9.455,6.543L9.619,6.48L9.644,6.306L9.985,3.926C9.998,3.861 10.061,3.8 10.151,3.8L13.852,3.8L13.853,3.8C13.895,3.8 13.935,3.814 13.965,3.839C13.994,3.863 14.012,3.894 14.019,3.927L14.361,6.306L14.385,6.48L14.55,6.543C15.1,6.755 15.576,7.046 16.044,7.387L16.177,7.484L16.33,7.424L18.634,6.524L18.636,6.524C18.705,6.496 18.793,6.528 18.828,6.59L18.828,6.59L18.831,6.596L20.68,9.706C20.719,9.779 20.698,9.854 20.647,9.894C20.647,9.895 20.646,9.895 20.646,9.895L18.696,11.36L18.558,11.464L18.579,11.636C18.615,11.938 18.641,12.221 18.641,12.5C18.641,12.779 18.615,13.052 18.579,13.335ZM9.503,14.942C10.167,15.589 11.066,15.95 12.002,15.95C12.938,15.95 13.837,15.589 14.501,14.942C15.165,14.296 15.54,13.418 15.54,12.5C15.54,11.582 15.165,10.704 14.501,10.058C13.837,9.412 12.938,9.05 12.002,9.05C11.066,9.05 10.167,9.412 9.503,10.058C8.839,10.704 8.464,11.582 8.464,12.5C8.464,13.418 8.839,14.296 9.503,14.942Z"
android:strokeWidth="0.6"
android:fillColor="#ffffff"
android:strokeColor="#000000"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M22.499,5.221L14.184,20.854C14.006,21.189 13.732,21.464 13.397,21.644C13.062,21.824 12.681,21.9 12.302,21.863C11.924,21.826 11.565,21.677 11.271,21.436C10.977,21.195 10.762,20.872 10.652,20.508L8.725,14.148C8.606,13.754 8.617,13.332 8.756,12.944C8.894,12.557 9.154,12.224 9.497,11.995L17.163,6.875C17.264,6.808 17.336,6.705 17.364,6.587C17.392,6.469 17.374,6.345 17.315,6.24C17.255,6.134 17.158,6.055 17.043,6.018C16.927,5.982 16.802,5.99 16.693,6.041L8.316,9.963C7.976,10.122 7.596,10.178 7.224,10.124C6.853,10.069 6.505,9.907 6.225,9.658L1.844,5.753C1.553,5.494 1.348,5.153 1.256,4.775C1.164,4.398 1.188,4 1.327,3.637C1.465,3.273 1.711,2.96 2.031,2.739C2.351,2.519 2.731,2.4 3.12,2.4H20.803C21.135,2.4 21.46,2.486 21.749,2.649C22.037,2.812 22.278,3.047 22.449,3.331C22.62,3.615 22.714,3.938 22.723,4.27C22.731,4.601 22.654,4.929 22.499,5.221H22.499Z"
android:fillColor="#ffffff"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="21dp"
android:height="21dp"
android:viewportWidth="21"
android:viewportHeight="21">
<path
android:pathData="M10.5,21C4.701,21 0,16.299 0,10.5C0,4.701 4.701,0 10.5,0C16.299,0 21,4.701 21,10.5C21,16.299 16.299,21 10.5,21ZM4.899,6.301L9.526,16.101H11.448L16.099,6.301H14.012L10.5,14.204L6.988,6.301H4.899Z"
android:fillColor="#ffffff"/>
</vector>

View File

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="71dp"
android:height="70dp"
android:viewportWidth="71"
android:viewportHeight="70">
<path
android:pathData="M35.5,0L35.5,0A35,35 0,0 1,70.5 35L70.5,35A35,35 0,0 1,35.5 70L35.5,70A35,35 0,0 1,0.5 35L0.5,35A35,35 0,0 1,35.5 0z"
android:fillColor="#8768FF"/>
<path
android:pathData="M28,23.75L30.5,23.75A2.5,2.5 0,0 1,33 26.25L33,43.75A2.5,2.5 0,0 1,30.5 46.25L28,46.25A2.5,2.5 0,0 1,25.5 43.75L25.5,26.25A2.5,2.5 0,0 1,28 23.75z"
android:fillColor="#ffffff"/>
<path
android:pathData="M40.5,23.75L43,23.75A2.5,2.5 0,0 1,45.5 26.25L45.5,43.75A2.5,2.5 0,0 1,43 46.25L40.5,46.25A2.5,2.5 0,0 1,38 43.75L38,26.25A2.5,2.5 0,0 1,40.5 23.75z"
android:fillColor="#ffffff"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="71dp"
android:height="70dp"
android:viewportWidth="71"
android:viewportHeight="70">
<path
android:pathData="M35.5,0L35.5,0A35,35 0,0 1,70.5 35L70.5,35A35,35 0,0 1,35.5 70L35.5,70A35,35 0,0 1,0.5 35L0.5,35A35,35 0,0 1,35.5 0z"
android:fillColor="#8768FF"/>
<path
android:pathData="M45.5,30.67C48.833,32.594 48.833,37.406 45.5,39.33L34.25,45.825C30.917,47.75 26.75,45.344 26.75,41.495L26.75,28.505C26.75,24.656 30.917,22.25 34.25,24.175L45.5,30.67Z"
android:fillColor="#ffffff"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="125dp"
android:height="165dp"
android:viewportWidth="125"
android:viewportHeight="165">
<path
android:pathData="M30.74,0H94.26C111.24,0 125,13.94 125,31.13V165H0V31.13C0,13.94 13.76,0 30.74,0Z"
android:fillColor="#2E3034"/>
</vector>

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="106dp"
android:height="85dp"
android:viewportWidth="106"
android:viewportHeight="85">
<path
android:pathData="M12.26,0H106V85H0V12.42C0,5.56 5.49,0 12.26,0Z"
android:fillColor="#242529"
android:fillType="evenOdd"/>
</vector>

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="106dp"
android:height="85dp"
android:viewportWidth="106"
android:viewportHeight="85">
<path
android:pathData="M93.74,0H0V85H106V12.42C106,5.56 100.51,0 93.74,0Z"
android:fillColor="#242529"
android:fillType="evenOdd"/>
</vector>

View File

@ -0,0 +1,61 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="41dp"
android:height="40dp"
android:viewportWidth="41"
android:viewportHeight="40">
<group>
<clip-path
android:pathData="M0.667,0h40v40h-40z"/>
<path
android:pathData="M16.725,9.859C16.69,9.431 16.933,9.029 17.327,8.86L27.221,4.62C27.894,4.331 28.639,4.84 28.615,5.572L27.699,33.033C27.681,33.572 27.239,34 26.7,34H19.59C19.069,34 18.635,33.6 18.593,33.08L16.725,9.859Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M16.725,9.859C16.69,9.431 16.933,9.029 17.327,8.86L27.221,4.62C27.894,4.331 28.639,4.84 28.615,5.572L27.699,33.033C27.681,33.572 27.239,34 26.7,34H19.59C19.069,34 18.635,33.6 18.593,33.08L16.725,9.859Z"
android:strokeWidth="1.87"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
<path
android:pathData="M25.789,19.781C25.72,19.261 26.066,18.776 26.58,18.671L38.242,16.291C38.929,16.151 39.543,16.743 39.428,17.435L36.806,33.164C36.726,33.647 36.309,34 35.82,34H28.544C28.042,34 27.618,33.628 27.552,33.131L25.789,19.781Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M25.789,19.781C25.72,19.261 26.066,18.776 26.58,18.671L38.242,16.291C38.929,16.151 39.543,16.743 39.428,17.435L36.806,33.164C36.726,33.647 36.309,34 35.82,34H28.544C28.042,34 27.618,33.628 27.552,33.131L25.789,19.781Z"
android:strokeWidth="1.87"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
<path
android:pathData="M26.783,20.454C26.718,19.937 27.059,19.457 27.568,19.349L37.241,17.302C37.928,17.156 38.547,17.746 38.436,18.439L36.231,32.159C36.153,32.644 35.735,33 35.243,33H29.262C28.759,33 28.334,32.626 28.27,32.126L26.783,20.454Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M27.473,18.899C26.729,19.056 26.231,19.758 26.327,20.512L27.814,32.185C27.907,32.914 28.527,33.46 29.262,33.46H35.243C35.96,33.46 36.571,32.939 36.685,32.232L38.89,18.512C39.053,17.5 38.149,16.639 37.146,16.852L27.473,18.899Z"
android:strokeWidth="0.92"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:pathData="M20.571,14.828C20.624,14.288 20.237,13.804 19.698,13.737L7.017,12.167C6.347,12.084 5.79,12.675 5.91,13.339L9.518,33.179C9.604,33.654 10.018,34 10.502,34H17.761C18.275,34 18.706,33.61 18.757,33.099L20.571,14.828Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M20.571,14.828C20.624,14.288 20.237,13.804 19.698,13.737L7.017,12.167C6.347,12.084 5.79,12.675 5.91,13.339L9.518,33.179C9.604,33.654 10.018,34 10.502,34H17.761C18.275,34 18.706,33.61 18.757,33.099L20.571,14.828Z"
android:strokeWidth="1.87"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
<path
android:pathData="M19.576,15.576C19.627,15.037 19.24,14.556 18.703,14.489L8.005,13.166C7.339,13.083 6.783,13.667 6.897,14.329L9.99,32.171C10.073,32.65 10.489,33 10.975,33H17.024C17.539,33 17.971,32.607 18.019,32.094L19.576,15.576Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M18.76,14.033C19.543,14.13 20.108,14.833 20.034,15.619L18.477,32.137C18.406,32.887 17.777,33.46 17.024,33.46H10.975C10.265,33.46 9.658,32.949 9.537,32.249L6.444,14.407C6.277,13.442 7.089,12.589 8.062,12.709L18.76,14.033Z"
android:strokeWidth="0.92"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:pathData="M16.731,10.539C16.693,10.1 16.947,9.688 17.356,9.525L27.241,5.57C27.913,5.302 28.638,5.812 28.612,6.534L27.684,32.518C27.675,32.787 27.454,33 27.184,33H19.126C18.866,33 18.65,32.801 18.628,32.543L16.731,10.539Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M17.185,9.097C16.588,9.336 16.217,9.938 16.272,10.578L18.169,32.583C18.212,33.079 18.628,33.46 19.126,33.46H27.184C27.701,33.46 28.125,33.051 28.144,32.534L29.072,6.551C29.11,5.496 28.05,4.751 27.071,5.143L17.185,9.097Z"
android:strokeWidth="0.92"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:pathData="M24.745,14.301L23.306,19.609L21.658,19.731L23.097,14.281L21.648,14.382L22.177,13.166L23.956,13.004C24.167,12.983 24.378,13.045 24.545,13.176C24.627,13.248 24.693,13.337 24.737,13.436C24.782,13.536 24.805,13.644 24.805,13.754C24.817,13.938 24.797,14.123 24.745,14.301ZM14.293,22.699C14.348,23.013 14.335,23.335 14.253,23.643C14.172,23.951 14.026,24.238 13.823,24.482C13.439,24.996 12.948,25.418 12.384,25.718L14.513,25.232L14.393,26.244L11.145,26.984L11.205,26.032C11.68,25.68 12.095,25.252 12.434,24.765C12.631,24.547 12.779,24.288 12.87,24.007C12.962,23.726 12.993,23.429 12.964,23.135C12.874,22.719 12.674,22.547 12.354,22.618C12.358,22.662 12.358,22.706 12.354,22.75C12.378,22.855 12.378,22.965 12.354,23.07C12.33,23.175 12.282,23.274 12.215,23.357C12.085,23.53 11.901,23.651 11.692,23.699C11.484,23.747 11.266,23.719 11.075,23.621C10.981,23.572 10.899,23.504 10.833,23.42C10.767,23.336 10.721,23.239 10.696,23.135C10.651,22.98 10.659,22.815 10.719,22.666C10.779,22.516 10.887,22.392 11.026,22.314C11.358,22.126 11.72,21.996 12.095,21.929C12.492,21.822 12.903,21.777 13.314,21.797C13.557,21.801 13.791,21.894 13.972,22.06C14.152,22.226 14.266,22.453 14.293,22.699ZM34.667,22.871L33.548,24.299C33.752,24.427 33.92,24.605 34.037,24.816C34.172,25.012 34.238,25.247 34.227,25.485C34.223,25.702 34.168,25.915 34.065,26.105C33.962,26.296 33.816,26.458 33.638,26.579C33.282,26.821 32.867,26.958 32.439,26.974C32.087,27.009 31.732,27.009 31.38,26.974C31.178,26.961 30.989,26.87 30.85,26.721C30.782,26.654 30.729,26.572 30.694,26.483C30.66,26.393 30.645,26.296 30.65,26.2C30.656,26.104 30.682,26.01 30.727,25.925C30.772,25.84 30.834,25.766 30.91,25.708C31.069,25.591 31.264,25.534 31.46,25.545C31.659,25.552 31.849,25.635 31.989,25.778C32.095,25.876 32.166,26.007 32.192,26.149C32.217,26.292 32.195,26.44 32.129,26.569C32.234,26.573 32.339,26.553 32.436,26.511C32.533,26.469 32.619,26.406 32.689,26.326C32.835,26.153 32.919,25.935 32.928,25.708C32.936,25.567 32.911,25.428 32.856,25.299C32.8,25.171 32.716,25.057 32.609,24.968C32.428,24.799 32.202,24.686 31.959,24.644L32.879,23.631L31.27,23.53L31.649,22.699L34.667,22.871Z"
android:fillColor="#000000"/>
</group>
</vector>

View File

@ -0,0 +1,61 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="41dp"
android:height="40dp"
android:viewportWidth="41"
android:viewportHeight="40">
<group>
<clip-path
android:pathData="M0.667,0h40v40h-40z"/>
<path
android:pathData="M16.725,9.859C16.69,9.431 16.933,9.029 17.327,8.86L27.221,4.62C27.894,4.331 28.639,4.84 28.615,5.572L27.699,33.033C27.681,33.572 27.239,34 26.7,34H19.59C19.069,34 18.635,33.6 18.593,33.08L16.725,9.859Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M16.725,9.859C16.69,9.431 16.933,9.029 17.327,8.86L27.221,4.62C27.894,4.331 28.639,4.84 28.615,5.572L27.699,33.033C27.681,33.572 27.239,34 26.7,34H19.59C19.069,34 18.635,33.6 18.593,33.08L16.725,9.859Z"
android:strokeWidth="1.87"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
<path
android:pathData="M25.789,19.781C25.72,19.261 26.066,18.776 26.58,18.671L38.242,16.291C38.929,16.151 39.543,16.743 39.428,17.435L36.806,33.164C36.726,33.647 36.309,34 35.82,34H28.544C28.042,34 27.618,33.628 27.552,33.131L25.789,19.781Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M25.789,19.781C25.72,19.261 26.066,18.776 26.58,18.671L38.242,16.291C38.929,16.151 39.543,16.743 39.428,17.435L36.806,33.164C36.726,33.647 36.309,34 35.82,34H28.544C28.042,34 27.618,33.628 27.552,33.131L25.789,19.781Z"
android:strokeWidth="1.87"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
<path
android:pathData="M26.783,20.454C26.718,19.937 27.059,19.457 27.568,19.349L37.241,17.302C37.928,17.156 38.547,17.746 38.436,18.439L36.231,32.159C36.153,32.644 35.735,33 35.243,33H29.262C28.759,33 28.334,32.626 28.27,32.126L26.783,20.454Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M27.473,18.899C26.729,19.056 26.231,19.758 26.327,20.512L27.814,32.185C27.907,32.914 28.527,33.46 29.262,33.46H35.243C35.96,33.46 36.571,32.939 36.685,32.232L38.89,18.512C39.053,17.5 38.149,16.639 37.146,16.852L27.473,18.899Z"
android:strokeWidth="0.92"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:pathData="M20.571,14.82C20.625,14.283 20.243,13.801 19.708,13.73L7.966,12.172C7.312,12.086 6.755,12.645 6.844,13.299L9.549,33.135C9.617,33.631 10.04,34 10.54,34H17.761C18.275,34 18.706,33.61 18.757,33.099L20.571,14.82Z"
android:fillColor="#FCF004"/>
<path
android:pathData="M20.571,14.82C20.625,14.283 20.243,13.801 19.708,13.73L7.966,12.172C7.312,12.086 6.755,12.645 6.844,13.299L9.549,33.135C9.617,33.631 10.04,34 10.54,34H17.761C18.275,34 18.706,33.61 18.757,33.099L20.571,14.82Z"
android:strokeWidth="1.87"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
<path
android:pathData="M19.577,15.566C19.627,15.031 19.246,14.552 18.714,14.481L8.951,13.172C8.302,13.085 7.745,13.635 7.826,14.286L10.025,32.122C10.087,32.624 10.513,33 11.018,33H17.024C17.539,33 17.971,32.607 18.019,32.094L19.577,15.566Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M18.775,14.025C19.552,14.129 20.108,14.828 20.035,15.609L18.477,32.137C18.406,32.887 17.777,33.46 17.024,33.46H11.018C10.281,33.46 9.659,32.91 9.569,32.179L7.369,14.342C7.252,13.393 8.064,12.589 9.012,12.716L18.775,14.025Z"
android:strokeWidth="0.92"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:pathData="M16.731,10.539C16.693,10.1 16.947,9.688 17.356,9.525L27.241,5.57C27.913,5.302 28.638,5.812 28.612,6.534L27.684,32.518C27.675,32.787 27.454,33 27.184,33H19.126C18.866,33 18.65,32.801 18.628,32.543L16.731,10.539Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M17.185,9.097C16.588,9.336 16.217,9.938 16.272,10.578L18.169,32.583C18.212,33.079 18.628,33.46 19.126,33.46H27.184C27.701,33.46 28.125,33.051 28.144,32.534L29.072,6.551C29.11,5.496 28.05,4.751 27.071,5.143L17.185,9.097Z"
android:strokeWidth="0.92"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:pathData="M24.745,14.301L23.306,19.609L21.658,19.731L23.097,14.281L21.648,14.382L22.177,13.166L23.956,13.004C24.167,12.983 24.378,13.045 24.545,13.176C24.627,13.248 24.693,13.337 24.737,13.436C24.782,13.536 24.805,13.644 24.805,13.754C24.817,13.938 24.797,14.123 24.745,14.301ZM14.293,22.699C14.348,23.013 14.335,23.335 14.253,23.643C14.172,23.951 14.026,24.238 13.823,24.482C13.439,24.996 12.948,25.418 12.384,25.718L14.513,25.232L14.393,26.244L11.145,26.984L11.205,26.032C11.68,25.68 12.095,25.252 12.434,24.765C12.631,24.547 12.779,24.288 12.87,24.007C12.962,23.726 12.993,23.429 12.964,23.135C12.874,22.719 12.674,22.547 12.354,22.618C12.358,22.662 12.358,22.706 12.354,22.75C12.378,22.855 12.378,22.965 12.354,23.07C12.33,23.175 12.282,23.274 12.215,23.357C12.085,23.53 11.901,23.651 11.692,23.699C11.484,23.747 11.266,23.719 11.075,23.621C10.981,23.572 10.899,23.504 10.833,23.42C10.767,23.336 10.721,23.239 10.696,23.135C10.651,22.98 10.659,22.815 10.719,22.666C10.779,22.516 10.887,22.392 11.026,22.314C11.358,22.126 11.72,21.996 12.095,21.929C12.492,21.822 12.903,21.777 13.314,21.797C13.557,21.801 13.791,21.894 13.972,22.06C14.152,22.226 14.266,22.453 14.293,22.699ZM34.667,22.871L33.548,24.299C33.752,24.427 33.92,24.605 34.037,24.816C34.172,25.012 34.238,25.247 34.227,25.485C34.223,25.702 34.168,25.915 34.065,26.105C33.962,26.296 33.816,26.458 33.638,26.579C33.282,26.821 32.867,26.958 32.439,26.974C32.087,27.009 31.732,27.009 31.38,26.974C31.178,26.961 30.989,26.87 30.85,26.721C30.782,26.654 30.729,26.572 30.694,26.483C30.66,26.393 30.645,26.296 30.65,26.2C30.656,26.104 30.682,26.01 30.727,25.925C30.772,25.84 30.834,25.766 30.91,25.708C31.069,25.591 31.264,25.534 31.46,25.545C31.659,25.552 31.849,25.635 31.989,25.778C32.095,25.876 32.166,26.007 32.192,26.149C32.217,26.292 32.195,26.44 32.129,26.569C32.234,26.573 32.339,26.553 32.436,26.511C32.533,26.469 32.619,26.406 32.689,26.326C32.835,26.153 32.919,25.935 32.928,25.708C32.936,25.567 32.911,25.428 32.856,25.299C32.8,25.171 32.716,25.057 32.609,24.968C32.428,24.799 32.202,24.686 31.959,24.644L32.879,23.631L31.27,23.53L31.649,22.699L34.667,22.871Z"
android:fillColor="#000000"/>
</group>
</vector>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/setting_cons_bg" />
<corners android:radius="12dp" />
</shape>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/save_sound_butoom_bg" />
<corners android:radius="44dp" />
</shape>

View File

@ -126,7 +126,7 @@
<SeekBar <SeekBar
android:id="@+id/seekbar" android:id="@+id/seekbar"
android:layout_width="210dp" android:layout_width="250dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="56dp" android:layout_marginTop="56dp"
android:progressDrawable="@drawable/seekbar_style" android:progressDrawable="@drawable/seekbar_style"

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_record"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/main_bg"
tools:context=".activity.RecordActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bg_like">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/record_back"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginStart="20dp"
android:background="@drawable/icon_back_bg"
android:padding="4dp"
app:layout_constraintBottom_toBottomOf="@id/record_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/record_title">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/icon_back" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.fun.funnyprank.tools.MytextView
android:id="@+id/record_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="@string/record_title"
android:textColor="@color/main_title_color"
android:textSize="26sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.fun.funnyprank.tools.MytextView
android:id="@+id/record_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="90dp"
android:textColor="@color/black"
android:textSize="40sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/record_title" />
<ImageView
android:id="@+id/record_play"
android:layout_width="95dp"
android:layout_height="95dp"
android:layout_marginBottom="40dp"
android:background="@drawable/icon_record_play"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_save"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/main_bg"
tools:context=".activity.SaveActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bg_like">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/save_back"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginStart="20dp"
android:background="@drawable/icon_back_bg"
android:padding="4dp"
app:layout_constraintBottom_toBottomOf="@id/save_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/save_title">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/icon_back" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.fun.funnyprank.tools.MytextView
android:id="@+id/save_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="@string/record_title"
android:textColor="@color/main_title_color"
android:textSize="26sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/save_image"
android:layout_width="260dp"
android:layout_height="220dp"
android:layout_marginTop="26dp"
android:src="@mipmap/save_image"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/save_title" />
<com.fun.funnyprank.tools.MytextView
android:id="@+id/save_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:textColor="@color/black"
android:textSize="40sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/save_image" />
<EditText
android:id="@+id/save_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="36dp"
android:background="@drawable/edit_bg"
android:gravity="center"
android:hint="@string/edit_hint"
android:maxLength="10"
android:padding="8dp"
android:textColorHint="@color/add_tips_color"
app:layout_constraintTop_toBottomOf="@id/save_time" />
<ImageView
android:id="@+id/save_play"
android:layout_width="95dp"
android:layout_height="95dp"
android:layout_marginTop="20dp"
android:background="@drawable/icon_play"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/save_edit" />
<TextView
android:id="@+id/save"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24dp"
android:layout_marginBottom="40dp"
android:background="@drawable/tab_check"
android:gravity="center"
android:padding="10dp"
android:text="@string/record_save"
android:textColor="@color/white"
android:textSize="19sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/save_play" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,200 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_setting"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/main_bg"
tools:context=".activity.SettingActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bg_like">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/setting_back"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginStart="20dp"
android:background="@drawable/icon_back_bg"
android:padding="4dp"
app:layout_constraintBottom_toBottomOf="@id/setting_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/setting_title">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/icon_back" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.fun.funnyprank.tools.MytextView
android:id="@+id/setting_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="@string/setting_title"
android:textColor="@color/main_title_color"
android:textSize="26sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/privacy"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@drawable/setting_cons_bg"
android:padding="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/setting_title">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="@string/privacy_text"
android:textColor="@color/white"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/privacy_image"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/privacy_image"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="8dp"
android:src="@drawable/icon_privacy"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/share"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@drawable/setting_cons_bg"
android:padding="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/privacy">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="@string/share_text"
android:textColor="@color/white"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/share_image"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/share_image"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="8dp"
android:src="@drawable/icon_share"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/rate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@drawable/setting_cons_bg"
android:padding="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/share">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="@string/rate_text"
android:textColor="@color/white"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/rate_image"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/rate_image"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="8dp"
android:src="@drawable/icon_rate"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/version"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@drawable/setting_cons_bg"
android:padding="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/rate">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="@string/version_text"
android:textColor="@color/white"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/version_image"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/version_image"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="8dp"
android:src="@drawable/icon_version"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/version_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:textColor="@color/white"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -2,9 +2,9 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_splash"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:id="@+id/activity_splash"
android:background="@color/main_bg" android:background="@color/main_bg"
tools:context=".activity.SplashActivity"> tools:context=".activity.SplashActivity">
@ -37,13 +37,14 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/logo" /> app:layout_constraintTop_toBottomOf="@id/logo" />
<ProgressBar <com.fun.funnyprank.tools.CustomProgressBar
android:layout_width="wrap_content" android:id="@+id/splash_pg"
android:layout_height="wrap_content" android:layout_width="300dp"
android:layout_marginTop="20dp" android:layout_height="20dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="100dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:indeterminateTint="@color/white" app:layout_constraintStart_toStartOf="parent" />
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/text" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/activity_web"
android:layout_height="match_parent"
tools:context=".activity.WebActivity">
<WebView
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="24dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/custom_cons"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="6dp"
android:paddingStart="12dp"
android:paddingTop="10dp"
android:paddingEnd="12dp"
android:paddingBottom="10dp"
app:layout_constraintEnd_toStartOf="@id/custom_item_delete"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/custom_image"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/ic_launcher_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/custom_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:gravity="center"
android:textColor="@color/black"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/custom_time"
app:layout_constraintStart_toEndOf="@id/custom_image"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/custom_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="20dp"
android:gravity="center"
android:textColor="@color/add_tips_color"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/custom_like"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/custom_like"
android:layout_width="27dp"
android:layout_height="24dp"
android:background="@drawable/icon_liek_uncheck"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/custom_item_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/icon_back_bg"
android:padding="4dp"
app:layout_constraintBottom_toBottomOf="@id/custom_cons"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/custom_cons">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/icon_delete"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/dialog_bg">
<com.fun.funnyprank.tools.MytextView
android:id="@+id/dialog_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/dialog_title"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/dialog_import"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24dp"
android:background="@drawable/dialog_cons_bg"
android:padding="16dp"
app:layout_constraintTop_toBottomOf="@id/dialog_title">
<TextView
android:id="@+id/import_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="@string/dialog_import_text"
android:textColor="@color/white"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginEnd="12dp"
android:src="@drawable/icon_custom_import"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/import_text"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/dialog_record"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24dp"
android:layout_marginBottom="20dp"
android:background="@drawable/dialog_cons_bg"
android:padding="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/dialog_import">
<TextView
android:id="@+id/record_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="@string/dialog_record_text"
android:textColor="@color/white"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginEnd="12dp"
android:src="@drawable/icon_custom_record"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/record_text"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bg_like"
tools:context=".fragment.CustomFragment">
<com.fun.funnyprank.tools.MytextView
android:id="@+id/custom_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/record_create"
android:textColor="@color/main_title_color"
android:textSize="26sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/custom_delete"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="20dp"
android:background="@drawable/icon_back_bg"
android:padding="4dp"
app:layout_constraintBottom_toBottomOf="@id/custom_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/custom_title">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/icon_delete" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/custom_rv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
app:layout_constraintBottom_toTopOf="@id/add"
app:layout_constraintTop_toBottomOf="@id/custom_title" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/add_hide"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24dp"
android:background="@drawable/custom_cons_bg"
android:padding="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/custom_title">
<TextView
android:id="@+id/add_hide_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add_text"
android:textColor="@color/white"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginEnd="12dp"
android:src="@drawable/icon_custom_add"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/add_hide_text"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.fun.funnyprank.tools.MytextView
android:id="@+id/add_tips"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="24dp"
android:gravity="center"
android:text="@string/add_tips"
android:textColor="@color/white"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/add_hide" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="120dp"
android:background="@drawable/custom_cons_bg"
android:padding="8dp"
app:layout_constraintBottom_toBottomOf="parent">
<TextView
android:id="@+id/add_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add_text"
android:textColor="@color/white"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginEnd="12dp"
android:src="@drawable/icon_custom_add"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/add_text"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -24,14 +24,22 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<ImageView <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="58dp" android:id="@+id/main_setting"
android:layout_height="58dp" android:layout_width="30dp"
android:layout_marginEnd="50dp" android:layout_height="30dp"
android:background="@mipmap/main_title_logo" android:layout_marginEnd="20dp"
android:background="@drawable/icon_back_bg"
android:padding="4dp"
app:layout_constraintBottom_toBottomOf="@id/main_title" app:layout_constraintBottom_toBottomOf="@id/main_title"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/main_title" /> app:layout_constraintTop_toTopOf="@id/main_title">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/icon_setting" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/marin_rv" android:id="@+id/marin_rv"

View File

@ -0,0 +1,194 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bg_like"
tools:context=".fragment.RankFragment">
<com.fun.funnyprank.tools.MytextView
android:id="@+id/rank_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/rank_title"
android:textColor="@color/main_title_color"
android:textSize="36sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/rank_1"
android:layout_width="150dp"
android:layout_height="300dp"
android:layout_marginTop="12dp"
android:src="@drawable/rank_1th_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/rank_title" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cons_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/rank_title">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/rank_relative_1"
android:layout_width="93dp"
android:layout_height="118dp"
android:background="@mipmap/rank_1th_image_bg"
android:padding="4dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/rank_image_1"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentTop="true"
android:layout_marginStart="6dp"
android:layout_marginTop="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.fun.funnyprank.tools.MytextView
android:id="@+id/rank_text_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:textColor="@color/white"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/rank_relative_1" />
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/rank_2"
android:layout_width="90dp"
android:layout_height="200dp"
android:layout_marginBottom="50dp"
android:src="@drawable/rank_2th_bg"
app:layout_constraintBottom_toBottomOf="@id/rank_1"
app:layout_constraintEnd_toStartOf="@id/rank_1" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cons_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="23dp"
app:layout_constraintEnd_toEndOf="@id/rank_2"
app:layout_constraintStart_toStartOf="@id/rank_2"
app:layout_constraintTop_toTopOf="@id/rank_2">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/rank_relative_2"
android:layout_width="70dp"
android:layout_height="80dp"
android:background="@mipmap/rank_2th_image_bg"
android:padding="4dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/rank_image_2"
android:layout_width="37dp"
android:layout_height="37dp"
android:layout_marginBottom="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.fun.funnyprank.tools.MytextView
android:id="@+id/rank_text_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:textColor="@color/white"
android:textSize="15sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/rank_relative_2" />
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/rank_3"
android:layout_width="90dp"
android:layout_height="200dp"
android:layout_marginBottom="50dp"
android:src="@drawable/rank_3th_bg"
app:layout_constraintBottom_toBottomOf="@id/rank_1"
app:layout_constraintStart_toEndOf="@id/rank_1" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cons_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="23dp"
app:layout_constraintEnd_toEndOf="@id/rank_3"
app:layout_constraintStart_toStartOf="@id/rank_3"
app:layout_constraintTop_toTopOf="@id/rank_3">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/rank_relative_3"
android:layout_width="70dp"
android:layout_height="80dp"
android:background="@mipmap/rank_3th_image_bg"
android:padding="4dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/rank_image_3"
android:layout_width="37dp"
android:layout_height="37dp"
android:layout_marginBottom="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.fun.funnyprank.tools.MytextView
android:id="@+id/rank_text_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:textColor="@color/white"
android:textSize="15sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/rank_relative_3" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rank_rv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="-114.5dp"
android:background="@color/white"
android:paddingStart="24dp"
android:paddingTop="10dp"
android:paddingEnd="24dp"
android:paddingBottom="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/rank_1" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/rank_item_cons"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingStart="12dp"
android:paddingTop="10dp"
android:paddingEnd="12dp"
android:paddingBottom="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<RelativeLayout
android:id="@+id/rank_item_relative"
android:layout_width="55dp"
android:layout_height="55dp"
android:layout_marginStart="26dp"
android:background="@mipmap/rank_list_image_bg"
android:padding="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/rank_item_id"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/rank_item_image"
android:layout_width="37dp"
android:layout_height="37dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
<com.fun.funnyprank.tools.MytextView
android:id="@+id/rank_item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:gravity="center"
android:textColor="@color/black"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/rank_item_relative"
app:layout_constraintTop_toTopOf="parent" />
<com.fun.funnyprank.tools.MytextView
android:id="@+id/rank_item_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="@color/black"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/rank_item_like"
android:layout_width="27dp"
android:layout_height="24dp"
android:background="@drawable/icon_liek_uncheck"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<View
android:id="@+id/rank_item_view"
android:layout_width="match_parent"
android:layout_height="90dp"
app:layout_constraintTop_toBottomOf="@id/rank_item_cons" />
</androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@ -24,4 +24,8 @@
<color name="gray">#E4F5FF</color> <color name="gray">#E4F5FF</color>
<color name="check">#494747</color> <color name="check">#494747</color>
<color name="seekbar_check">#FFE900</color> <color name="seekbar_check">#FFE900</color>
<color name="setting_cons_bg">#0C0E0E</color>
<color name="tab_check">#613EEA</color>
<color name="save_sound_butoom_bg">#303030</color>
<color name="add_tips_color">#A7A7A7</color>
</resources> </resources>

View File

@ -4,4 +4,26 @@
<string name="loop">Loop</string> <string name="loop">Loop</string>
<string name="like_title">My favorite</string> <string name="like_title">My favorite</string>
<string name="like_hint">At present, there is nothing \n you like Go to the homepage \n and take a look</string> <string name="like_hint">At present, there is nothing \n you like Go to the homepage \n and take a look</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
<string name="add_tips">No files are present at the moment. \n Let\'s create one now.</string>
<string name="add_text">Add sound</string>
<string name="record_create">Create sounds</string>
<string name="dialog_title">Add sound</string>
<string name="dialog_import_text">Import audio</string>
<string name="dialog_record_text">Record sound</string>
<string name="record_title">New Record</string>
<string name="setting_title">Settings</string>
<string name="save_tip">Please enter the content</string>
<string name="edit_hint">Give your created sound a name</string>
<string name="record_stop">Stop create</string>
<string name="record_save">Save sound</string>
<string name="save_tips">Successfully save</string>
<string name="time_text">00 : 00 : 00</string>
<string name="rank_title">Ranking</string>
<string name="privacy_text">Privacy Policy</string>
<string name="share_text">Share</string>
<string name="rate_text">Rate</string>
<string name="version_text">Version</string>
<string name="share_title">Here is a Funny Prank</string>
</resources> </resources>