Android用kotlin修改一个图片编辑库做一个作业点评的功能

准备工作

  • github 找一个图片编辑器 地址,这个图就是对单个本地图片进行编辑,加载大图有问题,页面传递bitmap有问题
  • 目前已有功能:编辑一张本地图片
  • 想要效果:传入图片下载list,第一个页面要有图片切换效果,点击按钮对图片进行编辑,图片保存

优化

  • 首页直接glide加载图片,viewpager左右切换,对bitmap压缩防止过大导致页面崩溃
  • 点击进入编辑页的时候,对对应的图片进行下载,压缩,之后再编辑,跳转页面的时候传下载压缩后的路径,而不是传递bitmap
  • 因为编辑的时候是对本地图编辑,会有图片下载,保证本地相册不会过多下载图片

代码

首页传入图片集合,进行展示,对图片编辑需要申请权限

package me.minetsh.imaging

import android.Manifest
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.net.Uri

import android.os.Bundle
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v4.app.FragmentPagerAdapter
import android.support.v4.view.PagerAdapter
import android.support.v4.view.ViewPager
import android.support.v7.app.AppCompatActivity

import android.view.View
import android.view.ViewGroup
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ToastUtils
import com.htjy.app.common_util.ext.clickWithTrigger
import com.htjy.app.common_util.util.LuBanUtils

import com.tbruyelle.rxpermissions2.RxPermissions
import kotlinx.android.synthetic.main.image_activity_img_handle.*
import kotlinx.android.synthetic.main.image_edit_ready.*


/**
Func:点评的首页
# 老师点评图片不可超过9张,超过时不可再点击”红笔点评“按钮,点击提示:“点评图片不可超过9张”
# 点击老师点评的图片可继续点评,保存后替换原点评图片
# 点评跳转的是新页面-仿微信
# 点评不能左右翻动
# 点评的时候不传递bitmap,而是传递路径
 */
const val EDIT_IMG_REQUESTCODE = 1000

class IMGHandleActivity : AppCompatActivity() {
   

    private lateinit var dataList: ArrayList<String>  //数据源
    private var type: Int = 0   //0 是网络  1是本地

    //测试的网络数据
    private val testUrl = arrayListOf("https://animal-crossing.com/amiibo/assets/img/cards/NVL-C-MAAL-USZ-F0(0)011.png",
            "https://animal-crossing.com/amiibo/assets/img/cards/NVL-C-MAAM-USZ-F0(0)012.png"
            , "https://animal-crossing.com/amiibo/assets/img/cards/NVL-C-MAAA-USZ-F0(0)001.png",
            "https://animal-crossing.com/amiibo/assets/img/cards/NVL-C-MAAB-USZ-F0(0)002.png",
            "https://animal-crossing.com/amiibo/assets/img/cards/NVL-C-MAEC-USZ-F0(0)099.png",
            "https://animal-crossing.com/amiibo/assets/img/cards/NVL-C-MACD-USZ-F0(0)052.png",
            "https://animal-crossing.com/amiibo/assets/img/cards/NVL_C_MAGY_USZlow_167_R_ad.png",
            "https://animal-crossing.com/amiibo/assets/img/cards/NVL_C_MAHB_USZlow_170_R_ad.png",
            "https://animal-crossing.com/amiibo/assets/img/cards/NVL_C_MALZ_USZlow_264_R_ad.png")
    //测试的本地数据
    private var test = arrayListOf(
            "/storage/emulated/0/DCIM/Screenshots/Screenshot_2019-10-30-10-09-35-727_com.htjy.gardener.component_remark_teacher.png", "/storage/emulated/0/BesttimerCamera2/picture_1574761262840.jpg")


    override fun onCreate(savedInstanceState: Bundle?) {
   
        super.onCreate(savedInstanceState)
        setContentView(R.layout.image_activity_img_handle)
        //EventBus.getDefault().register(IMGHandleActivity@ this)
        initData()
        //initView()
    }


    override fun onDestroy() {
   
        super.onDestroy()
        //EventBus.getDefault().unregister(IMGHandleActivity@ this)
    }


    companion object {
   
        fun launch(from: Activity, data: ArrayList<String>, type: Int) {
   
            val intent = Intent(from, IMGHandleActivity::class.java)
            intent.putExtra("type", type)
            intent.putStringArrayListExtra("data", data)
            from.startActivityForResult(intent, EDIT_IMG_REQUESTCODE)
        }
    }


    private fun initData() {
   
        //dataList = testUrl
        dataList = intent.getStringArrayListExtra("data")
        type = intent.getIntExtra("type", 0)
        //申请读写权限
        //Singleton().test(arrayListOf("1","2","3"))
        RxPermissions(IMGHandleActivity@ this)
                .request(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE)
                .subscribe {
   
                    if (it) {
   
                        initView()
                    } else {
   
                        finish()
                    }
                }


    }


   

    private var currentPage = 0
    private val fragmentList = arrayListOf<ItemFragment>()
    private fun initView() {
   
        //获取Bitmap
        //val layoutInflater = LayoutInflater.from(IMGHandleActivity@ this)

        for (value in dataList) {
   
            fragmentList.add(ItemFragment.launch(value))
        }

        val adapter = MyItemFragmentPagerAdapter(supportFragmentManager, fragmentList)
        vp_images.adapter = adapter
        vp_images.offscreenPageLimit = dataList.size
        tv_count.text = "${
     currentPage + 1}/${
     dataList.size}"
        vp_images.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
   
            override fun onPageScrollStateChanged(state: Int) {
   

            }

            override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
   

            }

            override fun onPageSelected(position: Int) {
   
                currentPage = position
                tv_count.text = "${
     currentPage + 1}/${
     dataList.size}"
            }
        })

        /**
         * 点评:如果是网络图片必须要先下载才能进入点评,步骤为:下载,copy,压缩
         */
        btn_dianping.clickWithTrigger {
   

            when (type) {
   
                0 -> {
   
                    LuBanUtils.loadPicFromNet(dataList[currentPage], IMGHandleActivity@ this) {
    isSuccess, path ->
                        if (isSuccess) {
   
                            IMGEditActivity.launch(path, this@IMGHandleActivity)
                        }
                    }
                }
                1 -> {
   
                    LuBanUtils.loadPicFromLocal(dataList[currentPage], IMGHandleActivity@ this) {
    isSuccess, path ->
                        if (isSuccess) {
   
                            IMGEditActivity.launch(path, this@IMGHandleActivity)
                        }
                    }
                }
            }

        }

        btn_save.clickWithTrigger {
   
            //保存
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值