xml布局
<HorizontalScrollView android:layout_width="match_parent" android:layout_height="wrap_content" android:scrollbars="none"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="4dp"> <LinearLayout android:id="@+id/ll_contain" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="match_parent" /> <ImageButton android:id="@+id/ib_add_photo" android:layout_width="78dp" android:layout_height="78dp" android:layout_marginTop="8dp" android:src="@drawable/icon_coffee_photograph" android:background="#f2f2f2" /> </LinearLayout> </HorizontalScrollView>
activity代码
package com.example.thinkpad.shop.activity.shop; import android.Manifest; import android.app.Activity; import android.app.Dialog; import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.provider.DocumentsContract; import android.provider.MediaStore; import androidx.annotation.Nullable; import androidx.core.app.ActivityCompat; import androidx.recyclerview.widget.RecyclerView; import android.text.TextUtils; import android.util.Base64; import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.Adapter; import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; import com.donkingliang.imageselector.utils.ImageSelector; import com.example.thinkpad.shop.activity.BaseActivity; import com.example.thinkpad.shop.adapter.ImageAdapter; import com.example.thinkpad.shop.ui.DeleteImageView; import com.example.thinkpad.shop.ui.SelfDialog; import jp.wasabeef.richeditor.RichEditor; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.example.thinkpad.shop.R; import com.example.thinkpad.shop.utils.Constants; /** * 发布物品 */ public class GoodsReleaseActivity extends BaseActivity implements View.OnClickListener { private ArrayList<String> arr = new ArrayList<String>(); private ArrayList<String> arrPath = new ArrayList<String>(); private Bitmap mBitmap; private File tempFile; private static final String PHOTO_FILE_NAME = "temp_photo.jpg"; private ImageView iv_iamge; private static final int CROP_SMALL_PICTURE = 0; /*** * 使用照相机拍照获取图片 */ public static final int SELECT_PIC_BY_TACK_PHOTO = 1; /*** * 使用相册中的图片 */ public static final int SELECT_PIC_BY_PICK_PHOTO = 2; /*** * 从Intent获取图片路径的KEY */ public static final String KEY_PHOTO_PATH = "photo_path"; /** * 获取到的图片路径 */ private String picPath; private Intent lastIntent; private Uri photoUri; private Uri tmpUri; private static final String TAG = "SelectPicActivity"; /** * 选择文件 */ public static final int TO_SELECT_PHOTO = 3; private ImageView imageView; private ListView lv_list1; private ListView lv_list2; private ListView lv_list3; private TextView lv_listName1; private TextView lv_listName2; private TextView lv_listName3; private TextView catId1; private TextView catId2; private TextView catId3; private TextView goodsCatId1; private TextView goodsCatId2; private TextView goodsCatId3; private Button btn_photo; private Button btn_picture; private Button btn_cancel; private ImageView mImageSelect; private RichEditor mEditor; private TextView mPreview; //调用系统相册-选择图片 private static final int IMAGE = 3; String[] mPermissionList = new String[]{ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}; private ImageView mIvReturn; private SelfDialog selfDialog; private EditText mEditText; private Dialog mSelectDialog; private Dialog mUploadDialog; private Context context; public List<Map<String, Object>> list = new ArrayList<>(); public List<Map<String, Object>> list2 = new ArrayList<>(); public List<Map<String, Object>> list3 = new ArrayList<>(); private String path = ""; private String dataId; private ArrayList<String> defaultDataArray; private String imgString = ""; private int maxImgCount = 5; //允许选择图片最大数 // private CommitsAdapter adapter; private ImageAdapter mAdapter; private RecyclerView rvImage; private TextView tv_save; private String userName; private String password; private String mobile; private String shopId; private ImageButton mIbAddPhoto; private LinearLayout mLlContain; private int size = 0; private Map<String, String> map; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_release_goods); iv_iamge = (ImageView) findViewById(R.id.iv_image); /* rvImage = findViewById(R.id.rv_image); LinearLayoutManager layoutManager = new LinearLayoutManager(this); layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); rvImage.setLayoutManager(layoutManager); mAdapter = new ImageAdapter(this); rvImage.setAdapter(mAdapter);*/ mIvReturn = findViewById(R.id.iv_return); mIvReturn.setOnClickListener(this); mEditText = findViewById(R.id.et_category); mEditText.setFocusable(false);//让EditText失去焦点,然后获取点击事件 mEditText.setOnClickListener(this); /* mImageSelect = findViewById(R.id.image_select); mImageSelect.setOnClickListener(this);*/ initView(); initEditor(); //1.查询登录会员信息 SharedPreferences sp = this.getSharedPreferences("userInfo", Context.MODE_PRIVATE); userName = sp.getString("l_loginSecret", ""); //安全码 password = sp.getString("l_password", ""); mobile = sp.getString("l_userPhone", ""); //2.根据安全码查询商家账号是否存在 l_loginSecret- userName //3.查询店铺信息 Log.e("userName", userName); isShopExist(); } private void isShopExist() { String url = Constants.BASEURL + "/app/shop/isExist"; OkHttpClient okhttp = new OkHttpClient(); //创建请求体 FormBody formBody = new FormBody.Builder() .add("userName", userName) .build(); Request request = new Request.Builder() .url(url) .post(formBody) .build(); Call call = okhttp.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { // Log.i("mydate" , "失败"); } @Override public void onResponse(Call call, Response response) throws IOException { //此方法运行在子线程中,不能在此方法中进行UI操作。 String responseData = response.body().string(); Log.e("店铺信息", responseData); parsJson(responseData); } }); } private void parsJson(String jsonData) { try { JSONObject jsonObject = new JSONObject(jsonData); JSONObject data = jsonObject.optJSONObject("data"); boolean isSuccess = jsonObject.optBoolean("success"); String msg = jsonObject.optString("msg"); if (isSuccess == true) { shopId = data.optString("shopId"); SharedPreferences sp = getSharedPreferences("shopInfo", MODE_PRIVATE); //获取一个编辑器,记住用户名、密码、 SharedPreferences.Editor editor = sp.edit(); //用编辑器将l_userName和l_userPhone放入userInfo.xml中 editor.putString("shopId", data.optString("shopId")); editor.commit(); // Looper.prepare(); // Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); // Looper.loop(); } else { Looper.prepare(); Toast.makeText(this, "网络异常", Toast.LENGTH_SHORT).show(); Looper.loop(); } } catch (JSONException e) { e.printStackTrace(); } } private void initView() { goodsCatId1 = findViewById(R.id.goodsCatId1); goodsCatId2 = findViewById(R.id.goodsCatId2); goodsCatId3 = findViewById(R.id.goodsCatId3); tv_save = findViewById(R.id.tv_save); tv_save.setOnClickListener(this); mIbAddPhoto = findViewById(R.id.ib_add_photo); mLlContain = findViewById(R.id.ll_contain); mIbAddPhoto.setOnClickListener(this); mIbAddPhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (size >= 5) { Toast.makeText(GoodsReleaseActivity.this, "最多只能上传五张图片", Toast.LENGTH_SHORT).show(); return; } Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, 0); size++; } }); } private void initEditor() { /** * 第一种 */ // mEditor.disableEdit(); /** * */ /**/ mEditor = (RichEditor) findViewById(R.id.editor); //初始化编辑高度 mEditor.setEditorHeight(200); //初始化字体大小 mEditor.setEditorFontSize(14); //初始化字体颜色 mEditor.setEditorFontColor(Color.BLACK); //mEditor.setEditorBackgroundColor(Color.BLUE); //初始化内边距 mEditor.setPadding(10, 10, 10, 10); //设置编辑框背景,可以是网络图片 //mEditor.setBackground("https://raw.githubusercontent.com/wasabeef/art/master/chip.jpg"); mEditor.setBackgroundColor(Color.WHITE); //mEditor.setBackgroundResource(R.drawable.back); //设置默认显示语句 mEditor.setPlaceholder("请输入描述"); //设置编辑器是否可用 mEditor.setInputEnabled(true); mPreview = (TextView) findViewById(R.id.preview); mEditor.setOnTextChangeListener(new RichEditor.OnTextChangeListener() { @Override public void onTextChange(String text) { mPreview.setText(text); } }); /** * 撤销当前标签状态下所有内容 */ findViewById(R.id.action_undo).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditor.undo(); } }); /** * 恢复撤销的内容 */ findViewById(R.id.action_redo).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditor.redo(); } }); /** * 加粗 */ findViewById(R.id.action_bold).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditor.focusEditor(); mEditor.setBold(); } }); /** * 斜体 */ findViewById(R.id.action_italic).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditor.focusEditor(); mEditor.setItalic(); } }); /** * 下角表 */ findViewById(R.id.action_subscript).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditor.focusEditor(); if (mEditor.getHtml() == null) { return; } mEditor.setSubscript(); } }); /** * 上角标 */ findViewById(R.id.action_superscript).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditor.focusEditor(); if (mEditor.getHtml() == null) { return; } mEditor.setSuperscript(); } }); /** * 删除线 */ findViewById(R.id.action_strikethrough).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditor.focusEditor(); mEditor.setStrikeThrough(); } }); /** *下划线 */ findViewById(R.id.action_underline).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditor.focusEditor(); mEditor.setUnderline(); } }); /** * 设置标题(1到6) */ findViewById(R.id.action_heading1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditor.setHeading(1); } }); findViewById(R.id.action_heading2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditor.setHeading(2); } }); findViewById(R.id.action_heading3).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditor.setHeading(3); } }); findViewById(R.id.action_heading4).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditor.setHeading(4); } }); findViewById(R.id.action_heading5).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditor.setHeading(5); } }); findViewById(R.id.action_heading6).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {