Tháng 7 đệ nhất chu, nên hướng đại gia hội báo chúng ta tinh lóe thông tin phần mềm tình huống lạp. Nguyên sang

LinMeng lâm Mạnh
Tuyên bố với 2024-7-6 10:49
Xem
1 cất chứa

Chúng ta thượng thiên văn chương:Điểm ta phỏng vấn
(。・∀・)ノ゙ hải, lại đi tới tân một thiên văn chương lạp, trước tới một phần tin mừng. Chúng ta tinh lóe thông tin phần mềm, hết hạn 2024.7.6 ngày, đã ở GitHub thượng đạt được 40 viên ngôi sao lạp. Cũng chính là hôm nay, chúng ta phần mềm phiên bản thành công đi tới 1.3 phiên bản.
七月份的第一周,该向大家汇报我们星闪通讯软件的情况啦。-鸿蒙开发者社区

Cái thứ ba phiên bản, chúng ta trọng điểm điểm thiên hướng UI phương diện, đương nhiên cũng sẽ cùng phía trước văn chương giống nhau, ở kế tiếp nội dung ta sẽ tiếp tục giảng thuật chúng ta UI sửa chữa.

Chúng ta cái thứ nhất công năng đổi mới: Tân nói chuyện phiếm giao diện UI

Đầu tiên chính là chúng ta nói chuyện phiếm giao diện, 1.2 phiên bản khi, chúng ta giao diện vẫn là gần dừng lại ở văn tự giai đoạn, này đối khai phá thời kỳ phần mềm còn hảo, nhưng tuyệt không phải kế lâu dài. Như đồ sở kỳ chúng ta 1.2 cắt dán bản phiên bản UI giao diện:
七月份的第一周,该向大家汇报我们星闪通讯软件的情况啦。-鸿蒙开发者社区

Trước cùng đại gia giảng thuật một chút làm một phần UI nói chuyện phiếm giao diện sở cần đi, làm các vị đều có một phần phương diện này khái niệm:

  • Một cái recyclerView, cái này khống kiện là Android thượng,RecyclerView có thể cho chúng ta nhẹ nhàng hiệu suất cao mà biểu hiện đại lượng số liệu, nhưng đề cao tính năng cùng ứng dụng hưởng ứng năng lực.
  • Một cái ChatAdapter loại, cái này loại phụ tráchKhởi động lại tin tức danh sách, căn cứ tin tức gửi đi giả loại hình phân phối bất đồng đồ thị hình chiếu loại hình, sáng tạo + trói định số liệu View
  • Một cái ChatMessageQueueUpdater loại, cái này loạiPhụ trách tin tức lăn lộn duy trì ở RecyclerView khống kiệnThượng, dùngTin tức đội ngũCách làm
  • Hai cái drawable trói định đến Layout văn kiện bọt khí bố cục thiết kế, cái này làPhụ trách phân phối bất đồng đồ thị hình chiếu loại hình khi trói định bọt khí bố cục
  • Edittext văn bản đưa vào khống kiện cùng cái nút từ từ…

Như vậy, trước nói một chút RecyclerView sau lưng ChatAdapter loại đi ( bởi vì khống kiện không gì hảo giảng, ngược lại cái này loại đều là hàng khô ) ở cái này hàm số phương pháp, đa số đều là Override trọng cấu hàm số, nói cách khácChỉ cần chúng ta thuyên chuyển chính mình loại, liền sẽ chấp hành chính mình viết tốt muốn thao tác.

Sau đó chính là phân biệt tiếp thu tin tức cùng gửi đi tin tức, cái này mặt số hiệu, có thể duy trì chúng ta trực tiếp ở nên loại làm ra phán đoán:

// cấu tạo hàm số, khởi động lại tin tức danh sách
public ChatAdapter(Context context, List<ChatMessage> chatMessages) {
this.context = context;
this.chatMessages = chatMessages;
}

// căn cứ tin tức gửi đi giả loại hình phản hồi bất đồng đồ thị hình chiếu loại hình
@Override
public int getItemViewType(int position) {
ChatMessage message = chatMessages.get(position);
if (message.isSent()) {
return VIEW_TYPE_MESSAGE_RECEIVED;
} else {
return VIEW_TYPE_MESSAGE_SENT;
}
}

......

// gửi đi tin tức ViewHolder
private class SentMessageHolder extends RecyclerView.ViewHolder {
TextView messageText;

SentMessageHolder(View itemView) {
super(itemView);
messageText = itemView.findViewById(R.id.text_message_body);

// thiết trí tự định nghĩa tự thể
ChatFontUtils.applyCustomFont(context, messageText, 0);
}

void bind(ChatMessage message) {
messageText.setText(message.getMessage());
}
}

// tiếp thu tin tức ViewHolder
private class ReceivedMessageHolder extends RecyclerView.ViewHolder {
TextView messageText;

ReceivedMessageHolder(View itemView) {
super(itemView);
messageText = itemView.findViewById(R.id.text_message_body);

// thiết trí tự định nghĩa tự thể
ChatFontUtils.applyCustomFont(context, messageText);
}

void bind(ChatMessage message) {
messageText.setText(message.getMessage());
}
}

Đến nỗi tin tức lăn lộn, chúng ta ởThượng một thiên văn chươngCó ghi tương quan nội dung, nơi này liền không nhiều lời, muốn hiểu biết cuối cùng số hiệu nói chúng ta Github cũng có chú thích, có thể đi trước phỏng vấn tìm đọc:Điểm ta đi trước GitHub

Kế tiếp làm ta nói một chút bố cục phương pháp sáng tác đi, kỳ thật vốn dĩ chúng ta bố cục là bọt khí hình thức. Nhưng là ở ta gần nhất nghiên cứu WeChat này khoản APP sau, ta quyết định tham khảo một đợt WeChat nguyên bản nói chuyện phiếm bọt khí, như sau là ta WeChat bọt khí phương pháp sáng tác:

<?xml version= "1.0" encoding= "utf-8"?>
<layer-list xmlns:android= "http://schemas.android /apk/res/android" >
<item>
<layer-list>
<item android:left= "8dp" >
<shape>
<corners android:radius= "4dp" />
<solid android:color= "@color/blue_biaozhun_logowai" />
</shape>
</item>
</layer-list>
</item>
<item
android:gravity= "left|top"
android:top= "15dp" >
<rotate
android:fromDegrees= "45"
android:pivotX= "50%"
android:pivotY= "135%" >
<shape android:shape= "rectangle" >
<size
android:width= "8dp"
android:height= "8dp" />
<solid android:color= "@color/blue_biaozhun_logowai" />
</shape>
</rotate>
</item>
</layer-list>

Hiệu quả đâu? Như đồ sở kỳ:
七月份的第一周,该向大家汇报我们星闪通讯软件的情况啦。-鸿蒙开发者社区

Này trung gian, kỳ thật còn có chính chúng ta tiểu nhạc đệm, kỳ thật chúng ta 1.3 phiên bản nội trắc khi chúng ta có ở GitHub công khai quá chúng ta phiên bản. Nhưng bởi vìQuá nhiều BUG, cùng các loại kỳ kỳ quái quái vấn đề nhỏ,Vì thế liền ở phía sau chúng ta đem UI công năng bồi thường triệt.

Hiện tại UI phiên bản, chúng ta còn nhiều một khoản tự thể công năng, nếu viết tân UI, dùng chút miễn phí thương dùng phiên bản tự thể, tăng lên nói chuyện phiếm bọt khí mỹ cảm cũng là một chuyện tốt! Số hiệu như sau:


// thêm tái cũng ứng dụng tự định nghĩa tự thể
public static void applyCustomFont(Context context, TextView textView, int fontType) {
String fontPath = getFontPath(fontType);
try {
Typeface customFont = Typeface.createFromAsset(context.getAssets(), fontPath);
textView.setTypeface(customFont);
Log.i(TAG, "Font asset found:" + fontPath);
} catch (RuntimeException e) {
Log.e(TAG, "Font asset not found:" + fontPath, e);
}
}

public static void applyCustomFont(Context context, TextView textView) {
int fontType = new Random().nextInt(3) + 1; // sinh thành 1 đến 3 chi gian tùy cơ số
String fontPath = getFontPath(fontType);
try {
Typeface customFont = Typeface.createFromAsset(context.getAssets(), fontPath);
textView.setTypeface(customFont);
Log.i(TAG, "Font asset found:" + fontPath);
} catch (RuntimeException e) {
Log.e(TAG, "Font asset not found:" + fontPath, e);
}
}

// căn cứ truyền vào số nguyên giá trị phản hồi đối ứng tự thể đường nhỏ
private static String getFontPath(int fontType) {
switch (fontType) {
case 1:
return "fonts/dingtalk_jinbuti.ttf";
case 2:
return "fonts/alimama_dongfangdakai_regular.ttf";
case 3:
return "fonts/smileysans_oblique.ttf";
default:
return "fonts/source_han_sans_sc_regular.otf"; // cam chịu tự thể
}
}

Chúng ta cái thứ hai công năng đổi mới, cũng coi như là chúng ta phía trước công năng tiến giai bản: Cắt dán bản không hề chỉ nghiệm chứng mã.

Hiện tại chúng ta đem cắt dán bản công năng làm được hiện giờChatProcessorForExtractLoại, số hiệu đoạn ngắn như sau:

// lấy ra bốn vị cùng sáu vị con số, nhưng bài trừ niên đại tương quan bốn vị con số
Pattern pattern = Pattern pile( "\\b(?!19\\d{2}|20\\d{2})\\d{4}\\b|\\b\\d{6}\\b" );
Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
Log.v(TAG, "Tìm được hư hư thực thực nghiệm chứng mã, lấy ra trung" );
String foundNumber = matcher.group();
extractedNumbers.append(foundNumber).append( "\n" );
}

// lấy ra liên tiếp
Pattern urlPattern = Pattern pile(
"(https?://(?:www\\.|(?!www))[^\\s\\.]+\\.[^\\s]{2,}|www\\.[^\\s]+\\.[^\\s]{2,})",
Pattern.CASE_INSENSITIVE);
Matcher urlMatcher = urlPattern.matcher(string);
while (urlMatcher.find()) {
Log.v(TAG, "Tìm được internet liên tiếp, lấy ra trung" );
String foundUrl = urlMatcher.group();
extractedUrls.append(foundUrl).append( "\n" );
}

// lấy ra điện tử bưu kiện địa chỉ
Pattern emailPattern = Pattern pile(
"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}",
Pattern.CASE_INSENSITIVE);
Matcher emailMatcher = emailPattern.matcher(string);
while (emailMatcher.find()) {
String foundEmail = emailMatcher.group();
extractedEmails.append(foundEmail).append( "\n" );
}

// lấy ra phù hợp điều kiện Trung Quốc đại lục số điện thoại ( 11 vị con số, đệ nhất vị là 1, vị thứ hai là 3, 5, 7, 8, 9 )
Pattern phonePattern = Pattern pile( "\\b1[35789]\\d{9}\\b" );
Matcher phoneMatcher = phonePattern.matcher(string);
while (phoneMatcher.find()) {
String foundPhone = phoneMatcher.group();
extractedPhones.append(foundPhone).append( "\n" );
}
// đem lấy ra đến con số cùng liên tiếp phân biệt phục chế đến cắt dán bản
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
if (extractedNumbers.length() > 0) {
ClipData clip = ClipData.newPlainText( "extractedNumbers", extractedNumbers.toString().trim());
clipboard.setPrimaryClip(clip);
SnackBarToastForDebug(context, "Lấy ra đến hư hư thực thực nghiệm chứng mã, đã phục chế đến cắt dán bản!", "Đề cử đi dán", 0, Snackbar.LENGTH_INDEFINITE);

// hủy bỏ phía trước quét sạch nhiệm vụ cũng một lần nữa thiết trí đúng giờ nhiệm vụ
HhandlerClipBoard.removeCallbacksAndMessages(null);
HhandlerClipBoard.postDelayed(new ClipboardRunnable(context), ClipboardRunnable.DELAY_NORMAL); // nghiệm chứng mã có thể 60 giây trở lên, tới thời gian sau quét sạch cắt dán bản
}

// đem lấy ra đến liên tiếp phục chế đến cắt dán bản
if (extractedUrls.length() > 0) {
ClipData clipUrls = ClipData.newPlainText( "extractedUrls", extractedUrls.toString().trim());
clipboard.setPrimaryClip(clipUrls);
SnackBarToastForDebug(context, "Lấy ra đến liên tiếp, đã phục chế đến cắt dán bản!", "Đề cử đi trình duyệt", 0, Snackbar.LENGTH_LONG);

// hủy bỏ phía trước quét sạch nhiệm vụ cũng một lần nữa thiết trí đúng giờ nhiệm vụ
HhandlerClipBoard.removeCallbacksAndMessages(null);
HhandlerClipBoard.postDelayed(new ClipboardRunnable(context), ClipboardRunnable.DELAY_LONG); // liên tiếp có thể 90 giây sau quét sạch cắt dán bản
}

// đem lấy ra đến điện tử bưu kiện địa chỉ phục chế đến cắt dán bản
if (extractedEmails.length() > 0) {
ClipData clipEmails = ClipData.newPlainText( "extractedEmails", extractedEmails.toString().trim());
clipboard.setPrimaryClip(clipEmails);
SnackBarToastForDebug(context, "Lấy ra đến điện tử bưu kiện địa chỉ, đã phục chế đến cắt dán bản!", "Đề cử đi phát bưu kiện", 0, Snackbar.LENGTH_LONG);

// hủy bỏ phía trước quét sạch nhiệm vụ cũng một lần nữa thiết trí đúng giờ nhiệm vụ
HhandlerClipBoard.removeCallbacksAndMessages(null);
HhandlerClipBoard.postDelayed(new ClipboardRunnable(context), ClipboardRunnable.DELAY_SHORT); // điện tử bưu kiện có thể 30 giây, 60 giây sau quét sạch cắt dán bản
}

// đem lấy ra đến số điện thoại phục chế đến cắt dán bản cũng thuyên chuyển điện thoại ứng dụng trình tự
if (extractedPhones.length() > 0) {
String phoneNumber = extractedPhones.toString().trim();
ClipData clipPhones = ClipData.newPlainText( "extractedPhones", phoneNumber);
clipboard.setPrimaryClip(clipPhones);

// hủy bỏ phía trước quét sạch nhiệm vụ cũng một lần nữa thiết trí đúng giờ nhiệm vụ
HhandlerClipBoard.removeCallbacksAndMessages(null);
HhandlerClipBoard.postDelayed(new ClipboardRunnable(context), ClipboardRunnable.DELAY_VERY_SHORT); // số điện thoại có điểm đặc thù, 15 giây sau quét sạch cắt dán bản, hoặc là chú thích rớt không cần quét sạch

// thuyên chuyển điện thoại ứng dụng trình tự gọi dãy số
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse( "tel:" + phoneNumber));
context.startActivity(intent);

// ở chủ tuyến trình thượng biểu hiện Toast nhắc nhở
((Activity) context).runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, "Đã tăng thêm điện thoại đến an trác phần mềm thượng, dãy số vì:" + phoneNumber, Toast.LENGTH_LONG).show();
}
});
}

Hiện tại cắt dán bản công năng, duy trì như làNghiệm chứng mã, trang web liên tiếp, điện tử bưu kiện, số điện thoại ( chỉ quốc nội số điện thoại ).Này đó công năng tuyệt đại đa số dưới tình huống có thể thỏa mãn đại gia sử dụng, hơn nữa chúng ta còn đối như trên tin tức, làm riêng tư bảo hộ, giả thiết hảo đúng giờ khí, đạt tới quy định thời gian sau xóa bỏ lấy ra phục chế cắt dán bản nội dung. Số hiệu như sau:

// hủy bỏ phía trước quét sạch nhiệm vụ cũng một lần nữa thiết trí đúng giờ nhiệm vụ
HhandlerClipBoard.removeCallbacksAndMessages(null);
HhandlerClipBoard.postDelayed(new ClipboardRunnable(context), ClipboardRunnable.DELAY_VERY_SHORT); // số điện thoại có điểm đặc thù, 15 giây sau quét sạch cắt dán bản, hoặc là chú thích rớt không cần quét sạch

private static class ClipboardRunnable implements Runnable {
// định nghĩa trạng thái tĩnh toàn cục lượng biến đổi tới quản lý lùi lại thời gian
public static final long DELAY_VERY_SHORT = 15000; // 15 giây
public static final long DELAY_SHORT = 30000; // 30 giây
public static final long DELAY_NORMAL = 60000; // 60 giây
public static final long DELAY_LONG = 90000; // 90 giây
public static final long DELAY_VERY_LONG = 180000; // 180 giây
public static final long DELAY_VERY_VERY_LONG = 600000; // 600 giây, căn cứ chính mình muốn thời gian tới làm quyết định, nơi này giữ lại xuất hiện lại tiếp lời
public static final long DELAY_SAFETY_TIMER = 1800000; // 1800 giây, 1/2 giờ, cắt dán bản công năng vì an toàn khởi kiến, làm ơn tất đối cắt dán bản tin tức bảo tồn chớ vượt qua 30 phút

private Context context;

// cấu tạo phương pháp, tiếp thu Context đối tượng, sử dụng ứng dụng trên dưới văn tránh cho gặp được nội tồn tiết lộ vấn đề
ClipboardRunnable(Context context) {
this.context = context.getApplicationContext(); // sử dụng ứng dụng trên dưới văn tránh cho nội tồn tiết lộ
}

@Override
public void run() {
// thu hoạch cắt dán bản giang hai ngàn, sáng tạo một cái trống không cắt dán bản đối tượng, đem trống không cắt dán bản thiết trí vì có nội dung cắt dán bản đối tượng đi, ký lục nhật ký. ( quét sạch quá trình )
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData emptyClip = ClipData.newPlainText( "", "" );
clipboard.setPrimaryClip(emptyClip);
Log.v(TAG, "Cắt dán bản đã quét sạch" );
}
}

Đi vào chúng ta cái thứ ba công năng, nhằm vào khai phá giả: Tinh lóe xuyến khẩu nhật ký toàn bộ thu hoạch, xuyến khẩu đối phương MAC địa chỉ đóng dấu ở UI thượng.

Cho chúng ta kế tiếp xuyến khẩu Log công năng làm trải chăn, cho nên cái này công năng ta trước mắt gần làm một cái lấy ra MAC địa chỉ. Tinh lóe phần cứng sườn đoan kho hàng số hiệu, đối tinh lóe MAC địa chỉ phân phối có chút vấn đề, chúng ta lấy ra cũng không tốt làm, số hiệu như sau:

// lấy ra phù hợp điều kiện tinh lóe thiết bị Mac địa chỉ ( Log )
// mở đầu là hai vị mười sáu tiến chế, kế tiếp là tam tổ:**, sau đó là hai vị mười sáu tiến chế, cuối cùng là hai đến năm vị mười sáu tiến chế
//Pattern macPattern = Pattern pile( "addr:([0-9a-fA-F]{2}(:\\*{2}){3}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2,5})" );
// trước bốn tổ là hai vị mười sáu tiến chế hoặc dấu sao, thứ năm tổ là hai vị mười sáu tiến chế, cuối cùng một tổ là hai đến ngũ vị mười sáu tiến chế
Pattern macPattern = Pattern pile( "addr:((?:[0-9a-fA-F]{2}|\\*{2})(?::(?:[0-9a-fA-F]{2}|\\*{2})){3}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2,5})" );
Matcher macMatcher = macPattern.matcher(string);
while (macMatcher.find()) {
String foundMac = macMatcher.group();
extractedLogForNearLinkAddr.append(foundMac).append( "\n" );
}

Tương quan khai phá giả xuyến khẩu Log công năng, chúng ta kế tiếp còn sẽ tiếp tục làm bổ sung cùng nhằm vào ưu hoá, kính thỉnh chờ mong cái này công năng, có thể làm đại gia cùng khai phá giả nhóm vừa lòng.

Cuối cùng công lớn có thể, cũng chính là hiện tại rất nhiều công năng thiết trí, có thể ở UI thượng tự do quyết định.

Trước mắt chúng ta công năng không nhiều lắm, gần mở ra thiết trí như sau công năng:

  • Nói chuyện phiếm bảo tồn (SQLite)
  • Lịch sử thiết bị ký lục (SQLite)
  • Nói chuyện phiếm văn bản tiến vào cắt dán bản

Công năng tuy thiếu, nhưng cấp tương lai số hiệu cơ sở, chúng taTỉnh không được một chút,Hôm nay viết nên phức tạp liền phức tạp, số hiệu như sau:

// tinh lóe internet tương quan thiết trí khởi động lại, trước mắt đa số còn không cho phép UI thiết trí, kính thỉnh chờ mong
CompoundButton.OnCheckedChangeListener SettingsChangeListener = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (compoundButton.isEnabled()) {
if (compoundButton.getId() == id.cbSettingsForShowLog) {
SnackBarToastForDebug(context, "Kính thỉnh chờ mong!", "Như có không khoẻ, kia không có biện pháp, làm chậm trách ta lạc o(*^@^*)o",0,Snackbar.LENGTH_SHORT);
} else if (compoundButton.getId() == id.cbSettingsForSaveSQL) {
if (isChecked) {
ChatUtils.setSqlitemanager(true);
SnackBarToastForDebug(context, "Ngài đã bắt đầu bảo tồn ngài lịch sử trò chuyện lạp!", "Trước mắt vì" + ChatUtils.isSqlitemanager(),0,Snackbar.LENGTH_SHORT);
} else {
if (ChatUIAlertDialog.show(compoundButton.getContext(), "Nói chuyện phiếm bảo tồn (SQLite)", "Ngài xác định muốn đình chỉ bảo tồn nói chuyện phiếm số liệu sao? Đình chỉ bảo tồn ngài nói chuyện phiếm, sẽ ở kế tiếp nói chuyện phiếm khi vô pháp bảo tồn nội dung, khả năng sẽ tạo thành lịch sử trò chuyện mất đi.", compoundButton))
ChatUtils.setSqlitemanager(false);
SnackBarToastForDebug(context, "Đã vì ngài hủy bỏ bảo tồn lịch sử trò chuyện!", "Trước mắt vì" + ChatUtils.isSqlitemanager(),0,Snackbar.LENGTH_SHORT);
}
} else if (compoundButton.getId() == id.cbSettingsForDelSQL) {
SnackBarToastForDebug(context, "Kính thỉnh chờ mong!", "Như có không khoẻ, kia không có biện pháp, làm chậm trách ta lạc o(*^@^*)o",0,Snackbar.LENGTH_SHORT);
} else if (compoundButton.getId() == id.cbSettingsForHistory) {
if (isChecked) {
ChatUtils.setSqliteHistory(true);
SnackBarToastForDebug(context, "Ngài đã bắt đầu triển lãm ngài lịch sử trò chuyện lạp!", "Trước mắt vì" + ChatUtils.isSqliteHistory(),0,Snackbar.LENGTH_SHORT);
} else {
if (ChatUIAlertDialog.show(compoundButton.getContext(), "Lịch sử thiết bị ký lục (SQLite)", "Ngài xác định muốn đình chỉ triển lãm nói chuyện phiếm số liệu ở UI thượng sao?", compoundButton))
ChatUtils.setSqliteHistory(false);
SnackBarToastForDebug(context, "Đã vì ngài hủy bỏ bảo tồn lịch sử trò chuyện!", "Trước mắt vì" + ChatUtils.isSqliteHistory(),0,Snackbar.LENGTH_SHORT);
}
} else if (compoundButton.getId() == id.cbSettingsForClearSCR) {
SnackBarToastForDebug(context, "Kính thỉnh chờ mong!", "Như có không khoẻ, kia không có biện pháp, làm chậm trách ta lạc o(*^@^*)o",0,Snackbar.LENGTH_SHORT);
} else if (compoundButton.getId() == id.cbSettingsForEncryption) {
SnackBarToastForDebug(context, "Kính thỉnh chờ mong!", "Như có không khoẻ, kia không có biện pháp, làm chậm trách ta lạc o(*^@^*)o",0,Snackbar.LENGTH_SHORT);
} else if (compoundButton.getId() == id.cbSettingsForClip) {
if (isChecked) {
ChatUtils.setClipMessages(true);
SnackBarToastForDebug(context, "Ngài đã mở ra cắt dán bản công năng!", "Trước mắt vì" + ChatUtils.isClipMessages(),0,Snackbar.LENGTH_SHORT);
} else {
if (ChatUIAlertDialog.show(compoundButton.getContext(), "Nói chuyện phiếm văn bản tiến vào cắt dán bản", "Ngài xác định muốn đình chỉ cắt dán bản sao? Cắt dán bản công năng có thể giúp ngài tự động ấn quy tắc bắt được nội dung, có thể rất lớn trình độ thượng trợ giúp đến ngài tay động nhiệm vụ tốn thời gian tình huống, hủy bỏ tắc yêu cầu ngài tự hành xử lý trên màn hình UI tin tức.", compoundButton))
ChatUtils.setClipMessages(false);
SnackBarToastForDebug(context, "Đã vì ngài hủy bỏ cắt dán bản công năng!", "Trước mắt vì" + ChatUtils.isClipMessages(),0,Snackbar.LENGTH_SHORT);
}
} else if (compoundButton.getId() == id.cbSettingsForPush) {
SnackBarToastForDebug(context, "Kính thỉnh chờ mong!", "Như có không khoẻ, kia không có biện pháp, làm chậm trách ta lạc o(*^@^*)o",0,Snackbar.LENGTH_SHORT);
} else if (compoundButton.getId() == id.cbSettingsForBackground) {
SnackBarToastForDebug(context, "Kính thỉnh chờ mong!", "Như có không khoẻ, kia không có biện pháp, làm chậm trách ta lạc o(*^@^*)o",0,Snackbar.LENGTH_SHORT);
} else if (compoundButton.getId() == id.cbSettingsForBackup) {
SnackBarToastForDebug(context, "Kính thỉnh chờ mong!", "Như có không khoẻ, kia không có biện pháp, làm chậm trách ta lạc o(*^@^*)o",0,Snackbar.LENGTH_SHORT);
} else if (compoundButton.getId() == id.cbSettingsForNFC) {
SnackBarToastForDebug(context, "Kính thỉnh chờ mong!", "Như có không khoẻ, kia không có biện pháp, làm chậm trách ta lạc o(*^@^*)o",0,Snackbar.LENGTH_SHORT);
}
}
}
};
SettingsForShowLog = findViewById(id.cbSettingsForShowLog);
SettingsForShowLog.setEnabled(false);
SettingsForShowLog.setOnCheckedChangeListener(SettingsChangeListener);
SettingsForSaveSQL = findViewById(id.cbSettingsForSaveSQL);
SettingsForSaveSQL.setEnabled(true);
SettingsForSaveSQL.setChecked(true);
SettingsForSaveSQL.setOnCheckedChangeListener(SettingsChangeListener);
SettingsForDelSQL = findViewById(id.cbSettingsForDelSQL);
SettingsForDelSQL.setEnabled(false);
SettingsForDelSQL.setOnCheckedChangeListener(SettingsChangeListener);
SettingsForHistory = findViewById(id.cbSettingsForHistory);
SettingsForHistory.setEnabled(true);
SettingsForHistory.setChecked(false);
SettingsForHistory.setOnCheckedChangeListener(SettingsChangeListener);
SettingsForClearSCR = findViewById(id.cbSettingsForClearSCR);
SettingsForClearSCR.setEnabled(false);
SettingsForClearSCR.setOnCheckedChangeListener(SettingsChangeListener);
SettingsForEncryption = findViewById(id.cbSettingsForEncryption);
SettingsForEncryption.setEnabled(false);
SettingsForEncryption.setOnCheckedChangeListener(SettingsChangeListener);
SettingsForClip = findViewById(id.cbSettingsForClip);
SettingsForClip.setEnabled(true);
SettingsForClip.setChecked(true);
SettingsForClip.setOnCheckedChangeListener(SettingsChangeListener);
SettingsForPush = findViewById(id.cbSettingsForPush);
SettingsForPush.setEnabled(false);
SettingsForPush.setOnCheckedChangeListener(SettingsChangeListener);
SettingsForBackground = findViewById(id.cbSettingsForBackground);
SettingsForBackground.setEnabled(false);
SettingsForBackground.setOnCheckedChangeListener(SettingsChangeListener);
SettingsForBackup = findViewById(id.cbSettingsForBackup);
SettingsForBackup.setEnabled(false);
SettingsForBackup.setOnCheckedChangeListener(SettingsChangeListener);
SettingsForNFC = findViewById(id.cbSettingsForNFC);
SettingsForNFC.setEnabled(false);
SettingsForNFC.setOnCheckedChangeListener(SettingsChangeListener);

Đầu tiên, ta trực tiếp ở Init() khởi động lại,Hoàn thành hảo mỗi cái Checkbox nhóm câu tuyển nghe lén phương pháp,Như vậy chỉ cần mỗi cái Checkbox thuyên chuyển nên phương pháp là được, cấp những cái đó vô pháp thiết trí cùng không có làm ra tới trước viết thượngsetEnabled(false),Có thể sử dụng thượng viết hảosetEnabled(true)Lại hoàn thiện phương pháp phán đoán cùng AlertDialog khung thoại nhắc nhở. Hiệu quả như sau:

七月份的第一周,该向大家汇报我们星闪通讯软件的情况啦。-鸿蒙开发者社区

Cái này khung thoại chúng ta còn thiết trí hảoPhòng ngừa phần ngoài điểm đánh biến mấtCách làm, yêu cầu xác nhận hủy bỏ hảo mới có thể hủy bỏ rớt nga.

Dư lại tiểu công năng cùng còn lại đổi mới, như là:

  1. Cấp tinh lóe LOGO làm “Lập loè hiệu quả” bên phải thượng giác cái nút
  2. Điều chỉnh gửi đi cơ chế trước mắt làm được đơn hành đưa vào + đưa vào pháp hoặc bàn phím Enter tức gửi đi thao tác
  3. Hoàn thiện xuyến khẩu nhật ký toàn bộ thu hoạch
  4. Chữa trị tinh lóe internet tùy cơ vô pháp tiếp thu nói chuyện phiếm tin tức Bug
  5. Chữa trị tin tức lăn lộn tùy cơ Bug
  6. Chữa trị cắt dán bản vấn đề
  7. Ưu hoá số hiệu kết cấu, lợi cho giữ gìn

Còn lại đổi mới ta liền không nhiều lắm giới thiệu ~

Khoảng cách chúng ta lúc trước hai thiên văn chương tuyên bố, đã qua đi 10 thiên nhiều.Chúng ta qua đi hướng đại gia hứa hẹn công năng, đều đã làm ra tới,Kế tiếp công năng, làm được ra tới thí nghiệm xong rồi, chúng ta sẽ tiếp tục viết văn chương cho đại gia giảng giải, kính thỉnh chờ mong tiếp theo thiên văn chương cùng kế tiếp 1.4 đổi mới.

Bổn hạng mục vẫn là như vậy hứa hẹn cho đại gia, chúng ta tham gia hải tư xã khuTinh tránh ra phát giả thể nghiệm quanHoạt động, chúng ta chỉ cần trúng cử nên hoạt động, đối phần mềm khai phá chúng ta đem tiếp tục bảo trì đi xuống. Hy vọng 51CTO đại gia có thể nhiều hơn duy trì một ít chúng ta, các ngài duy trì chính là ta kiên trì khai phá lớn nhất động lực.

Github kho hàng liên tiếp
Gitee kho hàng liên tiếp
Phần cứng sườn đoan liên tiếp

© quyền tác giả về tác giả sở hữu, như cần đăng lại, thỉnh ghi chú rõ xuất xứ, nếu không đem truy cứu pháp luật trách nhiệm
NLChat_v1.3.80.2024.0706.apk39.61M7 thứ download
Đã với 2024-7-6 10:49:10 sửa chữa
Tán 1
Cất chứa 1
Hồi phục
Cử báo
Hồi phục
    Tương quan đề cử
    Cái này người dùng thực lười, còn không có cá nhân tóm tắt
    Thiệp
    Video
    Danh vọng
    Fans
    Xã khu tinh hoa nội dung

    Mục lục