Wallpaper_Magazine/app/src/main/java/com/example/wallpapermagazine/ViewActivity2.java
2024-09-23 19:40:37 +08:00

247 lines
9.9 KiB
Java

package com.example.wallpapermagazine;
import android.annotation.SuppressLint;
import android.app.WallpaperManager;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.example.wallpapermagazine.LoveDAO.AppDatabase;
import com.example.wallpapermagazine.LoveDAO.FavoriteImage;
import com.example.wallpapermagazine.LoveDAO.FavoriteImageDao;
import com.example.wallpapermagazine.action.DownloadListener;
import com.example.wallpapermagazine.donwload.ImageDownloadTask;
import com.example.wallpapermagazine.fragment.PreviewFragment;
import com.example.wallpapermagazine.recylcle.FavoriteImageAdapter;
import com.example.wallpapermagazine.topon.AdManager;
import com.example.wallpapermagazine.topon.onActionListener;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.util.ArrayList;
import java.util.List;
public class ViewActivity2 extends AppCompatActivity {
private ImageView frameLayoutBack;
private ViewPager viewPagerPreview;
private FavoriteImage favoriteImage;
private FavoriteImageAdapter adapter;
private AppDatabase appDatabase;
private WallpaperManager wallpaperManager;
private FloatingActionButton fab_download, fab_like, fab_share;
private String lovePreImg;
private TextView textViewLoading;
private FavoriteImageDao favoriteImageDao;
private int recop;
private static final int STORAGE_PERMISSION_CODE = 1;
@SuppressLint("UseCompatLoadingForDrawables")
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewlayout2);
AdManager.loadAllAd();
inint();
favoriteImage = new FavoriteImage();
appDatabase = AppDatabase.getDatabase(this);
favoriteImageDao = appDatabase.favoriteImageDao();
favoriteImage = (FavoriteImage) getIntent().getSerializableExtra("imageUrl");
recop = getIntent().getIntExtra("recop", 0);
lovePreImg = favoriteImage.getImageUrl();
wallpaperManager = WallpaperManager.getInstance(this);
frameLayoutBack = findViewById(R.id.imageview_back2);
viewPagerPreview = findViewById(R.id.viewpager_preview);
textViewLoading = findViewById(R.id.textview_loading2);
fab_download = findViewById(R.id.fbt_download2);
fab_share = findViewById(R.id.fbt_show2);
fab_like = findViewById(R.id.fbt_love2);
initViewPaper();
frameLayoutBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
findViewById(R.id.set_wallpaper).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showTopOn(new onActionListener() {
@Override
public void onAction() {
if (lovePreImg != null) {
loadPreview(lovePreImg);
} else {
Toast.makeText(ViewActivity2.this, "Sorry setting failed", Toast.LENGTH_SHORT).show();
}
}
});
}
});
fab_share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
fab_share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain"); // 设置分享内容的类型为图片
shareIntent.putExtra(Intent.EXTRA_TEXT, lovePreImg); // 可以添加URL文本
startActivity(Intent.createChooser(shareIntent, "Share pictures"));
}
});
}
});
fab_download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (lovePreImg != null) {
textViewLoading.setVisibility(View.VISIBLE);
String imageUrl = lovePreImg;
ImageDownloadTask downloadTask = new ImageDownloadTask(getBaseContext(), new DownloadListener() {
@Override
public void downloadResult(boolean isSuccess) {
textViewLoading.setVisibility(View.GONE);
if (isSuccess) {
Toast.makeText(ViewActivity2.this, "Image downloaded successfully", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(ViewActivity2.this, "Failed to download image", Toast.LENGTH_SHORT).show();
}
}
});
downloadTask.execute(imageUrl);
}
}
});
favoriteImage.imageUrl = lovePreImg;
fab_like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(new Runnable() {
@Override
public void run() {
FavoriteImage selelctUrl = favoriteImageDao.getImageUrl(lovePreImg);
if (selelctUrl != null) {
runOnUiThread(new Runnable() {
@SuppressLint("UseCompatLoadingForDrawables")
@Override
public void run() {
fab_like.setForeground(getDrawable(R.drawable.love));
Toast.makeText(ViewActivity2.this, "Cancel successfully", Toast.LENGTH_SHORT).show();
}
});
new Thread(() -> favoriteImageDao.deleteUser(selelctUrl)).start();
}
}
}).start();
}
});
}
private void initViewPaper() {
new Thread(new Runnable() {
@Override
public void run() {
List<Fragment> list = new ArrayList<>();
List<FavoriteImage> alldatas;
alldatas = favoriteImageDao.getAllFavoriteImages();
for (int i = recop; i <= alldatas.size() - 1; i++) {
FavoriteImage favoriteImage1 = alldatas.get(i);
list.add(PreviewFragment.newInstance(favoriteImage1.imageUrl));
}
runOnUiThread(new Runnable() {
@Override
public void run() {
viewPagerPreview.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {
@NonNull
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
});
}
});
}
}).start();
viewPagerPreview.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
lovePreImg = favoriteImage.getImageUrl();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void loadPreview(String preURl) {
Glide.with(this)
.asBitmap()
.load(preURl)
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
WallpaperOptionsBottomSheet bottomSheet = new WallpaperOptionsBottomSheet();
bottomSheet.setWallpaperBitmap(resource);
bottomSheet.show(getSupportFragmentManager(), "wallpaper_options");
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
}
private void showTopOn(onActionListener listener) {
AdManager.showTopOn(this, new onActionListener() {
@Override
public void onAction() {
if (listener != null)
listener.onAction();
}
});
}
private void inint() {
Window window = getWindow();
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
findViewById(R.id.viewpager_preview).setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
}
}