Изменение непрозрачности ImageView или кнопки при смещении фокуса на этот компонент - PullRequest
0 голосов
/ 19 февраля 2019

Итак, я использую ImageView, который перекрывает другой ImageView.. По умолчанию непрозрачность или альфа-значение этого изображения установлено на 0,2f или что-то еще.Я хочу изменить прозрачность ImageView, чтобы она была полностью видимой, когда я сдвигаю или помещаю курсор на это изображение.Я запускаю это приложение в эмуляторе Android Studio TV.Я прочитал документацию и другие решения, но они не работают.

Вот мой файл макета, где я использую два ImageViews, которые накладываются друг на друга.В этом случае второй является наложением.

<RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="350dp"
            android:gravity="center">

               <ImageView
                android:id="@+id/premiumimageDescription"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingLeft="@dimen/margin"
                android:paddingRight="@dimen/margin"
                android:scaleType="fitXY" />


            <ImageView
                android:focusable="true"

               android:alpha="0.2"
                android:id="@+id/trailerView"
                android:layout_width="70dp"
                android:layout_height="70dp"
                android:layout_centerInParent="true"
                android:adjustViewBounds="true"
                android:src="@drawable/playbutton" />

        </RelativeLayout>

Java-файл, где я использую метод focuschange для изменения непрозрачности, когда курсор приходит к этому ImageView:

trailerView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                    @Override
                    public void onFocusChange(View v, boolean hasFocus) {
                        switch (v.getId())
                        {
                            case R.id.trailerView:
                                if(hasFocus)
                                {
                                    trailerView.getDrawable().setAlpha(1);
                                    trailerView.getBackground().setAlpha(255);
                                    trailerView.setImageAlpha(1);
                                }
                                else
                                {
                                    trailerView.getBackground().setAlpha(50);
                                    trailerView.setImageAlpha((int) 0.2);
                                }
                        }
                    }
                });

1 Ответ

0 голосов
/ 19 февраля 2019

Возможное решение.

1: Я думаю, что стоит создать рисованный файл, который отвечает за проверку статистики и соответственно замену рисованного изображения.

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/image_pressed"/>
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/image_pressed"/>
<item android:state_focused="true" android:drawable="@drawable/image_selected"/>
<item android:state_focused="false" android:state_pressed="false" android:drawable="@drawable/image_default"/>

2: Вместо onFocusChange в ImageViewон использует setOnTouchListener следующим образом

        trailerView.setOnTouchListener(new View.OnTouchListener(){
        @Override
        public boolean onTouch (View v,MotionEvent event) {

            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                Toast.makeText( getApplicationContext(),"Got the focus",Toast.LENGTH_LONG ).show();
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                Toast.makeText( getApplicationContext(),"Got the focus",Toast.LENGTH_LONG ).show();
            }

            // also let the framework process the event
            return false;
        }
    });
...