"发布商品成功"

master
fangshicai 3 years ago
parent 33b9c50cc4
commit d7edf88eec

@ -36,9 +36,10 @@
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/layout/fragment_message_page.xml" value="0.13229166666666667" />
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/layout/fragment_my_page.xml" value="0.176" />
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/layout/fragment_phone.xml" value="0.10572916666666667" />
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/layout/fragment_publish_page.xml" value="0.2" />
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/layout/fragment_publish_page.xml" value="0.152" />
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/layout/fragment_shop_page.xml" value="0.2" />
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/layout/goods_show_item.xml" value="0.128" />
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/layout/gv_filter_image.xml" value="0.11770833333333333" />
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/layout/item_book_info.xml" value="0.1" />
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/layout/item_delivery.xml" value="0.1" />
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/layout/item_delivery_select.xml" value="0.1" />
@ -46,6 +47,7 @@
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/layout/list_good_stype_item.xml" value="0.2" />
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/layout/third_fragment.xml" value="0.264" />
<entry key="..\:/andriod/Android_Couser_Design/app/src/main/res/menu/bottom_navigation_menu.xml" value="0.176" />
<entry key="..\:/java/maven/apache-maven-3.3.9/repo/caches/transforms-3/ac7bf89d8f42b5a2421be3e38df6e03b/transformed/pictureselector-v3.10.2/res/drawable/ps_image_placeholder.xml" value="0.1285" />
</map>
</option>
</component>

@ -74,6 +74,19 @@ dependencies {
implementation "androidx.cardview:cardview:1.0.0"
// PictureSelector
// PictureSelector ()
implementation 'io.github.lucksiege:pictureselector:v3.10.2'
// ()
implementation 'io.github.lucksiege:compress:v3.10.2'
// ()
implementation 'io.github.lucksiege:camerax:v3.10.2'
// api 'io.github.lucksiege:pictureselector:v2.7.3-rc05'

@ -10,6 +10,15 @@
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取wifi网络状态的信息 -->
<uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- 以便 CPU 在屏幕关闭时保持运行状态,用于文件上传和下载 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 允许读取手机状态 用于创建BmobInstallation -->
<permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
<permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<application
android:allowBackup="true"
@ -32,7 +41,7 @@
<activity
android:name=".activity.HomePageActivity"
android:exported="false"
android:launchMode="singleTask">
>
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
@ -52,6 +61,20 @@
</intent-filter>
</activity>
<activity android:name="com.android.MainActivity" />
requestLegacyExternalStorage=true
</application>
<queries package="${applicationId}">
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE">
</action>
</intent>
<intent>
<action android:name="android.media.action.ACTION_VIDEO_CAPTURE">
</action>
</intent>
</queries>
</manifest>

@ -110,6 +110,7 @@ public class LoginActivity extends AppCompatActivity implements LoginListener, V
Intent intent = new Intent(LoginActivity.this,HomePageActivity.class);
//发送登录的用户信息
EventBus.getDefault().postSticky(responseData);
startActivity(intent);
}else {
Log.e("login",responseData.getMsg());

@ -1,48 +1,71 @@
package com.android.activity.fragment;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.android.R;
import com.android.activity.HomePageActivity;
import com.android.bean.Good;
import com.android.bean.ImageBean;
import com.android.bean.ResponseData;
import com.android.bean.User;
import com.android.databinding.FragmentPublishPageBinding;
import com.android.model.upload.UpListener;
import com.android.model.upload.UpModelimpl;
import com.android.utils.FileUtil;
import com.android.utils.GlideEngine;
import com.android.utils.ToastUtil;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.engine.CompressFileEngine;
import com.luck.picture.lib.entity.LocalMedia;
import com.luck.picture.lib.interfaces.OnKeyValueResultCallbackListener;
import com.luck.picture.lib.interfaces.OnResultCallbackListener;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener;
import top.zibin.luban.OnNewCompressListener;
/**
* A simple {@link Fragment} subclass.
* create an instance of this fragment.
*/
public class PublishProductFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
public class PublishProductFragment extends Fragment implements View.OnClickListener, UpListener {
private FragmentPublishPageBinding binding;
private UpModelimpl upModelimpl;
private List<MultipartBody.Part> fileArrayList;
private ImageBean imageBean;
private Good goods;
private User user;
public PublishProductFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment ShopPageFragment.
*/
// TODO: Rename and change types and number of parameters
public static PublishProductFragment newInstance(String param1, String param2) {
public static PublishProductFragment newInstance() {
PublishProductFragment fragment = new PublishProductFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@ -50,16 +73,137 @@ public class PublishProductFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
upModelimpl = new UpModelimpl();
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public void onDestroy() {
EventBus.getDefault().unregister(this);
super.onDestroy();
}
//通过Eventbus获取用户
@Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
public void getUser(ResponseData<User> responseData){
this.user = responseData.getData();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_publish_page, container, false);
binding = FragmentPublishPageBinding.inflate(inflater, container, false);
View view = binding.getRoot();
binding.btnRelease.setOnClickListener(this);
binding.btnAddImage.setOnClickListener(this);
// binding.
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_release:
Log.e("1","发布按钮点击");
publishGoods();
break;
case R.id.btn_add_image:
getPicture();
break;
}
}
//发布商品
private void publishGoods() {
goods = new Good();
goods.setAddr(binding.etAddr.getText().toString());
goods.setContent(binding.etContent.getText().toString());
Log.e("1",imageBean.getImageCode().toString());
if (imageBean == null){
ToastUtil.showMsg(getActivity(),"请先上传图片");
return;
}
goods.setImageCode(imageBean.getImageCode());
goods.setPrice(Integer.parseInt(binding.etPrice.getText().toString()));
goods.setTypeId(Integer.parseInt(binding.etGoodsType.getText().toString()));
goods.setTypeName(binding.etGoodsTypeName.getText().toString());
goods.setUserId(user.getId());
upModelimpl.addGoods(goods,this);
}
//获取相册图片
public void getPicture(){
PictureSelector.create(getActivity())
.openGallery(SelectMimeType.ofImage())
.setImageEngine(GlideEngine.createGlideEngine())
.isOriginalControl(true)
.forResult(new OnResultCallbackListener<LocalMedia>() {
@Override
public void onResult(ArrayList<LocalMedia> result) {
fileArrayList = new ArrayList<>();
for (int i = 0; i < result.size(); i++) {
String imgPath = result.get(i).getRealPath();
File file = new File(imgPath);
//参数添加
MultipartBody.Builder builder =
new MultipartBody.Builder()
.setType(MultipartBody.FORM);
RequestBody requestFile =
RequestBody.create(MediaType.parse("image/png"), file);//文件形式
builder.addFormDataPart("fileList", file.getName(), requestFile);
fileArrayList = builder.build().parts();
}
updateImage(fileArrayList);
}
@Override
public void onCancel() {
}
});
}
//上传
private void updateImage(List<MultipartBody.Part> parts) {
upModelimpl.UpImage(parts,this);
}
@Override
public void upImageOnSuccess(ResponseData<ImageBean> responseData) {
imageBean = responseData.getData();
Log.e("str",String.valueOf(imageBean.getImageCode()));
}
@Override
public void addGoodsOnSuccess(ResponseData<Good> responseData) {
this.goods = responseData.getData();
if (responseData.getCode() == 200){
// ToastUtil.showMsg(getActivity(),"发布成功,即将跳转页面");
Intent intent = new Intent(getActivity(), HomePageActivity.class);
startActivity(intent);
}
}
}

@ -24,9 +24,25 @@ public class Good implements Serializable {
private Integer status;
private Long tUserId;
private Long tuserId;
private Long userId;
private Integer typeId;
private List array;
public void setImageUrlList(List<String> imageUrlList) {
this.imageUrlList = imageUrlList;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Good() {
}
protected Good(Parcel in) {
addr = in.readString();
appKey = in.readString();

@ -0,0 +1,36 @@
package com.android.bean;
import com.google.gson.annotations.SerializedName;
import java.util.ArrayList;
public class ImageBean {
@SerializedName("imageCode")
private Long imageCode;
@SerializedName("imageUrlList")
private ArrayList<String> imageUrlList;
public ImageBean(Long imageCode, ArrayList<String> imageUrlList) {
this.imageCode = imageCode;
this.imageUrlList = imageUrlList;
}
public ImageBean() {
}
public Long getImageCode() {
return imageCode;
}
public void setImageCode(Long imageCode) {
this.imageCode = imageCode;
}
public ArrayList<String> getImageUrlList() {
return imageUrlList;
}
public void setImageUrlList(ArrayList<String> imageUrlList) {
this.imageUrlList = imageUrlList;
}
}

@ -4,12 +4,16 @@ import com.android.bean.GoodRecords;
import com.android.bean.GoodsType;
import com.android.bean.ResponseData;
import java.io.File;
import java.util.List;
import java.util.Map;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
@ -31,4 +35,6 @@ public interface GoodsHttp_interface {
}

@ -0,0 +1,29 @@
package com.android.model.upload;
import com.android.bean.Good;
import com.android.bean.ImageBean;
import com.android.bean.ResponseData;
import java.io.File;
import java.util.List;
import io.reactivex.rxjava3.core.Observable;
import okhttp3.MultipartBody;
import retrofit2.http.Body;
import retrofit2.http.Headers;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
public interface UpHttp_interface {
@Multipart
@POST("tran/image/upload")
@Headers({"appId:b34ac21286ae45938add627b418a4871",
"appSecret:67526def9de11d4a64f5e80e60ed3372eea69"})
Observable<ResponseData<ImageBean>> sendUpImage(@Part List<MultipartBody.Part> fileList);
@POST("tran/goods/add")
@Headers({"appId:b34ac21286ae45938add627b418a4871",
"appSecret:67526def9de11d4a64f5e80e60ed3372eea69"})
Observable<ResponseData<Good>> sendAddGoods(@Body Good goods);
}

@ -0,0 +1,13 @@
package com.android.model.upload;
import com.android.bean.Good;
import com.android.bean.ImageBean;
import com.android.bean.ResponseData;
import java.io.File;
import java.util.List;
public interface UpListener {
void upImageOnSuccess(ResponseData<ImageBean> responseData);
void addGoodsOnSuccess(ResponseData<Good> responseData);
}

@ -0,0 +1,13 @@
package com.android.model.upload;
import com.android.bean.Good;
import java.util.List;
import okhttp3.MultipartBody;
public interface UpModel {
void UpImage (List<MultipartBody.Part> parts, final UpListener upListener);
void addGoods (Good good, final UpListener upListener);
}

@ -0,0 +1,101 @@
package com.android.model.upload;
import android.util.Log;
import com.android.bean.Good;
import com.android.bean.ImageBean;
import com.android.bean.ResponseData;
import com.android.utils.constraint.Constants;
import java.io.File;
import java.util.List;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import okhttp3.MultipartBody;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
public class UpModelimpl implements UpModel{
@Override
public void UpImage(List<MultipartBody.Part> parts,final UpListener upListener) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
.build();
UpHttp_interface anInterface = retrofit.create(UpHttp_interface.class);
Observable<ResponseData<ImageBean>> observable = anInterface.sendUpImage(parts);
observable.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ResponseData<ImageBean>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull ResponseData<ImageBean> listResponseData) {
upListener.upImageOnSuccess(listResponseData);
Log.e("图片返回",listResponseData.getMsg());
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("onerror",e.toString());
}
@Override
public void onComplete() {
}
});
}
@Override
public void addGoods(Good good, UpListener upListener) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
.build();
UpHttp_interface httpInterface = retrofit.create(UpHttp_interface.class);
Observable<ResponseData<Good>> observable = httpInterface.sendAddGoods(good);
observable.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ResponseData<Good>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull ResponseData<Good> goodResponseData) {
Log.e("发布商品",goodResponseData.getMsg());
upListener.addGoodsOnSuccess(goodResponseData);
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("1",e.toString());
}
@Override
public void onComplete() {
}
});
}
}

@ -0,0 +1,171 @@
package com.android.utils;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
import androidx.annotation.RequiresApi;
import java.io.File;
/**
*
*/
public class FileUtil {
/**
* Android4.4Uri使
*/
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public static String getPath(final Context context, final Uri uri) {
final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
// DocumentProvider
if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
// ExternalStorageProvider
//一些三方的文件浏览器会进入到这个方法中例如ES
//QQ文件管理器不在此列
if (isExternalStorageDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
final String type = split[0];
if ("primary".equalsIgnoreCase(type)) {
return Environment.getExternalStorageDirectory() + "/" + split[1];
}
}
// DownloadsProvider
else if (isDownloadsDocument(uri)) {
final String id = DocumentsContract.getDocumentId(uri);
// 不同系统获取的id开头可能不一样在这后面便是真实的地址
if (id.startsWith("msf:")) {
return id.replaceFirst("msf:", "");
}
final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
return getDataColumn(context, contentUri, null, null);
}
// MediaProvider
else if (isMediaDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
final String type = split[0];
Uri contentUri = null;
if ("image".equals(type)) {
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
} else if ("video".equals(type)) {
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
} else if ("audio".equals(type)) {
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
}
final String selection = "_id=?";
final String[] selectionArgs = new String[]{split[1]};
return getDataColumn(context, contentUri, selection, selectionArgs);
}
} else if ("content".equalsIgnoreCase(uri.getScheme())) {// MediaStore (and general)
// Return the remote address
if (isGooglePhotosUri(uri))
return uri.getLastPathSegment();
if (isQQMediaDocument(uri)) {
String path = uri.getPath();
File fileDir = Environment.getExternalStorageDirectory();
File file = new File(fileDir, path.substring("/QQBrowser".length(), path.length()));
return file.exists() ? file.toString() : null;
}
return getDataColumn(context, uri, null, null);
} else if ("file".equalsIgnoreCase(uri.getScheme())) {// File
return uri.getPath();
}
return null;
}
/**
* Get the value of the data column for this Uri. This is useful for
* MediaStore Uris, and other file-based ContentProviders.
*
* @param context The context.
* @param uri The Uri to query.
* @param selection (Optional) Filter used in the query.
* @param selectionArgs (Optional) Selection arguments used in the query.
* @return The value of the _data column, which is typically a file path.
*/
public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {
Cursor cursor = null;
final String column = MediaStore.MediaColumns.DATA;
final String[] projection = {column};
try {
cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null);
if (cursor != null && cursor.moveToFirst()) {
final int column_index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(column_index);
}
} finally {
if (cursor != null)
cursor.close();
}
return null;
}
/**
* @param uri The Uri to check.
* @return Whether the Uri authority is ExternalStorageProvider.
*/
public static boolean isExternalStorageDocument(Uri uri) {
return "com.android.externalstorage.documents".equals(uri.getAuthority());
}
/**
* @param uri The Uri to check.
* @return Whether the Uri authority is DownloadsProvider.
*/
public static boolean isDownloadsDocument(Uri uri) {
return "com.android.providers.downloads.documents".equals(uri.getAuthority());
}
/**
* @param uri The Uri to check.
* @return Whether the Uri authority is MediaProvider.
*/
public static boolean isMediaDocument(Uri uri) {
return "com.android.providers.media.documents".equals(uri.getAuthority());
}
/**
* 使qq
*
* @param uri
* @return
*/
public static boolean isQQMediaDocument(Uri uri) {
return "com.tencent.mtt.fileprovider".equals(uri.getAuthority());
}
/**
* @param uri The Uri to check.
* @return Whether the Uri authority is Google Photos.
*/
public static boolean isGooglePhotosUri(Uri uri) {
return "com.google.android.apps.photos.content".equals(uri.getAuthority());
}
}

@ -0,0 +1,156 @@
package com.android.utils;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.R;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.luck.picture.lib.engine.ImageEngine;
import com.luck.picture.lib.interfaces.OnCallbackListener;
import com.luck.picture.lib.utils.ActivityCompatHelper;
/**
* @authorluck
* @date2019-11-13 17:02
* @describeGlide
*/
public class GlideEngine implements ImageEngine {
/**
*
*
* @param context
* @param url url
* @param imageView
*/
@Override
public void loadImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
if (!ActivityCompatHelper.assertValidRequest(context)) {
return;
}
Glide.with(context)
.load(url)
.into(imageView);
}
/**
* urlbitmap
*
* @param context
* @param url url
* @param maxWidth
* @param maxHeight
* @param call
*/
@Override
public void loadImageBitmap(@NonNull Context context, @NonNull String url, int maxWidth, int maxHeight, OnCallbackListener<Bitmap> call) {
if (!ActivityCompatHelper.assertValidRequest(context)) {
return;
}
Glide.with(context)
.asBitmap()
.override(maxWidth, maxHeight)
.load(url)
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
if (call != null) {
call.onCall(resource);
}
}
@Override
public void onLoadFailed(@Nullable Drawable errorDrawable) {
if (call != null) {
call.onCall(null);
}
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
}
/**
*
*
* @param context
* @param url
* @param imageView ImageView
*/
@Override
public void loadAlbumCover(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
if (!ActivityCompatHelper.assertValidRequest(context)) {
return;
}
Glide.with(context)
.asBitmap()
.load(url)
.override(180, 180)
.sizeMultiplier(0.5f)
.transform(new CenterCrop(), new RoundedCorners(8))
.placeholder(R.drawable.custom_rc_divider)
.into(imageView);
}
/**
*
*
* @param context
* @param url
* @param imageView ImageView
*/
@Override
public void loadGridImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
if (!ActivityCompatHelper.assertValidRequest(context)) {
return;
}
Glide.with(context)
.load(url)
.override(200, 200)
.centerCrop()
.placeholder(R.drawable.custom_rc_divider)
.into(imageView);
}
@Override
public void pauseRequests(Context context) {
Glide.with(context).pauseRequests();
}
@Override
public void resumeRequests(Context context) {
Glide.with(context).resumeRequests();
}
private GlideEngine() {
}
private static GlideEngine instance;
public static GlideEngine createGlideEngine() {
if (null == instance) {
synchronized (GlideEngine.class) {
if (null == instance) {
instance = new GlideEngine();
}
}
}
return instance;
}
}

@ -23,6 +23,15 @@ public class MyWatcher implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//当号码大于11位时显示按钮
if(s.length()>=11){
getVerificationCode.setEnabled(true);
//注册按钮
registerButton.setOnClickListener(loginActivity);
}
else {
getVerificationCode.setEnabled(false);
}
}

@ -71,6 +71,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/bt_getCode"
android:text="936760"
android:layout_gravity="center" />
</com.google.android.material.textfield.TextInputLayout>

@ -12,17 +12,17 @@
android:orientation="vertical"
android:padding="10dp">
<com.google.android.material.textfield.TextInputLayout
style="?attr/textInputFilledStyle"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:id="@+id/filledTextField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="商品描述">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_desc"
android:id="@+id/et_content"
android:gravity="start"
android:layout_width="match_parent"
android:layout_height="270dp"
android:layout_height="220dp"
/>
</com.google.android.material.textfield.TextInputLayout>
@ -33,16 +33,73 @@
android:background="@drawable/addimageiv"
android:layout_width="100dp"
android:layout_height="100dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_marginStart="8dp"
android:layout_weight="1"
android:drawablePadding="10dp"
android:textSize="18sp"
android:text="商品类型"
android:gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="50dp"/>
<EditText
android:id="@+id/et_goods_type"
android:layout_weight="1"
android:hint="类型"
android:inputType="numberDecimal"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_marginStart="8dp"
android:layout_weight="1"
android:drawablePadding="10dp"
android:textSize="18sp"
android:text="商品类型名称"
android:gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="50dp"/>
<EditText
android:id="@+id/et_goods_type_name"
android:layout_weight="1"
android:hint="商品类型名称"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_marginStart="8dp"
android:layout_weight="1"
android:drawablePadding="10dp"
android:textSize="18sp"
android:text="卖家所在地"
android:gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="50dp"/>
<EditText
android:id="@+id/et_addr"
android:layout_weight="1"
android:hint="所在地"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
<TextView
android:gravity="left|center_vertical"
android:paddingLeft="30dp"
android:drawablePadding="5dp"
android:id="@+id/btn_location"
android:text="货物地址"
android:textColor="#8c8c8c"
android:layout_width="200dp"
android:layout_height="30dp"/>
<LinearLayout
android:layout_width="match_parent"

Loading…
Cancel
Save