添加emoji靖情

添加emoji靖情
master
hwf453 2 years ago
parent 1cdd0e3145
commit 9af8f716b9

@ -144,6 +144,8 @@ dependencies {
implementation 'org.bouncycastle:bcpkix-jdk15on:1.47' implementation 'org.bouncycastle:bcpkix-jdk15on:1.47'
implementation 'commons-codec:commons-codec:1.15' implementation 'commons-codec:commons-codec:1.15'
implementation 'com.google.android.play:app-update:2.0.1' implementation 'com.google.android.play:app-update:2.0.1'
//emoji
implementation 'androidx.emoji:emoji-bundled:1.0.0'
implementation project(':videocompressor') implementation project(':videocompressor')
implementation project(':recorderlib') implementation project(':recorderlib')
} }

@ -23,9 +23,8 @@
<uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" /> <uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission
android:name="android.permission.WRITE_SECURE_SETTINGS"
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"
tools:ignore="ProtectedPermissions" /> tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
@ -44,7 +43,6 @@
android:name="android.hardware.telephony" android:name="android.hardware.telephony"
android:required="false" /> android:required="false" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
@ -351,6 +349,10 @@
android:name=".ui.activity.ChangeMyPhoneActivity" android:name=".ui.activity.ChangeMyPhoneActivity"
android:configChanges="orientation|screenSize|keyboardHidden" android:configChanges="orientation|screenSize|keyboardHidden"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.EmojiActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:screenOrientation="portrait" />
<activity <activity
android:name=".ui.activity.HeadPhotoActivity" android:name=".ui.activity.HeadPhotoActivity"
android:configChanges="orientation|screenSize|keyboardHidden" android:configChanges="orientation|screenSize|keyboardHidden"

@ -8,6 +8,9 @@ import android.os.Process;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import androidx.annotation.Nullable;
import androidx.emoji.bundled.BundledEmojiCompatConfig;
import androidx.emoji.text.EmojiCompat;
import androidx.multidex.BuildConfig; import androidx.multidex.BuildConfig;
import androidx.multidex.MultiDex; import androidx.multidex.MultiDex;
@ -87,6 +90,7 @@ public class App extends LitePalApplication {
Utils.init(this); Utils.init(this);
XUI.init(this); //初始化UI框架 XUI.init(this); //初始化UI框架
CrashReport.initCrashReport(getApplicationContext(), "13d735012a", true); CrashReport.initCrashReport(getApplicationContext(), "13d735012a", true);
loadEmojiFromBundled();
LoggerInterface newLogger = new LoggerInterface() { LoggerInterface newLogger = new LoggerInterface() {
@Override @Override
public void setTag(String tag) { public void setTag(String tag) {
@ -163,6 +167,28 @@ public class App extends LitePalApplication {
SPUtils.clearUser(this); SPUtils.clearUser(this);
} }
private void loadEmojiFromBundled() {
EmojiCompat.Config config = new BundledEmojiCompatConfig(getApplicationContext());
config.setReplaceAll(true)
.registerInitCallback(new EmojiCompat.InitCallback()
{
@Override
public void onInitialized()
{
Log.i("app", "loadEmojiFromBundled()->onInitialized()");
}
@Override
public void onFailed(@Nullable Throwable throwable)
{
Log.e("app", "loadEmojiFromBundled()->onFailed()", throwable);
}
});
EmojiCompat.init(config);
}
// public static RefWatcher getRefWatcher(Context context) { // public static RefWatcher getRefWatcher(Context context) {
// App application = (App) context.getApplicationContext(); // App application = (App) context.getApplicationContext();
// return application.refWatcher; // return application.refWatcher;

@ -0,0 +1,54 @@
package com.rehome.zhdcoa.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.emoji.text.EmojiCompat;
import androidx.viewbinding.ViewBinding;
import com.rehome.zhdcoa.base.BaseViewBindingAdapter;
import com.rehome.zhdcoa.bean.GridViewBean;
import com.rehome.zhdcoa.databinding.AdapterEmojiBinding;
import java.util.List;
public class EmojiAdapter extends BaseViewBindingAdapter<AdapterEmojiBinding> {
private final Context context;
private final List<String> data;
public EmojiAdapter(Context context,List<String> datas) {
super(context);
this.context=context;
this.data=datas;
}
@Override
protected void handleData(int position, @NonNull AdapterEmojiBinding binding) {
String item = data.get(position);
CharSequence character = EmojiCompat.get().process(item);
binding.tv.setText(character);
}
@Override
protected AdapterEmojiBinding getBinding(@NonNull LayoutInflater inflater, ViewGroup parent) {
return AdapterEmojiBinding.inflate(inflater, parent, false);
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return Long.valueOf(position);
}
}

@ -0,0 +1,170 @@
package com.rehome.zhdcoa.ui.activity
import android.content.Intent
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.widget.AdapterView
import com.rehome.zhdcoa.adapter.EmojiAdapter
import com.rehome.zhdcoa.base.BaseActivityOaToolbarViewBinding
import com.rehome.zhdcoa.databinding.ActivityEmojiBinding
class EmojiActivity : BaseActivityOaToolbarViewBinding<ActivityEmojiBinding>() {
private val emojiArray= mutableListOf<String>()
override fun getViewBinding()= ActivityEmojiBinding.inflate(layoutInflater)
override fun getToolbar() = binding.toolbarView.toolbar
override fun initView() {
initToolbar("选择表情")
setLeftOnClickListener { finish() }
addData()
var adapter = EmojiAdapter(this, emojiArray)
binding.gv.selector = ColorDrawable(Color.TRANSPARENT)
binding.gv.adapter = adapter
binding.gv.onItemClickListener = AdapterView.OnItemClickListener { adapterView, view, i, l ->
val emojiStr = emojiArray[i]
val resultIntent = Intent()
val bundle = Bundle()
bundle.putString("emoji", emojiStr)
resultIntent.putExtras(bundle)
setResult(RESULT_OK, resultIntent)
finish();
}
}
override fun initData() {
}
private fun addData() {
emojiArray.add("\uD83D\uDE00")
emojiArray.add("😃")
emojiArray.add("😄")
emojiArray.add("😁")
emojiArray.add("\uD83D\uDE06")
emojiArray.add("\uD83D\uDE05")
emojiArray.add("\uD83E\uDD23")
emojiArray.add("\uD83D\uDE02")
emojiArray.add("\uD83D\uDE42")
emojiArray.add("\uD83D\uDE43")
emojiArray.add("\uD83E\uDD2D")
emojiArray.add("\uD83D\uDE09")
emojiArray.add("\uD83D\uDE0A")
emojiArray.add("\uD83D\uDE07")
emojiArray.add("\uD83E\uDD70")
emojiArray.add("\uD83D\uDE0D")
emojiArray.add("\uD83E\uDD29")
emojiArray.add("\uD83D\uDE18")
emojiArray.add("\uD83D\uDE17")
emojiArray.add("☺️")
emojiArray.add("\uD83D\uDE1A")
emojiArray.add("\uD83D\uDE19")
emojiArray.add("\uD83E\uDD17")
emojiArray.add("\uD83D\uDE0B")
emojiArray.add("\uD83D\uDE1B")
emojiArray.add("\uD83D\uDE1C")
emojiArray.add("\uD83E\uDD2A")
emojiArray.add("\uD83D\uDE1D")
emojiArray.add("\uD83E\uDD75")
emojiArray.add("\uD83E\uDD76")
emojiArray.add("\uD83E\uDD74")
emojiArray.add("\uD83D\uDE35")
emojiArray.add("\uD83D\uDE0E")
emojiArray.add("\uD83E\uDD13")
emojiArray.add("\uD83E\uDDD0")
emojiArray.add("\uD83E\uDD11")
emojiArray.add("\uD83E\uDD10")
emojiArray.add("\uD83E\uDD28")
emojiArray.add("\uD83D\uDE10")
emojiArray.add("\uD83D\uDE11")
emojiArray.add("\uD83D\uDE36")
emojiArray.add("\uD83D\uDE44")
emojiArray.add("\uD83D\uDE36")
emojiArray.add("\uD83D\uDE0F")
emojiArray.add("\uD83E\uDD25")
emojiArray.add("\uD83D\uDE0C")
emojiArray.add("\uD83D\uDE14")
emojiArray.add("\uD83D\uDE2A")
emojiArray.add("\uD83E\uDD24")
emojiArray.add("\uD83D\uDE34")
emojiArray.add("\uD83D\uDE37")
emojiArray.add("\uD83E\uDD12")
emojiArray.add("\uD83E\uDD15")
emojiArray.add("\uD83E\uDD22")
emojiArray.add("\uD83E\uDD2E")
emojiArray.add("\uD83E\uDD27")
emojiArray.add("\uD83E\uDD75")
emojiArray.add("\uD83E\uDD76")
emojiArray.add("\uD83E\uDD74")
emojiArray.add("\uD83D\uDE35")
emojiArray.add("\uD83D\uDE12")
emojiArray.add("\uD83E\uDD2F")
emojiArray.add("\uD83E\uDD20")
emojiArray.add("\uD83E\uDD73")
emojiArray.add("\uD83D\uDE26")
emojiArray.add("\uD83D\uDE1F")
emojiArray.add("\uD83D\uDE41")
emojiArray.add("\uD83E\uDD2B")
emojiArray.add("\uD83D\uDE2E")
emojiArray.add("\uD83D\uDE2F")
emojiArray.add("\uD83D\uDE32")
emojiArray.add("\uD83D\uDE33")
emojiArray.add("\uD83D\uDE27")
emojiArray.add("\uD83D\uDE28")
emojiArray.add("\uD83D\uDE30")
emojiArray.add("\uD83D\uDE25")
emojiArray.add("\uD83D\uDE22")
emojiArray.add("\uD83D\uDE2D")
emojiArray.add("\uD83D\uDE31")
emojiArray.add("\uD83D\uDE16")
emojiArray.add("\uD83D\uDE23")
emojiArray.add("\uD83D\uDE1E")
emojiArray.add("\uD83D\uDE13")
emojiArray.add("\uD83D\uDE29")
emojiArray.add("\uD83D\uDE2B")
emojiArray.add("\uD83E\uDD71")
emojiArray.add("\uD83D\uDE24")
emojiArray.add("\uD83D\uDE21")
emojiArray.add("\uD83D\uDE20")
emojiArray.add("\uD83E\uDD2C")
emojiArray.add("\uD83D\uDE08")
emojiArray.add("\uD83E\uDD14")
//emojiArray.add("\uD83D\uDE2C")
}
}

@ -1,5 +1,7 @@
package com.rehome.zhdcoa.ui.fragment; package com.rehome.zhdcoa.ui.fragment;
import static android.app.Activity.RESULT_OK;
import android.Manifest; import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
@ -11,18 +13,28 @@ import android.graphics.BitmapFactory;
import android.graphics.Color; import android.graphics.Color;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.os.Looper; import android.os.Looper;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider; import androidx.core.content.FileProvider;
import androidx.emoji.text.EmojiCompat;
import com.azhon.appupdate.listener.OnButtonClickListener; import com.azhon.appupdate.listener.OnButtonClickListener;
import com.azhon.appupdate.listener.OnDownloadListener; import com.azhon.appupdate.listener.OnDownloadListener;
import com.azhon.appupdate.manager.DownloadManager; import com.azhon.appupdate.manager.DownloadManager;
@ -47,6 +59,7 @@ import com.rehome.zhdcoa.bean.HeadPhotoResultBean;
import com.rehome.zhdcoa.bean.QtdbBean; import com.rehome.zhdcoa.bean.QtdbBean;
import com.rehome.zhdcoa.ui.activity.ApplyAboutMeActivity; import com.rehome.zhdcoa.ui.activity.ApplyAboutMeActivity;
import com.rehome.zhdcoa.ui.activity.ChangeMyPhoneActivity; import com.rehome.zhdcoa.ui.activity.ChangeMyPhoneActivity;
import com.rehome.zhdcoa.ui.activity.EmojiActivity;
import com.rehome.zhdcoa.ui.activity.LoginActivity; import com.rehome.zhdcoa.ui.activity.LoginActivity;
import com.rehome.zhdcoa.ui.activity.MyAdviceActivity; import com.rehome.zhdcoa.ui.activity.MyAdviceActivity;
import com.rehome.zhdcoa.ui.activity.MyOrderActivity; import com.rehome.zhdcoa.ui.activity.MyOrderActivity;
@ -82,6 +95,8 @@ public class MineFragment extends BaseLazyFragment {
private static final int CROP = 2; private static final int CROP = 2;
public static final int UPDATE_HEAD_PHOTO = 100; public static final int UPDATE_HEAD_PHOTO = 100;
private ActivityResultLauncher launcherResultEmoji;
CircleImageView civHead; CircleImageView civHead;
TextView tvName; TextView tvName;
TextView tvMentions; TextView tvMentions;
@ -101,7 +116,11 @@ public class MineFragment extends BaseLazyFragment {
TextView tvSm; TextView tvSm;
TextView tvSq; TextView tvSq;
TextView tv_order; TextView tv_order;
TextView tv_emj;
// 在我们的这个位置的话创建我们的数组
List<String> array = new ArrayList<>();
private String path = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "com.rehome.ydoa/images"; private String path = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "com.rehome.ydoa/images";
@ -126,6 +145,12 @@ public class MineFragment extends BaseLazyFragment {
return instance; return instance;
} }
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
launcherResultEmoji = createActivityResultLauncher();
}
@Override @Override
protected int getContentViewId() { protected int getContentViewId() {
return R.layout.fragment_mine; return R.layout.fragment_mine;
@ -134,6 +159,18 @@ public class MineFragment extends BaseLazyFragment {
@Override @Override
protected void initView() { protected void initView() {
findView(); findView();
array.add("\uD83D\uDE00");
array.add("😃");
array.add("😄");
array.add("😁");
CharSequence character = EmojiCompat.get().process(array.get(0));
tv_emj.setText(character);
//android 10 以上 //android 10 以上
if (requireActivity().getExternalFilesDir(null) != null) { if (requireActivity().getExternalFilesDir(null) != null) {
path = Objects.requireNonNull(requireActivity().getExternalFilesDir(null)).getPath() + "/images"; path = Objects.requireNonNull(requireActivity().getExternalFilesDir(null)).getPath() + "/images";
@ -183,6 +220,7 @@ public class MineFragment extends BaseLazyFragment {
tvSm = view.findViewById(R.id.tv_sm); tvSm = view.findViewById(R.id.tv_sm);
tvSq = view.findViewById(R.id.tv_sq); tvSq = view.findViewById(R.id.tv_sq);
tv_order = view.findViewById(R.id.tv_order); tv_order = view.findViewById(R.id.tv_order);
tv_emj = view.findViewById(R.id.tv_emj);
//提到我的 //提到我的
tvMentions.setOnClickListener(new View.OnClickListener() { tvMentions.setOnClickListener(new View.OnClickListener() {
@ -211,6 +249,16 @@ public class MineFragment extends BaseLazyFragment {
startActivity(intent2); startActivity(intent2);
} }
}); });
tv_emj.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), EmojiActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
launcherResultEmoji.launch(intent);
}
});
//修改密码 //修改密码
tvUpdatePwd.setOnClickListener(new View.OnClickListener() { tvUpdatePwd.setOnClickListener(new View.OnClickListener() {
@Override @Override
@ -256,6 +304,10 @@ public class MineFragment extends BaseLazyFragment {
dialog1.show(); dialog1.show();
} }
}); });
//我的订单 //我的订单
tv_order.setOnClickListener(new View.OnClickListener() { tv_order.setOnClickListener(new View.OnClickListener() {
@Override @Override
@ -370,6 +422,34 @@ public class MineFragment extends BaseLazyFragment {
protected void initListener() { protected void initListener() {
} }
private ActivityResultLauncher<Intent> createActivityResultLauncher() {
return registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
int resultCode = result.getResultCode();
Intent data = result.getData();
if (resultCode == RESULT_OK) {
String emojiStr = data.getStringExtra("emoji");
CharSequence character = EmojiCompat.get().process(emojiStr);
tv_emj.setText(character);
showLog(toHex(emojiStr));
}
}
});
}
/**
*
*/
private static String toHex(String input) {
StringBuilder sb = new StringBuilder();
for (char c : input.toCharArray()) {
sb.append(Integer.toString((int) c, 16));
}
return sb.toString().toUpperCase();
}
public void clearImageDiskCache(Context context) { public void clearImageDiskCache(Context context) {
try { try {
if (Looper.myLooper() == Looper.getMainLooper()) { if (Looper.myLooper() == Looper.getMainLooper()) {
@ -837,7 +917,7 @@ public class MineFragment extends BaseLazyFragment {
@Override @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) { if (resultCode == RESULT_OK) {
switch (requestCode) { switch (requestCode) {
case PICTURE_BOOK_CODE: case PICTURE_BOOK_CODE:
try { try {

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.activity.EmojiActivity">
<include
android:id="@+id/toolbarView"
layout="@layout/layout_base" />
<GridView
android:id="@+id/gv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="12dp"
android:horizontalSpacing="12dp"
android:listSelector="@null"
android:numColumns="4"
android:scrollbars="none"
android:stretchMode="columnWidth"
android:verticalSpacing="12dp" />
</LinearLayout>

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="#00000000"
android:gravity="center"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:text="" />
</LinearLayout>

@ -7,31 +7,46 @@
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="150dp" android:layout_height="180dp"
android:background="?attr/colorPrimary"> android:background="?attr/colorPrimary">
<de.hdodenhof.circleimageview.CircleImageView <de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/civ_head" android:id="@+id/civ_head"
android:layout_width="100dp" android:layout_width="90dp"
android:layout_height="100dp" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:src="@drawable/head_photo" android:src="@drawable/head_photo"
app:civ_border_color="#FFFFFF" app:civ_border_color="#FFFFFF"
app:civ_border_width="2dp" /> app:civ_border_width="2dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginTop="120dp"
android:layout_marginBottom="9dp"
android:orientation="horizontal">
<TextView <TextView
android:id="@+id/tv_name" android:id="@+id/tv_name"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginTop="60dp"
android:layout_marginBottom="9dp"
android:gravity="center" android:gravity="center"
android:text="珠海电厂XXX" android:text="珠海电厂XXX"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="16sp" /> android:textSize="16sp" />
<TextView
android:id="@+id/tv_emj"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:layout_gravity="center"
android:gravity="center"
android:text=""
android:textColor="@color/white"
android:textSize="30sp" />
</LinearLayout>
</FrameLayout> </FrameLayout>
<ScrollView <ScrollView

Loading…
Cancel
Save