0

在Android應用中。點擊圖片從攝像頭使用按鈕單擊並將所有點擊圖像顯示爲水平滾動視圖活動中的小區域不是像圖庫視圖那樣的整個活動,但不想使用圖庫,並且在特定圖像上顯示縮小圖像會顯示刪除它的對話框。在Android中顯示攝像頭在水平滾動視圖中點擊圖像並動態查看視圖。當你點擊添加到視圖

+1

目前還不清楚你在問什麼。你想從你的應用程序調用攝像頭功能嗎?顯示已拍攝的照片?都?你有嘗試過什麼嗎? –

+0

雅你在單一的應用程序的功能,並顯示單擊圖片瀏覽器和長按圖片顯示對話框刪除特定圖像.. plz給我解決方案..我試過這在gridview它的工作,但我想查看尋呼機.. – Mohit

回答

2

我有開發解決方案..

 MainActivity.java 
    package com.example.mtk.recyclerviewdemo; 

    import android.app.AlertDialog; 
    import android.content.DialogInterface; 
    import android.content.Intent; 
    import android.database.Cursor; 
    import android.graphics.Bitmap; 
    import android.graphics.BitmapFactory; 
    import android.net.Uri; 
    import android.os.Environment; 
    import android.provider.ContactsContract; 
    import android.provider.MediaStore; 
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.support.v7.widget.LinearLayoutManager; 
    import android.support.v7.widget.RecyclerView; 
    import android.util.Log; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.AdapterView; 
    import android.widget.Button; 
    import android.widget.ImageView; 
    import android.widget.LinearLayout; 
    import android.widget.TextView; 
    import android.widget.Toast; 

    import java.io.File; 
    import java.io.IOException; 
    import java.text.SimpleDateFormat; 
    import java.util.ArrayList; 
    import java.util.Date; 
    import java.util.List; 
    import java.util.Locale; 

    import static android.provider.MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE; 
    import static android.provider.MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO; 
    import static android.support.v4.app.ActivityCompat.startActivityForResult; 

    public class MainActivity extends AppCompatActivity { 

     static final int REQUEST_TAKE_PHOTO = 1; 
     private int SELECT_FILE = 2; 
     private static Button btnclick; 
     private String mCurrentPhotoPath; 
     private static RecyclerView recyclerView; 
     ArrayList<Data_Model> arrayList; 
     String chkpath = null; 
     MyAdapter m; 
     int i = 0; 
     private String userChoosenTask; 
     private Uri fileUri; // file url to store image/video 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      btnclick = (Button) findViewById(R.id.click); 
      recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 

      arrayList = new ArrayList<>(); 
      m = new MyAdapter(); 
      Log.d("oncreate", "set adapter"); 
      recyclerView.setAdapter(m); 
      ViewGroup.LayoutParams params = recyclerView.getLayoutParams(); 
      params.height = 200; 
      recyclerView.setLayoutParams(params); 
      LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); 
      recyclerView.setLayoutManager(linearLayoutManager); 


      //Camera Click image 
      btnclick.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        selectImage(); 

       } 
      }); 


     } 

     public void takepicture() { 
      Log.d("Cameraclick", "takepicture"); 

      Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 


      if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
       File photoFile = null; 
       try { 
        photoFile = createImageFile(); 
       } catch (IOException ex) { 
        // Error occurred while creating the File 
       } 
       // Continue only if the File was successfully created 
       if (photoFile != null) { 
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, 
          Uri.fromFile(photoFile)); 
        startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO); 
       } 
      } 
     } 

     private File createImageFile() throws IOException { 
      // Create an image file name 
      String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
      String imageFileName = "JPEG_" + timeStamp + "_"; 
      File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
      File image = File.createTempFile(
        imageFileName, /* prefix */ 
        ".jpg",   /* suffix */ 
        storageDir  /* directory */ 
      ); 

      // Save a file: path for use with ACTION_VIEW intents 
      mCurrentPhotoPath = image.getAbsolutePath(); 
      return image; 


     } 

     @Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

      if (resultCode == RESULT_OK) { 
       if (requestCode == REQUEST_TAKE_PHOTO) { 

        // Save Image To Gallery 
        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
        File f = new File(mCurrentPhotoPath); 
        Uri contentUri = Uri.fromFile(f); 
        mediaScanIntent.setData(contentUri); 
        this.sendBroadcast(mediaScanIntent); 
        String clickpath = mCurrentPhotoPath; 
        Data_Model data_model = new Data_Model(); 
        data_model.setImage(clickpath); 
        arrayList.add(data_model); 
        m.notifyDataSetChanged(); 


       } else if (requestCode == SELECT_FILE) { 
        Log.d("gallery", "checkpointd"); 
        onSelectFromGalleryResult(data); 
       } 
      } 

     } 


     class MyAdapter extends RecyclerView.Adapter<MyAdapter.Myviewholder> { 

      @Override 
      public Myviewholder onCreateViewHolder(ViewGroup parent, int viewType) { 
       View v = getLayoutInflater().inflate(R.layout.item_rowchk, parent, false); 
       Myviewholder myviewholder = new Myviewholder(v); 
       Log.d("myactivty ", "oncreateViewHolder"); 

       return myviewholder; 
      } 

      @Override 
      public void onBindViewHolder(Myviewholder holder, final int position) { 
       final Data_Model m = arrayList.get(position); 
       Log.d(" myactivty", "onBindviewholder" + position); 
       //holder.imageView.setVisibility(View.VISIBLE); 
       // bimatp factory 
       BitmapFactory.Options options = new BitmapFactory.Options(); 
       // downsizing image as it throws OutOfMemory Exception for larger 
       // images 
       options.inSampleSize = 20; 
       final Bitmap bitmap = BitmapFactory.decodeFile(m.getImage(), options); 
       holder.imageView.setImageBitmap(bitmap); 
       holder.imageView.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         Intent intent = new Intent(getApplicationContext(), ImageDisplay.class); 
         String chkpath = m.getImage(); 
         intent.putExtra("path", chkpath); 
         Log.d("intent", "new activity"); 
         startActivity(intent); 
        } 
       }); 
       holder.imageView.setOnLongClickListener(new View.OnLongClickListener() { 
        @Override 
        public boolean onLongClick(View view) { 

         final int pst = position; 
         DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) { 
           switch (which) { 
            case DialogInterface.BUTTON_POSITIVE: 
             arrayList.remove(position); 
             notifyItemRemoved(position); 
             notifyItemRangeChanged(position, arrayList.size()); 
             // Yes button clicked 
             Toast.makeText(MainActivity.this, "Yes Clicked", 
               Toast.LENGTH_LONG).show(); 
             break; 

            case DialogInterface.BUTTON_NEGATIVE: 
             // No button clicked 
             // do nothing 
             Toast.makeText(MainActivity.this, "No Clicked", 
               Toast.LENGTH_LONG).show(); 
             break; 
           } 
          } 
         }; 

         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
         builder.setMessage("Are you sure want to Delete ?") 
           .setPositiveButton("Yes", dialogClickListener) 
           .setNegativeButton("No", dialogClickListener).show(); 

         return true; 
        } 
       }); 


      } 

      @Override 
      public int getItemCount() { 
       return arrayList.size(); 
      } 

      public class Myviewholder extends RecyclerView.ViewHolder { 
       public ImageView imageView; 

       public Myviewholder(View itemView) { 
        super(itemView); 
        imageView = (ImageView) itemView.findViewById(R.id.image); 
       } 
      } 
     } 

     private void onSelectFromGalleryResult(Intent data) { 

      Uri selectedImageUri = data.getData(); 
      String[] projection = {MediaStore.Images.Media.DATA}; 
      Cursor cursor = managedQuery(selectedImageUri, projection, null, null, null); 
      int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      cursor.moveToFirst(); 
      String path = cursor.getString(column_index); 
      Data_Model data_model = new Data_Model(); 
      data_model.setImage(path); 
      arrayList.add(data_model); 
      m.notifyDataSetChanged(); 
      // Toast.makeText(this, "" + path, Toast.LENGTH_LONG).show(); 
     } 

     private void selectImage() { 

      final CharSequence[] items = {"Take Photo", "Choose from Library", 
        "Cancel"}; 

      AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
      builder.setTitle("Add Photo!"); 
      builder.setItems(items, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int item) { 
        boolean result = Utility.checkPermission(MainActivity.this); 

        if (items[item].equals("Take Photo")) { 
         userChoosenTask = "Take Photo"; 
         if (result) 
          takepicture(); 

        } else if (items[item].equals("Choose from Library")) { 
         userChoosenTask = "Choose from Library"; 
         if (result) 
          galleryIntent(); 


        } else if (items[item].equals("Cancel")) { 
         dialog.dismiss(); 
        } 
       } 
      }); 
      builder.show(); 
     } 


     public void galleryIntent() { 
      Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      Log.d("gallery", "checkpointA"); 
      startActivityForResult(Intent.createChooser(intent, "Select File"), SELECT_FILE); 
      Log.d("gallery", "checkpointB"); 
     } 
} 

     Data_Model.Java 
    package com.example.mtk.recyclerviewdemo; 

    import android.net.Uri; 


    public class Data_Model { 
     private String image; 


     // Getter and Setter model for recycler view items 

     public String getImage() { 
      return image; 
     } 

     public void setImage(String image) { 
      this.image = image; 
     } 


    } 
     ImageDisplay.java 

    package com.example.mtk.recyclerviewdemo; 

    import android.graphics.Bitmap; 
    import android.graphics.BitmapFactory; 
    import android.os.Bundle; 
    import android.support.v7.app.AppCompatActivity; 
    import android.widget.ImageView; 

    public class ImageDisplay extends AppCompatActivity { 
    ImageView imageView; 
     private String path; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_image_display); 
      imageView = (ImageView) findViewById(R.id.imageviewnew); 
      //setupActionBar(); 

      // Get Image Path 
      path = getIntent().getExtras().getString("path"); 

      // Get Image 
      BitmapFactory.Options bmOptions = new BitmapFactory.Options(); 
      bmOptions. inJustDecodeBounds = false; 
      bmOptions. inSampleSize = 4; 
      bmOptions. inPurgeable = true ; 
      Bitmap bitmap = BitmapFactory.decodeFile(path, bmOptions); 

      // Display Image 
      imageView.setImageBitmap(bitmap); 
     } 
    } 



    xml.files 

    activity_image_display.xml 
    activity_main.xml 
    item_row.xml 
    item_rowchk.xml 

    activity_main.xml 

    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/activity_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     tools:context="com.example.mtk.recyclerviewdemo.MainActivity" 
     android:weightSum="1"> 

     <Button 
      android:id="@+id/click" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:padding="10dp" 
      android:text="CLICK" 
      android:background="#fabdca" 
      android:textSize="27sp" /> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/recycler_view" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingTop="20dp" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="BUTTON CHECK"/> 


    </LinearLayout> 

item_rowchk.xml 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:id="@+id/image" 
     android:rotation="90" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

Imagedisplay.xml 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_image_display" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.mtk.recyclerviewdemo.ImageDisplay"> 
<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:rotation="90" 
    android:id="@+id/imageviewnew" /> 

</LinearLayout> 
+0

畫廊不工作兄弟請更新您的代碼....爲您的努力+1 –