Событие диалога изображения - PullRequest
0 голосов
/ 23 января 2020

У меня вопрос по поводу моего java кода. Я хотел бы открыть изображение в виде диалога, а затем выбрать цвет изображения.

Средство выбора цвета работает нормально. Диалог также работает. (Изображение открывается во всплывающем окне)

Единственная проблема заключается в том, что когда я открываю изображение в диалоговом окне, палитра цветов больше не работает.

Пожалуйста, помогите?

Код!

public class MainActivity extends AppCompatActivity {
ImageView mImageView;
Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    View mylayout = LayoutInflater.from(this).inflate(R.layout.activity_2,null);
    final ImageView myImage = (ImageView) mylayout.findViewById(R.id.imageView1);

    myImage.setDrawingCacheEnabled(true);
    myImage.buildDrawingCache(true);

    final Button button1 = (Button)  findViewById(R.id.button1);

    myImage.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
                try {

                bitmap = myImage.getDrawingCache();
                int pixel = bitmap.getPixel((int) event.getX(), (int) event.getY());

                //getting RGB values

                int r = Color.red(pixel);
                int g = Color.green(pixel);
                int b = Color.blue(pixel);


                //getting Hex value
                String hex = "#" + Integer.toHexString(pixel);

                //set background color of view
                //mColorView.setBackgroundColor(Color.rgb(r,g,b));
                System.out.println("r"+r+"g"+g+"b"+b);
                // Make the variable a global var easy way
                } catch(Exception e){
                    System.out.println("FOUT JONGUH");
                }


            }
            return true;
        }
    });
    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Dialog dialog = new Dialog(MainActivity.this);
            dialog.setContentView(R.layout.activity_2);
            dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            dialog.show();
        }
    });
}

}

MAIN XML:

 <?xml version="1.0" encoding="utf-8"?>
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    tools:layout_editor_absoluteY="427dp" />

Второй XML:

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

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/dirk" />

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Я исправил это, сделав это!

// View mColorView;
TextView mResults;
Bitmap bitmap;
String dirk;
Boolean wait = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_2);


    webView = (WebView) findViewById(R.id.webview);
    webView.setWebViewClient(new WebViewClient());
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);


    mResults = findViewById(R.id.textView4);
    //mColorView = findViewById(R.id.colorView);

    final Dialog dialog = new Dialog(Activity2.this);
    dialog.setContentView(R.layout.popupp);
    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    final ImageView myImage = (ImageView) dialog.findViewById(R.id.ImageView112);


    myImage.setDrawingCacheEnabled(true);
    myImage.buildDrawingCache(true);

    Button popupje = (Button) findViewById(R.id.popupje);
    final Button gereed = (Button) findViewById(R.id.Gereed);



    //image view on touch listener

    gereed.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.show();
            wait = true;
            if(wait == true) {
                myImage.setOnTouchListener(new View.OnTouchListener() {
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                        if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) {
                            try {
                                bitmap = myImage.getDrawingCache();
                                int pixel = bitmap.getPixel((int) event.getX(), (int) event.getY());

                                //getting RGB values
                                int r = Color.red(pixel);
                                int g = Color.green(pixel);
                                int b = Color.blue(pixel);

                                //set background color of view
                                //mColorView.setBackgroundColor(Color.rgb(r,g,b));
                                mResults.setText("RGB" + r + g + b);
                                // Make the variable a global var easy way
                                String srtlred = Integer.toString(r);
                                String srtlblue = Integer.toString(b);
                                String srtlgreen = Integer.toString(g);
                                System.out.println("http://192.168.68.158/?r" + srtlred + "g" + srtlgreen + "b" + srtlblue + "&");
                                webView.loadUrl("http://192.168.68.158/?r" + srtlred + "g" + srtlgreen + "b" + srtlblue + "&");
                            } catch (Exception e) {
                                //MEANS THAT THE USER IS GOING OUT OF THE IMAGEVIEW
                            }
                        }
                        return true;
                    }
                });
            }
            //Makes the correct URL to send to the webview.
            //tring srtlred = Integer.toString(red);
            //String srtlblue = Integer.toString(blue);
            //String srtlgreen = Integer.toString(green);
            //System.out.println("http://192.168.68.158/?r"+srtlred +"g"+ srtlgreen+"b" +srtlblue+"&");
            //webView.loadUrl("http://192.168.68.158/?r"+srtlred +"g"+ srtlgreen+"b" +srtlblue+"&");
        }
    });

}

}

0 голосов
/ 24 января 2020

Вам необходимо объявить представление изображения в диалоге, а не в макете. Вы можете сделать это следующим образом:

Dialog dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.activity_2);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
final ImageView myImage = (ImageView) dialog.findViewById(R.id.imageView1); //here is the imageview
dialog.show();

myImage.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
                try {

                bitmap = myImage.getDrawingCache();
                int pixel = bitmap.getPixel((int) event.getX(), (int) event.getY());

                //getting RGB values

                int r = Color.red(pixel);
                int g = Color.green(pixel);
                int b = Color.blue(pixel);


                //getting Hex value
                String hex = "#" + Integer.toHexString(pixel);

                //set background color of view
                //mColorView.setBackgroundColor(Color.rgb(r,g,b));
                System.out.println("r"+r+"g"+g+"b"+b);
                // Make the variable a global var easy way
                } catch(Exception e){
                    System.out.println("FOUT JONGUH");
                }


            }
            return true;
        }
    });

, а затем поместить ваш onTouchlistener в button.onClickListener

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...