zoukankan      html  css  js  c++  java
  • android imageswitcher gallery 根据数据库内图片名字进行查看/删除

    layout/imageswitch.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <ImageSwitcher
            android:id="@+id/arc_hf_img_switcher"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true" />
    
        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:gravity="center" >
    
            <Gallery
                android:id="@+id/arc_hf_img_gallery"
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:background="#55000000"
                android:gravity="center_vertical"
                android:spacing="16dp" />
    
            <Button
                android:id="@+id/arc_hf_img_btnDel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="30dp"
                android:text="@string/arc_hf_img_btnDel" />
    
            <Button
                android:id="@+id/arc_hf_img_btnBack"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="30dp"
                android:text="@string/arc_hf_img_btnBack" />
        </LinearLayout>
    
    </RelativeLayout>

    ImgSwitch.java

    public class ImgSwitch extends Activity implements OnItemSelectedListener,
            ViewFactory {
        private final String DATABASE_PATH = Environment
                .getExternalStorageDirectory().getAbsolutePath() + "/hfdatabase";
        private final String DATABASE_FILENAME = "hf_database.db";
        private final String TABLE_NAME = "HF_IMG_THEME";
        private final String strImgPath = Environment.getExternalStorageDirectory()
                .toString() + "/dlion/";// 存放照片的文件夹
        private SQLiteDatabase db;
        private ImageSwitcher is;
        private Gallery gallery;
        private Bitmap[] bitmaps;
        private int[] _ids;
        private String[] imgNames;
        private int parentId;
        public int gPosition = 0;
        private int isPosition = 0;
        private Button btnDel;
        private Button btnBack;
    
        // 返回键监听,添加关闭数据库功能。
        public void onBackPressed() {
            super.onBackPressed();
            db.close();
            finish();
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.imageswitch);
            db = openDatabase();
            parentId = this.getIntent().getIntExtra("parentId", 0);
    
            gallery = (Gallery) findViewById(R.id.arc_hf_img_gallery);
            is = (ImageSwitcher) findViewById(R.id.arc_hf_img_switcher);
            is.setFactory(this);
    
            is.setInAnimation(AnimationUtils.loadAnimation(this,
                    android.R.anim.fade_in));
            is.setOutAnimation(AnimationUtils.loadAnimation(this,
                    android.R.anim.fade_out));
    
            btnDel = (Button) findViewById(R.id.arc_hf_img_btnDel);
            btnBack = (Button) findViewById(R.id.arc_hf_img_btnBack);
            btnDel.setOnClickListener(new btnListener());
            btnBack.setOnClickListener(new btnListener());
    
            initImgs();
        }
    
        // 按键监听
        class btnListener implements OnClickListener {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                switch (v.getId()) {
                case R.id.arc_hf_img_btnBack:
                    db.close();
                    finish();
                    break;
                case R.id.arc_hf_img_btnDel:
                    db.delete(TABLE_NAME, "_id=" + _ids[gPosition], null);
                    File file = new File(imgNames[gPosition]);
                    file.delete();
                    Toast.makeText(ImgSwitch.this, imgNames[gPosition] + "删除成功",
                            Toast.LENGTH_SHORT).show();
                    initImgs();
                    break;
                default:
                    break;
                }
            }
    
        }
    
        // 初始化图片视图
        private void initImgs() {
            Cursor cursorImgName = db.query(TABLE_NAME, null, "parentId = "
                    + parentId, null, null, null, null);
            bitmaps = new Bitmap[cursorImgName.getCount()];
            imgNames = new String[cursorImgName.getCount()];
            _ids = new int[cursorImgName.getCount()];
    
            // 优化内存
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize = 20;
            for (int i = 0; i < cursorImgName.getCount(); i++) {
                cursorImgName.moveToNext();
                
                // 保存图片组名字、ID、完整路径
                imgNames[i] = strImgPath
                        + cursorImgName.getString(cursorImgName
                                .getColumnIndex("imgName"));
                _ids[i] = cursorImgName.getInt(cursorImgName.getColumnIndex("_id"));
                bitmaps[i] = BitmapFactory.decodeFile(imgNames[i], options);
            }
            gallery.setAdapter(new ImageAdapter(this));
            gallery.setOnItemSelectedListener(this);
            if (gPosition == cursorImgName.getCount()
                    && cursorImgName.getCount() >= 1) {
                is.setImageURI(Uri.parse(imgNames[isPosition - 1]));
            } else if (cursorImgName.getCount() == 0) { // 没有图片时,取消删除键监听
                btnDel.setEnabled(false);
            }
        }
    
        @Override
        public View makeView() {
            // TODO Auto-generated method stub
            ImageView i = new ImageView(this);
            i.setBackgroundColor(0xFF000000);
            i.setScaleType(ImageView.ScaleType.FIT_CENTER);
            i.setLayoutParams(new ImageSwitcher.LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
            return i;
        }
    
        // 覆写baseadapter类
        public class ImageAdapter extends BaseAdapter {
            private Context mContext;
    
            public ImageAdapter(Context c) {
                mContext = c;
            }
    
            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return bitmaps.length;
            }
    
            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return position;
            }
    
            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return position;
            }
    
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                gPosition = position;
                ImageView i = new ImageView(mContext);
    
                i.setImageBitmap(bitmaps[position]);
                i.setAdjustViewBounds(true);
                i.setLayoutParams(new Gallery.LayoutParams(
                        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                return i;
            }
        }
    
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            isPosition = arg2;
            is.setImageURI(Uri.parse(imgNames[arg2]));
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
    
        }
    
        // 初始化数据库
        private SQLiteDatabase openDatabase() {
            try {
                String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
                File dir = new File(DATABASE_PATH);
                if (!dir.exists())
                    dir.mkdir();
    
                if (!(new File(databaseFilename)).exists()) {
                    InputStream is = getResources().openRawResource(
                            R.raw.hf_database);
                    FileOutputStream fos = new FileOutputStream(databaseFilename);
                    byte[] buffer = new byte[8192];
                    int count = 0;
                    // 开始复制hf_database.db文件
                    while ((count = is.read(buffer)) > 0) {
                        fos.write(buffer, 0, count);
                    }
                }
    
                db = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);
                return db;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
    }
  • 相关阅读:
    面向机器学习的特征工程
    卷积可视化,图像理解,deepdream,风格迁移
    损失函数
    开源是如何支撑区块链技术发展的
    揭秘机密计算:弥补最后一个入侵 “漏洞”
    什么是超大规模数据中心?
    比特币是避险资产还是储备资产?
    区块链技术生态持续优化,五大趋势不容忽视
    物联网低功耗广域网(LPWAN)的比较
    碎片化是物联网快速发展的阻碍,也是机会
  • 原文地址:https://www.cnblogs.com/oldfeel/p/2474736.html
Copyright © 2011-2022 走看看