因此,我使用的ImageView
覆盖了另一个ImageView.
,默认情况下,该图像的不透明度或Alpha值设置为0.2f或其他值。我想将ImageView
的不透明度更改为在移动或将光标放在该图像上时完全可见。我正在Android Studio TV模拟器中运行此应用程序。我已经阅读了文档和其他解决方案,但是无法正常工作。
这是我的布局文件,在这里我使用两个相互重叠的ImageView。在这种情况下,第二个是重叠的。
<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>
当光标进入该ImageView时,我使用focuschange
方法更改不透明度的Java文件:
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);
}
}
}
});
答案 0 :(得分:1)
可能的解决方案。
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:而不是在ImageView上使用onFocusChange,它按如下方式使用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;
}
});