Android问题为什么我设置不上背景

jaoiu 发布于 2015/10/10 11:11
阅读 278
收藏 0

在第436行我跳转成功后背景页面没有变化,请大家指点一下这是怎么回事,我是个新手最好指明在那修改.谢谢大家了


public class ReplaceBackgroundActivity extends BaseActivity implements OnClickListener {
    private static final int LOCAL = 0001;
    private static final int CAMERA = 0002;
    private static final int REQUEST_CUT = 0003;
    private GridView grid_background;
    private List<Bitmap> bitmapList;
    private List<String> urlList;
    private BackGroundList backGround;
    public static String IMAGE_CACHE_PATH = "imageloader/Cache";
    private File tempFile;
    private int width;
    private int height;
    private Dialog dialog;
    private Bitmap photo;
    private MyAdapter adapter;
    private File dir;
    private ImageView iv_add;
    private ImageView iv_detele;
    private int currentPress;
    private ImageView iv_back;
    private ImageView background_dot;
    private ImageLoader mImageLoader;
    private DisplayImageOptions options;
    private int selectPos;
    private View view;
    private boolean  isSelectAct = false;
    @Override
    protected void onCreate(Bundle saveInstance) {
        super.onCreate(saveInstance);
        setContentView(R.layout.activity_replace_background);
        initImageLoader();
        getImageUrl();
        
    }

    private void initSize() {
        width = getWindowManager().getDefaultDisplay().getWidth();
        height = getWindowManager().getDefaultDisplay().getHeight();
    }

    private void initList() {
        bitmapList = new ArrayList<Bitmap>();
        urlList = new ArrayList<String>();
        dir = new File(Environment.getExternalStorageDirectory() + "/background");
        if (!dir.exists()) {
            dir.mkdir();
                }else{
    
        }
        File[] listFiles = dir.listFiles();
        for (File file : listFiles) {
            urlList.add(file.getAbsolutePath());
        }
        if(backGround!=null){
            for(int i=0;i<backGround.getSystemBgImgList().size();i++){
                urlList.add(backGround.getSystemBgImgList().get(i).getImgUrl());
            }
        }
        Bitmap add_bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.add_photo);
        Bitmap default_bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.start_bj);
        bitmapList.add(add_bitmap);
        bitmapList.add(default_bitmap1);
        initBitmapList();
    }

    private void initBitmapList() {
        if (urlList.size() != 0) {
            for (int i = 0; i < urlList.size(); i++) {
                Bitmap bitmap = BitmapFactory.decodeFile(urlList.get(i));
                bitmapList.add(bitmap);
            }
        }
    }
    private void initView() {
        iv_add = (ImageView) findViewById(R.id.iv_add);
        iv_detele = (ImageView) findViewById(R.id.iv_detele);
        iv_add.setBackgroundResource(R.drawable.choose);
        iv_detele.setBackgroundResource(R.drawable.delete);
        iv_add.setOnClickListener(this);
        iv_detele.setOnClickListener(this);
        iv_back = (ImageView) findViewById(R.id.iv_common_back);
        iv_back.setOnClickListener(this);
        File dir1 = new File(Environment.getExternalStorageDirectory() + "/picture");
        if (!dir1.exists()) {
            dir1.mkdir();
        }
        tempFile = new File(dir1, getPhotoFileName());
        adapter = new MyAdapter();
        grid_background = (GridView) findViewById(R.id.grid_background);
        grid_background.setAdapter(adapter);
        adapter.notifyDataSetChanged();
        grid_background.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if (position == 0) {
                    showHeardDialog();

                    return;
                }

                if (position>1) {
                    String url = urlList.get(position-2);
                    if (url.indexOf("http")!=-1 ) {
                        iv_add.setVisibility(View.VISIBLE);
                        // iv_background_layout.setBackgroundResource(R.color.red);
                        adapter.notifyDataSetChanged();
                    } else{
                        iv_add.setVisibility(View.VISIBLE);
                        iv_detele.setVisibility(View.VISIBLE);
                        // iv_background_layout.setBackgroundResource(R.color.red);
                        adapter.notifyDataSetChanged();
                    }
                }
                adapter.setSeclection(position);
                currentPress = position;
            }
        });
    }

    private String getPhotoFileName() {
        Date date = new Date(System.currentTimeMillis());
        SimpleDateFormat dateFormat = new SimpleDateFormat("'IMG'_yyyyMMdd_HHmmss");
        return dateFormat.format(date) + ".png";
    }

    /**
     * 设置Dialog
     */
    private void showHeardDialog() {
        final AlertDialog dialog=new AlertDialog.Builder(ReplaceBackgroundActivity.this).create();
        dialog.show();
        Window window=dialog.getWindow();
        window.setGravity(Gravity.BOTTOM);
        window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        View view=View.inflate(this, R.layout.jifen_yule_dialog, null);
        
        TextView tv_play_game=(TextView) view.findViewById(R.id.tv_play_game);
        TextView tv_buy_product=(TextView) view.findViewById(R.id.tv_buy_product);
        TextView tv_cancel=(TextView) view.findViewById(R.id.tv_cancel);
        tv_play_game.setText("从相册里选择照片");
        tv_buy_product.setText("现在就拍一张");
        tv_cancel.setText("取消");
        tv_play_game.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_PICK);
                intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
                startActivityForResult(intent, LOCAL);
                dialog.dismiss();
            }
        });
        tv_buy_product.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                Uri uri = Uri.fromFile(tempFile);
                camera.putExtra(MediaStore.EXTRA_OUTPUT, uri);
                startActivityForResult(camera, CAMERA);
                dialog.dismiss();
            }
        });
        tv_cancel.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        dialog.setContentView(view);
    }

    /**
     * GridView适配
     *
     * @author a
     *
     */
    class MyAdapter extends BaseAdapter {
        int clickTemp = -1;

        public void setSeclection(int position) {
            clickTemp = position;
            }
        @Override
        public int getCount() {
            return bitmapList.size();
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if(convertView==null){
                view=View.inflate(ReplaceBackgroundActivity.this, R.layout.background_item, null);
                convertView=view;
            }
            ImageView iv_background = (ImageView) convertView.findViewById(R.id.iv_background);
            background_dot=(ImageView) convertView.findViewById(R.id.background_dot);
            if (position == 0) {
                iv_background.setScaleType(ScaleType.FIT_CENTER);
                iv_background.setPadding(100, 25, 100, 30);
                iv_background.setImageBitmap(bitmapList.get(0));
                background_dot.setVisibility(View.GONE);
                // iv_background.setPadding(left, top, right, bottom);
            }else if(position==1){
                iv_background.setImageBitmap(bitmapList.get(position));
                iv_background.setScaleType(ScaleType.FIT_XY);
                iv_background.setPadding(1, 1, 1, 1);
                background_dot.setVisibility(View.GONE);
            }
            else {
                String url = urlList.get(position-2);
                if(url.indexOf("http")!=-1){
                    if(mImageLoader.getDiscCache().get(url)!=null){
                        background_dot.setVisibility(View.GONE);
                    }
                    mImageLoader.displayImage(url,iv_background,options);
                    iv_background.setScaleType(ScaleType.FIT_XY);
                    iv_background.setPadding(1, 1, 1, 1);
                }else{

                    Bitmap bm = BitmapFactory.decodeFile(url);
                    iv_background.setImageBitmap(bm);
                    iv_background.setScaleType(ScaleType.FIT_XY);
                    iv_background.setPadding(1, 1, 1, 1);
                    background_dot.setVisibility(View.GONE);
                }
            }
            if (clickTemp == position) {
                convertView.setBackgroundResource(R.drawable.gridview_shape);
                background_dot.setVisibility(View.GONE);
            } else {
                convertView.setBackgroundResource(R.drawable.gridview_shape2);
                }
            if (clickTemp == 1) {
                iv_detele.setVisibility(View.GONE);
            }else{
                iv_detele.setVisibility(View.VISIBLE);
                
            }
            return convertView;
        }

    }
    private void initImageLoader() {
        mImageLoader = ImageLoader.getInstance();
        options = new DisplayImageOptions.Builder().showStubImage(R.drawable.hotel_rooms_list_x)
                .showImageForEmptyUri(R.drawable.hotel_rooms_list_x).showImageOnFail(R.drawable.hotel_rooms_list_x)
                .cacheInMemory(true).cacheOnDisc(true).bitmapConfig(Bitmap.Config.RGB_565)
                .imageScaleType(ImageScaleType.EXACTLY).build();

        File cacheDir = com.nostra13.universalimageloader.utils.StorageUtils.getOwnCacheDirectory(ReplaceBackgroundActivity.this,
                IMAGE_CACHE_PATH);

        DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisc(true)
                .build();

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(ReplaceBackgroundActivity.this)
                .defaultDisplayImageOptions(defaultOptions).memoryCache(new LruMemoryCache(12 * 1024 * 1024))
                .memoryCacheSize(12 * 1024 * 1024).discCacheSize(32 * 1024 * 1024).discCacheFileCount(100)
                .discCache(new UnlimitedDiscCache(cacheDir)).threadPriority(Thread.NORM_PRIORITY - 2)
                .tasksProcessingOrder(QueueProcessingType.LIFO).build();

        mImageLoader.init(config);
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.ll_camera:
            dialog.dismiss();
            Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE, null);
            camera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));
            startActivityForResult(camera, CAMERA);
            break;
        case R.id.ll_photo:
            dialog.dismiss();
            Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
            startActivityForResult(intent, LOCAL);
            break;
        case R.id.btn_ok:
            toast("更多精彩\n    敬请期待...");
            break;
        case R.id.btn_cancel:
            dialog.dismiss();
            break;
        case R.id.iv_add:
            // 设置背景
            if (currentPress == 1) {
                memberState.setBackgroundUrl(null);
            } else {
                memberState.setBackgroundUrl(urlList.get(currentPress));
            
            }
            memberState.setCurrentIndex(currentPress);
            iv_detele.setVisibility(View.GONE);
            iv_add.setVisibility(View.GONE);
            Intent intent2 = new Intent(this, MainActivityDemo.class);
            startActivity(intent2);
            adapter.notifyDataSetChanged();
            break;
        case R.id.iv_detele:
            // 删除背景
            if (currentPress == memberState.getCurrentIndex()) {
                memberState.setBackgroundUrl(null);
                File file = new File(urlList.get(currentPress-2));
                file.delete();
                urlList.remove(currentPress - 2);
                bitmapList.remove(currentPress);
            } else {
                File file = new File(urlList.get(currentPress-2));
                file.delete();
                urlList.remove(currentPress - 2);
                bitmapList.remove(currentPress);
            }
            background_dot.setVisibility(View.VISIBLE);
            toast("删除成功");
            adapter.notifyDataSetChanged();
            break;
        case R.id.iv_common_back:
            finish();
            break;
        }
    }

    private Uri uritempFile = null;
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == LOCAL) {
            if (data != null) {
                Intent intent = new Intent("com.android.camera.action.CROP");
                intent.setDataAndType(data.getData(), "image/*");
                // crop为true是设置在开启的intent中设置显示的view可以剪裁
                intent.putExtra("crop", "true");
                // aspectX aspectY 是宽高的比例
                intent.putExtra("aspectX", width);
                intent.putExtra("aspectY", height);
                // outputX,outputY 是剪裁图片的宽高
                intent.putExtra("outputX", (int)(width * 0.7));
                intent.putExtra("outputY", (int)(height * 0.7));

                uritempFile = Uri.parse("file://" + "/" + Environment.getExternalStorageDirectory().getPath() + "/" + System.currentTimeMillis

()+".jpg");  
                intent.putExtra(MediaStore.EXTRA_OUTPUT, uritempFile);  
                intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
                startActivityForResult(intent, REQUEST_CUT);
            }
        }
        if (requestCode == CAMERA) {
            Bitmap cameraBitmap = SystemUtils.getBitapFromUri(getApplicationContext(), Uri.fromFile(tempFile));
            if (null != cameraBitmap) {
                narrowPhoto(Uri.fromFile(tempFile), cameraBitmap.getWidth() / 10);
            }
            cameraBitmap.recycle();
            cameraBitmap = null;

        }
        if (requestCode == REQUEST_CUT && data != null) {
            // 设置背景
            try {
                if(null != uritempFile){
                    photo = BitmapFactory.decodeStream(getContentResolver().openInputStream(uritempFile));
                    if (photo != null) {
                        bitmapList.add(photo);
                        adapter.notifyDataSetChanged();
                        saveBitmap(photo);
                        memberState.saveListSize(bitmapList.size());
                    }
                    new File(uritempFile.getPath()).delete();
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
    }

    private void saveBitmap(Bitmap bitmap) {
        FileOutputStream byteArrayOutputStream;
        try {
            File f = new File(dir, getPhotoFileName());
            byteArrayOutputStream = new FileOutputStream(f);
            if (null != bitmap) {
                urlList.add(f.getAbsolutePath());
                bitmap.compress(CompressFormat.PNG, 100, byteArrayOutputStream);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }

    private void narrowPhoto(Uri fromFile, int i) {
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(fromFile, "image/*");
        // crop为true是设置在开启的intent中设置显示的view可以剪裁
        intent.putExtra("crop", "true");
        // aspectX aspectY 是宽高的比例
        intent.putExtra("aspectX", width);
        intent.putExtra("aspectY", height);
        // // outputX,outputY 是剪裁图片的宽高
        intent.putExtra("outputX", (int)(width * 0.7));
        intent.putExtra("outputY", (int)(height * 0.7));

        uritempFile = Uri.parse("file://" + "/" + Environment.getExternalStorageDirectory().getPath() + "/" + System.currentTimeMillis()+".jpg");  
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uritempFile);  
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        startActivityForResult(intent, REQUEST_CUT);
    }
    private void getImageUrl(){
        String url=MemberServerConfig.SEARCHBACKGROUNDIMGS;
        PCRequestParams requestParams = new PCRequestParams(this);
        requestParams.addBodyParameter("memberId", AppData.memberId);
        requestParams.addBodyParameter("sign",globalUtils.requestParams2EncryptString(requestParams));
        RequestCallBack<String> callback = new RequestCallBack<String>() {
            
            @Override
            public void onStart() {
                super.onStart();
            }
            @Override
            public void onFailure(HttpException arg0, String arg1) {
                // TODO Auto-generated method stub
                LogUtils.e("arg0.resul1t");
                toast("网络连接失败,请检查网络问题");
                initList();
                initView();    
                initSize();
            }
           
            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                // TODO Auto-generated method stub
                MemberResponse responseBase = JsonUtil.json2RB(arg0.result, "SEARCHIMAGES");
                if(responseBase.operationValid()){
                    backGround=(BackGroundList) responseBase.get("backGround");
                    if(backGround!=null){
                        initList();
                        initView();    
                        initSize();
                    }
                }
            }
        };
        sendHttpPost(url, requestParams,callback);
    }
     private void toast(String msg){
         ShowToast.show(msg,ReplaceBackgroundActivity.this);
     }
}

加载中
返回顶部
顶部