android仿QQ長按圖片顯示刪除角標,選擇刪除圖片例子

來源:互聯網
上載者:User

在多圖片上傳的時候我們通常會選擇很多圖片,然後我們可以長按其中的某一個圖片,這時候所有的圖片都會顯示一個刪除的角標,我們點擊其中的某一個就可以刪除不要的圖片,效果圖:

 

代碼很容易看懂,直接貼上來:

package zm.imageview;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.List;


public class MainActivity extends Activity {
    private boolean isShowDelete = false;
    private GridView gv;
    private GridViewAdapter mGridAdapter;
    private List<AreaEntity> areaEneities = new ArrayList<AreaEntity>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gv = (GridView) findViewById(R.id.gv);
        for (int i = 0; i < 10; i++) {
            AreaEntity areaEntity = new AreaEntity(i + "", "http://img.tuku.cn/file_big/201504/024448d7ae994d4d9273ea5f3c199a5a.jpg", "風景" + i);
            areaEneities.add(areaEntity);
        }
        mGridAdapter = new GridViewAdapter(areaEneities, MainActivity.this);
        gv.setAdapter(mGridAdapter);
        gv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                if (isShowDelete) {
                    isShowDelete = false;
                } else {
                    isShowDelete = true;
                }
                mGridAdapter.setIsShowDelete(isShowDelete);
                return true;
            }
        });
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        if (isShowDelete == true) {
            isShowDelete = false;
            mGridAdapter.setIsShowDelete(false);
        } else {
            finish();
        }
    }

    class GridViewAdapter extends BaseAdapter {
        private boolean isShowDelete;//根據這個布爾型變數來判斷是否顯示刪除表徵圖,true是顯示,false是不顯示
        private List<AreaEntity> areaEneity;
        private LayoutInflater mInflater;
        private Context mContext;

        public GridViewAdapter(List<AreaEntity> areaEneities, Context context) {
            super();
            this.areaEneity = areaEneities;
            this.mInflater = LayoutInflater.from(context);
            this.mContext = context;
        }

        public void setIsShowDelete(boolean isShowDelete) {
            this.isShowDelete = isShowDelete;
            notifyDataSetChanged();
        }

        @Override
        public int getCount() {
            return areaEneity.size();
        }

        @Override
        public Object getItem(int position) {
            return areaEneity.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {

            ViewHolder holder;
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.fragmet_grid_item, null);
                holder = new ViewHolder();
                holder.img = (ImageView) convertView.findViewById(R.id.img);
                holder.name_tv = (TextView) convertView.findViewById(R.id.name_tv);
                holder.deleteView = convertView.findViewById(R.id.delete_markView);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            Picasso.with(mContext).load(areaEneity.get(position).getPic()).into(holder.img);
            holder.name_tv.setText(areaEneity.get(position).getArea());
            holder.deleteView.setVisibility(isShowDelete ? View.VISIBLE : View.GONE);
            holder.deleteView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(mContext, "您刪除了第" + areaEneity.get(position).getId() + "張", Toast.LENGTH_SHORT).show();
                    areaEneity.remove(areaEneity.get(position));
                    notifyDataSetChanged();
                }
            });
            return convertView;
        }

        class ViewHolder {
            private View deleteView;
            private ImageView img;
            private TextView name_tv;
        }
    }

    class AreaEntity {
        private String id;
        private String pic;
        private String area;

        public AreaEntity(String id, String pic, String area) {
            this.id = id;
            this.pic = pic;
            this.area = area;
        }

        public String getPic() {
            return pic;
        }

        public void setPic(String pic) {
            this.pic = pic;
        }

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getArea() {
            return area;
        }

        public void setArea(String area) {
            this.area = area;
        }
    }
}

這裡面我顯示的圖片是從網上隨便選的一張,載入架構用的是picasso,用Android Studio開發的開發人員直接在dependencies裡面引入一行代碼即可:

compile 'com.squareup.picasso:picasso:2.5.2'

同時別忘了加上網路許可權

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
好的,功能實現。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.