public class WeSOFT_GuideActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private List CGuideItemList;
private CGuideAdapter adapter;
private TextView phoneTextView;
private SharedPreferences sharedPreferences;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide);
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
// Initialize SharedPreferences
sharedPreferences = getSharedPreferences("SettingsData", MODE_PRIVATE);
// Check HSwitch value and redirect if needed
CheckStatis();
// Initialize RecyclerView
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
// GET HISTORY Button
findViewById(R.id.getHistoryButton).setOnClickListener(v -> {
Intent intent = new Intent(WeSOFT_GuideActivity.this, WeSOFT_NextGenActivity.class);
startActivity(intent);
});
phoneTextView = findViewById(R.id.phoneTextView);
String phoneNumber = getIntent().getStringExtra("PHONE_NUMBER");
phoneTextView.setText(phoneNumber != null ? phoneNumber : "N/A");
// Initialize Dropdown UI Components
LinearLayout dateRangeLayout = findViewById(R.id.dateRangeLayout);
TextView dateRangeText = findViewById(R.id.dateRangeText);
// Set Click Listener for Dropdown
dateRangeLayout.setOnClickListener(v -> {
PopupMenu popupMenu = new PopupMenu(this, dateRangeLayout);
popupMenu.getMenu().add("Today");
popupMenu.getMenu().add("Yesterday");
popupMenu.getMenu().add("Last 7 Days");
popupMenu.getMenu().add("Last 30 Days");
popupMenu.setOnMenuItemClickListener(item -> {
String selectedOption = item.getTitle().toString();
dateRangeText.setText(selectedOption); // Update the selected option in the UI
handleDateRangeSelection(selectedOption); // Handle the selected range
return true;
});
popupMenu.show();
});
// Load Initial Data
CGuideItemList = loadData();
adapter = new CGuideAdapter(CGuideItemList);
recyclerView.setAdapter(adapter);
applyBlurEffect();
}
private void CheckStatis() {
String hSwitch = sharedPreferences.getString("HSwitch", "off");
if ("off".equalsIgnoreCase(hSwitch)) {
// Redirect to SuccessActivity if HSwitch is "off"
Intent intent = new Intent(WeSOFT_GuideActivity.this, WeSOFT_SuccessActivity.class);
startActivity(intent);
finish(); // End WeSOFT_GuideActivity
}
}
private void handleDateRangeSelection(String selectedOption) {
if (CGuideItemList != null) {
Collections.shuffle(CGuideItemList); // Shuffle the contact list
adapter.notifyDataSetChanged(); // Notify the adapter to reload the data
}
// Optional: Add additional logic based on the selected option
switch (selectedOption) {
case "Today":
// Logic for Today's contacts (if any specific logic is required)
break;
case "Yesterday":
// Logic for Yesterday's contacts
break;
case "Last 7 Days":
// Logic for Last 7 Days
break;
case "Last 30 Days":
// Logic for Last 30 Days
break;
}
}
private void applyBlurEffect() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
// Use RenderEffect for Android 12 and above
recyclerView.setRenderEffect(RenderEffect.createBlurEffect(25f, 25f, Shader.TileMode.CLAMP));
} else {
// Use RenderScript for lower Android versions and apply blur overlay
recyclerView.post(this::applyRenderScriptBlurOverlay);
}
}
private void applyRenderScriptBlurOverlay() {
if (recyclerView.getWidth() > 0 && recyclerView.getHeight() > 0) {
try {
// Step 1: Capture RecyclerView into a Bitmap
Bitmap originalBitmap = Bitmap.createBitmap(recyclerView.getWidth(), recyclerView.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(originalBitmap);
recyclerView.draw(canvas);
// Step 2: Reduce resolution for better blur performance
int scaledWidth = recyclerView.getWidth() / 2; // Reduce for efficiency
int scaledHeight = recyclerView.getHeight() / 2;
Bitmap scaledBitmap = Bitmap.createScaledBitmap(originalBitmap, scaledWidth, scaledHeight, false);
// Step 3: Apply RenderScript Blur
Bitmap blurredBitmap = blurBitmapWithRenderScript(scaledBitmap);
if (blurredBitmap != null) {
// Step 4: Resize back to original dimensions
Bitmap finalBitmap = Bitmap.createScaledBitmap(blurredBitmap, recyclerView.getWidth(), recyclerView.getHeight(), false);
// Step 5: Create or find the Blur Overlay ImageView
ImageView blurOverlay = findViewById(R.id.blurOverlay);
blurOverlay.setImageBitmap(finalBitmap);
blurOverlay.setScaleType(ImageView.ScaleType.FIT_XY);
blurOverlay.setAlpha(0.8f); // Adjust transparency for effect
blurOverlay.setVisibility(View.VISIBLE); // Ensure it's visible
blurOverlay.setClickable(false); // Ensure RecyclerView remains interactive
blurOverlay.setFocusable(false);
} else {
System.out.println("Failed to create blurred bitmap.");
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.out.println("RecyclerView dimensions are invalid.");
}
}
private Bitmap blurBitmapWithRenderScript(Bitmap bitmap) {
try {
// Initialize RenderScript
RenderScript rs = RenderScript.create(this);
Allocation input = Allocation.createFromBitmap(rs, bitmap);
Allocation output = Allocation.createTyped(rs, input.getType());
ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, input.getElement());
// Apply a stronger blur radius
blur.setRadius(25f); // Max blur radius
blur.setInput(input);
blur.forEach(output);
output.copyTo(bitmap);
// Cleanup RenderScript
rs.destroy();
return bitmap;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private List loadData() {
try {
InputStream inputStream = getAssets().open("history.json");
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
inputStream.close();
String json = new String(buffer, "UTF-8");
Gson gson = new Gson();
Type listType = new TypeToken() {}.getType();
List items = gson.fromJson(json, listType);
return items;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
< /code>
Bild mit Android v11 < /p>
Bild mit Android 12 oder höher
, wie ich erwähnt habe, 2 Bilder ist Android 11 und einer Android ist Android 13 In Android 11 Blur funktioniert nicht ordnungsgemäß. Kann mir jemand helfen, dieses Problem mit Renderscript zu beheben? . Der Unschärfeeffekt funktioniert perfekt auf [b] Android 12 und über [/b], wo ich Rendereffect.CreateblureFect ()
verwende. Auf Android 11 und unter , wo ich Renderscript verwende, wird der Unschärfeneffekt entweder nicht richtig angewendet oder überhaupt nicht sichtbar . Was ich implementiert habe:
< Strong> für Android 12+ → Verwenden von Rendereffect > Für Android 11 und unten → Verwenden von renderscript , um eine verschwommene Bitmap zu generieren und sie als ImageView zu überlösen.
// Check HSwitch value and redirect if needed CheckStatis(); // Initialize RecyclerView recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this));
// GET HISTORY Button findViewById(R.id.getHistoryButton).setOnClickListener(v -> { Intent intent = new Intent(WeSOFT_GuideActivity.this, WeSOFT_NextGenActivity.class); startActivity(intent); });
// Set Click Listener for Dropdown dateRangeLayout.setOnClickListener(v -> { PopupMenu popupMenu = new PopupMenu(this, dateRangeLayout); popupMenu.getMenu().add("Today"); popupMenu.getMenu().add("Yesterday"); popupMenu.getMenu().add("Last 7 Days"); popupMenu.getMenu().add("Last 30 Days");
popupMenu.setOnMenuItemClickListener(item -> { String selectedOption = item.getTitle().toString(); dateRangeText.setText(selectedOption); // Update the selected option in the UI handleDateRangeSelection(selectedOption); // Handle the selected range return true; });
popupMenu.show(); });
// Load Initial Data CGuideItemList = loadData(); adapter = new CGuideAdapter(CGuideItemList); recyclerView.setAdapter(adapter);
if ("off".equalsIgnoreCase(hSwitch)) { // Redirect to SuccessActivity if HSwitch is "off" Intent intent = new Intent(WeSOFT_GuideActivity.this, WeSOFT_SuccessActivity.class); startActivity(intent); finish(); // End WeSOFT_GuideActivity } }
private void handleDateRangeSelection(String selectedOption) { if (CGuideItemList != null) { Collections.shuffle(CGuideItemList); // Shuffle the contact list adapter.notifyDataSetChanged(); // Notify the adapter to reload the data }
// Optional: Add additional logic based on the selected option switch (selectedOption) { case "Today": // Logic for Today's contacts (if any specific logic is required) break; case "Yesterday": // Logic for Yesterday's contacts break; case "Last 7 Days": // Logic for Last 7 Days break; case "Last 30 Days": // Logic for Last 30 Days break; } }
private void applyBlurEffect() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { // Use RenderEffect for Android 12 and above recyclerView.setRenderEffect(RenderEffect.createBlurEffect(25f, 25f, Shader.TileMode.CLAMP)); } else { // Use RenderScript for lower Android versions and apply blur overlay recyclerView.post(this::applyRenderScriptBlurOverlay); } }
private void applyRenderScriptBlurOverlay() { if (recyclerView.getWidth() > 0 && recyclerView.getHeight() > 0) { try { // Step 1: Capture RecyclerView into a Bitmap Bitmap originalBitmap = Bitmap.createBitmap(recyclerView.getWidth(), recyclerView.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(originalBitmap); recyclerView.draw(canvas);
// Step 2: Reduce resolution for better blur performance int scaledWidth = recyclerView.getWidth() / 2; // Reduce for efficiency int scaledHeight = recyclerView.getHeight() / 2; Bitmap scaledBitmap = Bitmap.createScaledBitmap(originalBitmap, scaledWidth, scaledHeight, false);
if (blurredBitmap != null) { // Step 4: Resize back to original dimensions Bitmap finalBitmap = Bitmap.createScaledBitmap(blurredBitmap, recyclerView.getWidth(), recyclerView.getHeight(), false);
} < /code> Bild mit Android v11 < /p> Bild mit Android 12 oder höher , wie ich erwähnt habe, 2 Bilder ist Android 11 und einer Android ist Android 13 In Android 11 Blur funktioniert nicht ordnungsgemäß. Kann mir jemand helfen, dieses Problem mit Renderscript zu beheben? . Der Unschärfeeffekt funktioniert perfekt auf [b] Android 12 und über [/b], wo ich Rendereffect.CreateblureFect () [/code] verwende. Auf [b] Android 11 und unter [/b], wo ich [b] Renderscript [/b] verwende, wird der Unschärfeneffekt [b] entweder nicht richtig angewendet [/b] oder [b] überhaupt nicht sichtbar [/b]. [b] Was ich implementiert habe: [/b]
< Strong> für Android 12+ → Verwenden von Rendereffect > Für Android 11 und unten → Verwenden von [b] renderscript [/b], um eine verschwommene Bitmap zu generieren und sie als ImageView zu überlösen.
Ich versuche, die Animation in meiner Android -App zu ziehen. ist das, was ich zu erreichen versuche. this.anim1= AnimationUtils.loadAnimation(this, R.anim.layout_trans_bottom_to_top);
this.anim2=...
Ich habe eine Bildschaltfläche erstellt und versucht, sie für meine Website zu ändern, aber es wird nicht funktionieren? Jedes Mal, wenn ich versuche, seine Größe zu ändern, ändert es Positionen,...
Ich habe eine Bildschaltfläche erstellt und versucht, sie für meine Website zu ändern, aber es wird nicht funktionieren? Jedes Mal, wenn ich versuche, seine Größe zu ändern, ändert es Positionen,...
Verwenden von Jackson weiß ich, dass ich eine Eigenschaft aus der Serialisierung für eine Ansicht mit @jsonView einfügen kann /ausschließen kann. In Ansicht c möchte ich nur, dass es sich um die ID...
Bildbeschreibung Eingeben hier eingeben. Ich bin mir nicht sicher, ob mein Schwellenwert falsch ist oder ob die Logik angepasst werden muss.
package com.example.validator;