1.拍照头像需要经过缩放处理再压缩体积

2.完善头像显示
0515
panqihua 5 years ago
parent 057cd6309e
commit 5ac2e79932
  1. 17
      app/src/main/java/com/community/pocket/data/model/Forum.java
  2. 9
      app/src/main/java/com/community/pocket/ui/main/ui/forum/ForumPost.java
  3. 9
      app/src/main/java/com/community/pocket/ui/main/ui/forum/data/ForumDataActivity.java
  4. 25
      app/src/main/java/com/community/pocket/ui/main/ui/info/InfoFragment.java
  5. 1
      app/src/main/res/values-en-rUS/strings.xml
  6. 1
      app/src/main/res/values-zh-rCN/strings.xml
  7. 4
      app/src/main/res/values/integers.xml
  8. 1
      app/src/main/res/values/strings.xml

@ -19,13 +19,16 @@ public class Forum {
//审核状态 //审核状态
private ForumStatus status; private ForumStatus status;
//其他信息 //悬赏贴信息
private Active activeDto; private Active activeDto;
//投诉贴信息
private Complain complainDto; private Complain complainDto;
//结算贴信息
private Score score; private Score score;
//发帖人详情信息
private MyInfo info;
public Active getActiveDto() { public Active getActiveDto() {
return activeDto; return activeDto;
} }
@ -113,4 +116,12 @@ public class Forum {
public void setScore(Score score) { public void setScore(Score score) {
this.score = score; this.score = score;
} }
public MyInfo getInfo() {
return info;
}
public void setInfo(MyInfo info) {
this.info = info;
}
} }

@ -1,11 +1,13 @@
package com.community.pocket.ui.main.ui.forum; package com.community.pocket.ui.main.ui.forum;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
@ -13,8 +15,10 @@ import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import androidx.appcompat.widget.SearchView; import androidx.appcompat.widget.SearchView;
import androidx.core.widget.NestedScrollView; import androidx.core.widget.NestedScrollView;
import androidx.lifecycle.MutableLiveData;
import com.community.pocket.R; import com.community.pocket.R;
import com.community.pocket.data.main.info.InfoRequest;
import com.community.pocket.data.model.Forum; import com.community.pocket.data.model.Forum;
import com.community.pocket.data.model.Page; import com.community.pocket.data.model.Page;
import com.community.pocket.ui.BaseFragment; import com.community.pocket.ui.BaseFragment;
@ -75,6 +79,11 @@ public abstract class ForumPost extends BaseFragment {
author.setVisibility(showAuthor()); author.setVisibility(showAuthor());
author.setText(getString(R.string.poster, forum.getUsername())); author.setText(getString(R.string.poster, forum.getUsername()));
ImageView headimg = childView.findViewById(R.id.headimg);
MutableLiveData<Bitmap> liveData = new MutableLiveData<>();
InfoRequest.getInstance().getImg(liveData, forum.getInfo().getHeadImg());
liveData.observe(getViewLifecycleOwner(), headimg::setImageBitmap);
TextView postReply = childView.findViewById(R.id.post_reply); TextView postReply = childView.findViewById(R.id.post_reply);
postReply.setText(getString(R.string.post_reply, forum.getReply())); postReply.setText(getString(R.string.post_reply, forum.getReply()));
TextView time = childView.findViewById(R.id.post_time); TextView time = childView.findViewById(R.id.post_time);

@ -2,6 +2,7 @@ package com.community.pocket.ui.main.ui.forum.data;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
@ -11,6 +12,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
@ -19,9 +21,11 @@ import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.widget.NestedScrollView; import androidx.core.widget.NestedScrollView;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import com.community.pocket.R; import com.community.pocket.R;
import com.community.pocket.data.main.info.InfoRequest;
import com.community.pocket.data.model.Active; import com.community.pocket.data.model.Active;
import com.community.pocket.data.model.Complain; import com.community.pocket.data.model.Complain;
import com.community.pocket.data.model.Forum; import com.community.pocket.data.model.Forum;
@ -262,5 +266,10 @@ public class ForumDataActivity extends BaseActivity {
tower.setText(getString(R.string.tower, forumContent.getTower())); tower.setText(getString(R.string.tower, forumContent.getTower()));
TextView content = view.findViewById(R.id.content); TextView content = view.findViewById(R.id.content);
content.setText(forumContent.getContent()); content.setText(forumContent.getContent());
ImageView headimg = view.findViewById(R.id.headimg);
MutableLiveData<Bitmap> liveData = new MutableLiveData<>();
InfoRequest.getInstance().getImg(liveData, forumContent.getInfo().getHeadImg());
liveData.observe(this, headimg::setImageBitmap);
} }
} }

@ -362,32 +362,40 @@ public class InfoFragment extends BaseFragment {
if (picFile.createNewFile()) { if (picFile.createNewFile()) {
Bitmap bitmap; Bitmap srcbitmap;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
bitmap = ImageDecoder.decodeBitmap(ImageDecoder.createSource(requireContext().getContentResolver(), uri)); srcbitmap = ImageDecoder.decodeBitmap(ImageDecoder.createSource(requireContext().getContentResolver(), uri));
} else { } else {
bitmap = MediaStore.Images.Media.getBitmap(requireContext().getContentResolver(), uri); srcbitmap = MediaStore.Images.Media.getBitmap(requireContext().getContentResolver(), uri);
} }
Context context = requireContext(); Context context = requireContext();
TextView textView = new TextView(getContext());
TextView textView = new TextView(context);
textView.setTextSize(18); textView.setTextSize(18);
textView.setGravity(Gravity.CENTER | Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL); textView.setGravity(Gravity.CENTER | Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
textView.setText(R.string.compress_img); textView.setText(R.string.scale_img);
AlertDialog uploadDialog = new AlertDialog.Builder(context) AlertDialog uploadDialog = new AlertDialog.Builder(context)
.setView(textView).setCancelable(false).show(); .setView(textView).setCancelable(false).show();
//缩放图片
int size = getResources().getInteger(R.integer.photo_size);
Bitmap scalebitmap = Bitmap.createScaledBitmap(srcbitmap, size, size, true);
compressHandler = new Handler(Looper.getMainLooper()) { compressHandler = new Handler(Looper.getMainLooper()) {
@Override @Override
public void handleMessage(@NonNull Message msg) { public void handleMessage(@NonNull Message msg) {
if (msg.what == Response.Result.OK.ordinal()) { if (msg.what == Response.Result.OK.ordinal()) {
Log.i(InfoFragment.class.getName(), "位图大小:" + bitmap.getByteCount() / 1024 + "KB" + ",压缩大小" + picFile.length() / 1024 + "KB"); Log.i(InfoFragment.class.getName(), "图大小:" + srcbitmap.getByteCount() / 1024 / 1024F + "MB,缩放大小:" + scalebitmap.getByteCount() / 1024 / 1024F + "MB,压缩大小:" + picFile.length() / 1024 / 1024F + "MB");
uploadImgHandler = new Handler(Looper.getMainLooper()) { uploadImgHandler = new Handler(Looper.getMainLooper()) {
@Override @Override
public void handleMessage(@NonNull Message msg) { public void handleMessage(@NonNull Message msg) {
uploadDialog.dismiss(); uploadDialog.dismiss();
if (msg.what == Response.Result.OK.ordinal()) { if (msg.what == Response.Result.OK.ordinal()) {
headimg.setImageBitmap(bitmap); headimg.setImageBitmap(scalebitmap);
} }
} }
}; };
@ -400,9 +408,10 @@ public class InfoFragment extends BaseFragment {
} }
}; };
textView.setText(R.string.compress_img);
new Thread(() -> { new Thread(() -> {
try { try {
bitmap.compress(Bitmap.CompressFormat.PNG, getResources().getInteger(R.integer.photo_quality), new FileOutputStream( scalebitmap.compress(Bitmap.CompressFormat.PNG, getResources().getInteger(R.integer.photo_quality), new FileOutputStream(
picFile)); picFile));
compressHandler.sendEmptyMessage(Response.Result.OK.ordinal()); compressHandler.sendEmptyMessage(Response.Result.OK.ordinal());
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {

@ -237,4 +237,5 @@
<string name="set_headimg">click to set headimg</string> <string name="set_headimg">click to set headimg</string>
<string name="upload_img">upload img....</string> <string name="upload_img">upload img....</string>
<string name="compress_img">compress img…</string> <string name="compress_img">compress img…</string>
<string name="scale_img">scale image...</string>
</resources> </resources>

@ -237,4 +237,5 @@
<string name="set_headimg">点击上方设置头像</string> <string name="set_headimg">点击上方设置头像</string>
<string name="upload_img">上传头像中。。。。</string> <string name="upload_img">上传头像中。。。。</string>
<string name="compress_img">压缩图片中。。。</string> <string name="compress_img">压缩图片中。。。</string>
<string name="scale_img">缩放图片。。。</string>
</resources> </resources>

@ -2,6 +2,6 @@
<resources> <resources>
<integer name="post_content">200</integer> <integer name="post_content">200</integer>
<integer name="post_content_maxLines">10</integer> <integer name="post_content_maxLines">10</integer>
<integer name="photo_size">100</integer> <integer name="photo_size">1024</integer>
<integer name="photo_quality">50</integer> <integer name="photo_quality">100</integer>
</resources> </resources>

@ -238,6 +238,7 @@
<string name="set_headimg">click to set headimg</string> <string name="set_headimg">click to set headimg</string>
<string name="upload_img">upload img....</string> <string name="upload_img">upload img....</string>
<string name="compress_img">compress img…</string> <string name="compress_img">compress img…</string>
<string name="scale_img">scale image...</string>
<!-- Strings used for fragments for navigation --> <!-- Strings used for fragments for navigation -->
<!-- Strings used for fragments for navigation --> <!-- Strings used for fragments for navigation -->

Loading…
Cancel
Save