无法解析R符号和方法

时间:2018-09-10 03:18:55

标签: java android eclipse android-studio crop

该项目以前是在eclipse中构建的,能够平稳运行。现在,我已将其导入android studio中,这给了我一些错误。我试图为我的项目清理,重建,使缓存无效/重新启动并与Gradle文件同步。但是,这些都不对我有用。我的MainActivity.java中的代码“ cropImageView.getEdge()”和“ cropImageView.getCircleData()”也出现了错误。我不确定裁纸器库是否有问题。有人知道怎么了吗?

This is the error I have gotten

我的MainActivity.java:

public class MainActivity extends AppCompatActivity {

static Uri outPutfileUri;
public String filepath = "";
public static CropImageView cropImageView;
public static final int CAMERA_IMAGE =2;
public static final int GALLERY_CHOOSER_INTENT = 3;
public static final int GALLERY_KITKAT_INTENT_CALLED= 4;
public static Bitmap activeBmp;
public static Bitmap originalBmp;
private static final int DEFAULT_ASPECT_RATIO_VALUES = 10;
private static final String ASPECT_RATIO_X = "ASPECT_RATIO_X";
private static final String ASPECT_RATIO_Y = "ASPECT_RATIO_Y";
private int mAspectRatioX = DEFAULT_ASPECT_RATIO_VALUES;
private int mAspectRatioY = DEFAULT_ASPECT_RATIO_VALUES;
ImageView croppedImageView;
File file;
ImageButton btImage,btCrop,btProceed;
CroppingInstructionDlg dialog;

CheckBox cb_savePreferencedialog;
public static final String Save_CheckboxSettingdialog = "MyCheckBoxSettingdialogforcroppingactivity";
boolean checkedCheckboxdialog=false;
Bitmap croppedImage;
boolean cropped=false;

// this is very important to use the navtive opencv's library
     static {
            if (!OpenCVLoader.initDebug()) {
                // Handle initialization error
                Log.d("ERROR", "Unable to load OpenCV");
            }
            else
            {
                Log.d("SUCCESS", "OpenCV loaded");
            }

        }


@Override

protected void onRestoreInstanceState(Bundle bundle) {
    super.onRestoreInstanceState(bundle);
    mAspectRatioX = bundle.getInt(ASPECT_RATIO_X);
    mAspectRatioY = bundle.getInt(ASPECT_RATIO_Y);
}

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        final SharedPreferences sp = getSharedPreferences("activities", MODE_PRIVATE);


        dialog = new CroppingInstructionDlg(MainActivity.this);

        cb_savePreferencedialog = (CheckBox)dialog.findViewById(R.id.cb_savePreferencedialog);

         SharedPreferences prefEditdialog = getSharedPreferences(Save_CheckboxSettingdialog, MODE_PRIVATE); 

            if(prefEditdialog.contains("CheckBoxValueDialog1")){

                cb_savePreferencedialog.setChecked(true);
            }
            else
            {
                openDialoginstruction();
            }


        cropImageView = (CropImageView) findViewById(R.id.CropImageView);
        croppedImageView = (ImageView) findViewById(R.id.croppedImageView);
        cropImageView.setVisibility(View.GONE);
        croppedImageView.setVisibility(View.GONE);


        btImage=(ImageButton) findViewById(R.id.btImage);
        btImage.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                List<String> data= new ArrayList<String>();
                data.add("Import from local device.");
                data.add("Take camera image.");
                AdapterGetImage adapter = new AdapterGetImage(MainActivity.this);

                adapter.setData(data);

                new AlertDialog.Builder(MainActivity.this).setAdapter(adapter, new DialogInterface.OnClickListener() {




                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                     //TODO - Code when list item is clicked (int which - is param that gives you the index of clicked item)

                        if (which==0) {
                            getFromGallery();
                        }
                        if(which==1)
                        {
                            getImageFromCamera();
                        }
                    }

                })
               .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                })

                .setCancelable(false)
                .show();

              }
        });
        btCrop=(ImageButton) findViewById(R.id.btCrop);
        btCrop.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                if(cropImageView.getVisibility() == View.VISIBLE){
                    croppedImage = cropImageView.getCroppedImage();
                    //size test
                    // croppedImage = croppedImage.createScaledBitmap(croppedImage, activeBmp.getWidth(), ((activeBmp.getWidth() * activeBmp.getHeight()) / activeBmp.getWidth()), true);
                    croppedImageView.setVisibility(View.VISIBLE);


                    croppedImageView.setImageBitmap(croppedImage);
                    activeBmp = croppedImage;
                    globalVar.edgeData= cropImageView.getEdge();
                    globalVar.gatheredData= cropImageView.getCircleData();
                    cropped=true;
                    }
                    else
                    {
                        Toast.makeText(MainActivity.this, "Please select your desired image before using the cropping function.", Toast.LENGTH_LONG).show();
                    }
              }
        });

        btProceed = (ImageButton)findViewById(R.id.btProceed);
        btProceed.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if(cropImageView.getVisibility() == View.VISIBLE){
                    if(cropped)
                    {
                    try {
                        InternalStorage.writeBitmap(MainActivity.this,"image", activeBmp);
                        InternalStorage.writeBitmap(MainActivity.this,"originalimage", originalBmp);

                        Intent intent = new Intent(MainActivity.this, EditImageActivity.class);
                        startActivity(intent);
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    }
                    else
                    {
                        Toast.makeText(MainActivity.this, "Please crop your desired image before proceeding to the next step.", Toast.LENGTH_LONG).show();
                    }
                }
                else
                {
                    Toast.makeText(MainActivity.this, "Please select your desired image before proceeding to the next step.", Toast.LENGTH_LONG).show();
                }

            }

        });



        if (savedInstanceState != null) {
            // String savedText = savedInstanceState.getString(KEY_TEXT_VALUE);
            if (!savedInstanceState.getString("filepath").equals("")) {
                filepath = savedInstanceState.getString("filepath");
                // mTextView.setText(savedText);
                LoadPicture(filepath);
                    croppedImageView.setImageBitmap(globalVar.CroppedImage);
                croppedImageView.setVisibility(View.VISIBLE);
                cropImageView.setVisibility(View.VISIBLE);
            }
        }

    }

protected void onSaveInstanceState(Bundle bundle) {
    super.onSaveInstanceState(bundle);
    bundle.putInt(ASPECT_RATIO_X, mAspectRatioX);
    bundle.putInt(ASPECT_RATIO_Y, mAspectRatioY);
    // if (!filepath.equals("")) {
    if (filepath != null) {
        bundle.putString("filepath", filepath);
    } else {
        bundle.putString("filepath", "");
    }
    if(cropped==true)
    {
        globalVar.CroppedImage= Bitmap.createBitmap(croppedImage);
    }
}





@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId();
    if(id == R.id.About_Us)
    {
        openDialog();
    }

    return super.onOptionsItemSelected(item);
}



//cf code here

@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    try {
        if (requestCode == GALLERY_CHOOSER_INTENT) {
            if (null == data) return;

            String selectedImagePath;
            Uri selectedImageUri = data.getData();

            //MEDIA GALLERY
            selectedImagePath = ImageFilePath.getPath(getApplicationContext(), selectedImageUri);

            cropImageView.requestLayout();
            LoadPicture(selectedImagePath);
            cropImageView.setVisibility(View.VISIBLE);
        } 
         if(requestCode ==CAMERA_IMAGE)
            {   

             if (resultCode == Activity.RESULT_OK) {

                    cropImageView.requestLayout();
                    // if(!filepath.equals(""))
                    if (outPutfileUri.toString() != null) {
                          this.filepath=outPutfileUri.getPath();
                        LoadPicture(outPutfileUri.getPath());
                        cropImageView.setVisibility(View.VISIBLE);

                    }
             }


            }




    } catch (Throwable ex) {
        //Toast.makeText(MainActivity.this, ex.toString(), Toast.LENGTH_LONG).show();

    }
}



public String getGalleryImagePath(Intent data) {
    try {
        Uri imgUri = data.getData();
        String filePath = "";
        if (data.getType() == null) {
            // For getting images from default gallery app.
            String[] filePathColumn = { MediaStore.Images.Media.DATA };
            Cursor cursor = getContentResolver().query(imgUri,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            filePath = cursor.getString(columnIndex);
            cursor.close();
        } else if (data.getType().equals("image/jpeg")
                || data.getType().equals("image/png")) {
            filePath = imgUri.getPath();
        }
        return filePath;
    } catch (Exception e) {
        return null;
    }

}


private String getPath(Uri uri) {
    if( uri == null ) {
        return null;
    }

    String[] projection = { MediaStore.Images.Media.DATA };

    Cursor cursor;
    if(Build.VERSION.SDK_INT >19)
    {
        // Will return "image:x*"
        String wholeID = DocumentsContract.getDocumentId(uri);
        // Split at colon, use second item in the array
        String id = wholeID.split(":")[1];
        // where id is equal to             
        String sel = MediaStore.Images.Media._ID + "=?";

        cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
                                      projection, sel, new String[]{ id }, null);
    }
    else
    {
        cursor = getContentResolver().query(uri, projection, null, null, null);
    }
    String path = null;
    try
    {
        int column_index = cursor
        .getColumnIndex(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        path = cursor.getString(column_index).toString();
        cursor.close();
    }
    catch(NullPointerException e) {

    }
    return path;
}

public String getCameraImagePath(Intent data) {
    try {
        Uri imgUri = data.getData();
        String filePath = "";
        if (data.getType() == null) {
            // For getting images from default gallery app.
            String[] filePathColumn = { MediaStore.Images.Media.DATA };
            Cursor cursor = getContentResolver().query(imgUri,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            filePath = cursor.getString(columnIndex);
            cursor.close();
        } else if (data.getType().equals("image/jpeg")
                || data.getType().equals("image/png")) {
            filePath = imgUri.getPath();
        }
        return filePath;
    } catch (Exception e) {
        return null;
    }

}

public void LoadPicture(String filepath) {

    if (!new File(filepath).exists()) {
        Toast.makeText(this, "Image does not exist.", Toast.LENGTH_SHORT)
                .show();
    } else {

        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int screenwidth = size.x;
        int screenheight = size.y;

        int picwidth = 0;
        if(screenwidth < screenheight)
        {
            picwidth = screenwidth;
        }
        else
        {
            picwidth = screenheight;
        }
        picwidth = (int) (0.8 * picwidth);

        Bitmap img = decodeSampledBitmapFromResource(filepath, picwidth);

        if (img.getWidth() < img.getHeight()) {
            Bitmap rotatedbmp = RotateBitmap(img, 90);
            img = rotatedbmp;
        } else {
            ;
        }
        if (img.getWidth() > img.getHeight()) {
            if (img.getWidth() > picwidth) {
                cropImageView.getLayoutParams().height = picwidth
                        * img.getHeight() / img.getWidth();
                cropImageView.getLayoutParams().width = picwidth;

                img = Bitmap.createScaledBitmap(img, picwidth,
                        ((picwidth * img.getHeight()) / img.getWidth()), true);
            } else {
                cropImageView.getLayoutParams().width = img.getWidth();
                cropImageView.getLayoutParams().height = img.getHeight();
            }

        } else if (img.getHeight() > img.getWidth()) {
            if (img.getHeight() > picwidth) {
                cropImageView.getLayoutParams().height = picwidth;
                cropImageView.getLayoutParams().width = picwidth
                        * img.getWidth() / img.getHeight();

                img = Bitmap.createScaledBitmap(img,
                        ((picwidth * img.getWidth()) / img.getHeight()), picwidth,
                        true);
            } else {
                cropImageView.getLayoutParams().width = img.getWidth();
                cropImageView.getLayoutParams().height = img.getHeight();
            }
        } else {// same square image
            if (img.getWidth() > picwidth) {
                cropImageView.getLayoutParams().height = picwidth;
                cropImageView.getLayoutParams().width = picwidth;
                img = Bitmap.createScaledBitmap(img, picwidth, picwidth, true);
            } else {
                cropImageView.getLayoutParams().width = img.getWidth();
                cropImageView.getLayoutParams().height = img.getHeight();
            }
        }
        activeBmp = null;
        activeBmp = img.copy(Bitmap.Config.ARGB_8888, true);
        originalBmp=img.copy(Bitmap.Config.ARGB_8888, true);



        //cropImageView.getLayoutParams().height = activeBmp.getHeight();
        //cropImageView.getLayoutParams().width = activeBmp.getWidth();
        cropImageView.setImageBitmap(activeBmp);

        //croppedImageView.setImageBitmap(activeBmp);
        img.recycle();


    }//else ends

}
public static Bitmap decodeSampledBitmapFromResource(String filepath,int reqWidth) {

    // First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(filepath, options);

    // Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize(options, reqWidth);

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
    return BitmapFactory.decodeFile(filepath, options);
}
public static Bitmap RotateBitmap(Bitmap source, float angle) {
    Matrix matrix = new Matrix();
    matrix.postRotate(angle);
    return Bitmap.createBitmap(source, 0, 0, source.getWidth(),
            source.getHeight(), matrix, true);
}
public static int calculateInSampleSize(BitmapFactory.Options options,
        int reqWidth) {
    // Raw height and width of image
    final int height = options.outHeight;
    final int width = options.outWidth;
    int inSampleSize = 1;

    // if (height > reqHeight || width > reqWidth) {
    if (width > reqWidth) {
        // final int halfHeight = height / 2;
        final int halfWidth = width / 2;

        // Calculate the largest inSampleSize value that is a power of 2 and
        // keeps both
        // height and width larger than the requested height and width.
        // while ((halfHeight / inSampleSize) > reqHeight
        // && (halfWidth / inSampleSize) > reqWidth) {
        while ((halfWidth / inSampleSize) > reqWidth) {
            inSampleSize *= 2;
        }
    }

    return inSampleSize;
}

public void openDialog() {

    final AboutUsDlg dialog = new AboutUsDlg(this); // context, this etc.
    dialog.setTitle("About Us");

    Button btnClose = (Button) dialog.findViewById(R.id.btOk);

    btnClose.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }

    });


    dialog.show();
}


 public void getFromGallery()
{
    //cf code

     /*
     if (Build.VERSION.SDK_INT <23){
        final Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent, GALLERY_CHOOSER_INTENT);
    } else {
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("image/*");
        startActivityForResult(intent, GALLERY_KITKAT_INTENT_CALLED);
    }
    */
     final Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select File"),GALLERY_CHOOSER_INTENT);

    //final Intent intent = new Intent();
    //intent.setType("image/*");
    //intent.setAction(Intent.ACTION_GET_CONTENT);
    //startActivityForResult(intent, GALLERY_CHOOSER_INTENT);

}
public void getImageFromCamera()
{
    Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    file = new File(Environment.getExternalStorageDirectory(),
            "APDColonyImage.jpg");
    globalVar.CameraImage=file;
            outPutfileUri = Uri.fromFile(file);

            intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutfileUri);
            startActivityForResult(intent, CAMERA_IMAGE);




}


 public void openDialoginstruction() {

      cb_savePreferencedialog.setOnClickListener(new OnClickListener() {

          @Override
          public void onClick(View v) {
                    //is chkIos checked?
            if (((CheckBox) v).isChecked()) {

                checkedCheckboxdialog=true;
            }
            else 
            {
                checkedCheckboxdialog=false;
            }


          }
        });



        Button btnClose = (Button) dialog.findViewById(R.id.btOk);

        btnClose.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if(checkedCheckboxdialog==true){

                     SharedPreferences.Editor CheckBoxEditor = getSharedPreferences(Save_CheckboxSettingdialog, MODE_PRIVATE).edit();
                     CheckBoxEditor.putBoolean("CheckBoxValueDialog1", checkedCheckboxdialog);
                     CheckBoxEditor.commit();
                }
                else
                {
                    SharedPreferences.Editor CheckBoxEditor = getSharedPreferences(Save_CheckboxSettingdialog, MODE_PRIVATE).edit();
                    CheckBoxEditor.clear();
                    CheckBoxEditor.commit();
                }
                dialog.dismiss();
            }

        });

        dialog.show();

    }



 public boolean onKeyDown(int keyCode, KeyEvent event) {
        // cleanup app, save preferences, etc.
     exitApplication() ;
        // finish(); // not working properly, especially not with asynchronous tasks running
        // return moveTaskToBack(true);
        return super.onKeyDown(keyCode, event);
    }

 public void exitApplication() {

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Are you sure you want to exit?")

                // Write the code below
                .setPositiveButton("Yes",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int id) {

                                finish();

                            }
                        })

                .setNegativeButton("No", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {

                    }
                });

        AlertDialog alertDialog = builder.create();
        alertDialog.show();

    }

我的activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     android:orientation="vertical"
     >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >


          <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="horizontal"
            android:weightSum="3" >

            <ImageButton
                android:id="@+id/btImage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toLeftOf="@+id/btCrop"
                android:layout_weight="1"
                android:adjustViewBounds="true"
                android:scaleType="fitCenter"
                android:src="@drawable/getimage_icon9" />

            <ImageButton
                android:id="@+id/btCrop"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:layout_weight="1"
                android:adjustViewBounds="true"
                android:scaleType="fitCenter"
                android:src="@drawable/crop_icon9" />

            <ImageButton
                android:id="@+id/btProceed"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@+id/btCrop"
                android:layout_weight="1"
                android:adjustViewBounds="true"
                android:scaleType="fitCenter"
                android:src="@drawable/next_icon9" />
        </LinearLayout>

        <TextView
            android:id="@+id/tvCrop1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/Image"
            android:textAppearance="?android:attr/textAppearanceLarge" />
        <!--
        <com.edmodo.cropper.CropImageView
            xmlns:custom="http://schemas.android.com/apk/res-auto"
            android:id="@+id/CropImageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" />
        -->

        <com.edmodo.cropper.CropImageView
            xmlns:custom="http://schemas.android.com/apk/res-auto"
            android:id="@+id/CropImageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            custom:imageResource="@drawable/emptyimage"/>

        <TextView
            android:id="@+id/tvCrop2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/Cropped_image"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <ImageView
            android:id="@+id/croppedImageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:adjustViewBounds="true"
            android:scaleType="fitCenter"
            android:src="@drawable/emptyimage"
            tools:ignore="ContentDescription" />

    </LinearLayout>


</ScrollView>

1 个答案:

答案 0 :(得分:3)

只需清理构建并重新运行项目即可。它会自动解决问题