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;    }}

更多相关文章

  1. Android 通过WebView 调用Js sqlite数据库
  2. Android OkHttp3 上传多张图片
  3. Android中TextView中加图片,超链接,一部分字或者背景变色。不断补
  4. Android使用SQlite数据库
  5. flutter包名、应用名称、图标、启动图片修改
  6. Android内部数据库
  7. 通过xml布局文件实现按钮改变焦点设置背景图片
  8. [android] android下创建一个sqlite数据库

随机推荐

  1. android studio 降低项目版本错误,no reso
  2. 异常:java.lang.RuntimeException: Unable
  3. Logger android日志工具
  4. Android(安卓)Studio 报错集合解决方案
  5. 我的Android进阶之旅------>Android(安卓
  6. 2011.07.05——— android notifyDataSet
  7. android兼容2.2及以前版本的退出方法
  8. android 弹出选择框,简单通用弹出选择框
  9. Android图标靠界面的右边的实现
  10. android仿UC墨迹天气左右拖动效果