2010-08-03 4 views

ответ

0

Нет простого способа сделать это. Это связано с тем, что ImageView мог быть установлен с Bitmap, StateListDrawable, ColorDrawable или что-то еще полностью. Только один из этих классов имеет один цвет; на любой другой переносимой альфа может отличаться для каждого пикселя (пиксели в формате ARGB, по 1 байт для альфа, красного, зеленого и синего). Я почти уверен, что метод setAlpha() работает только с чертежами, которые его поддерживают, как упомянуто выше Sephy.

Что именно вам нужно знать о прозрачности изображения? Если вы знаете, что ImageView будет заполнено заранее, возможно, вы можете предварительно извлечь альфа. Если у вас нет прямого доступа к альфе, но вы можете определить цвет, тогда альфа будет равна color >>> 24.

+0

Я анимация некоторых ImageViews с использованием AlphaAnimation, и я хочу проверить, является ли их альфа-1, чтобы определить, должен ли я запускать анимацию fadeIn на них. – Joren

+0

Разве это просто знать разницу между тем, какие виды уже были анимированы, а какие - нет? Вероятно, вам следует придумать другой способ понять это, например, если 'imgView.getAnimation()! = FadeIn', то вы предполагаете, что анимация еще не применена. Кроме того, вы можете подклассифицировать «ImageView» и переопределить метод onSetAlpha(); это метод, который будет вызываться, когда альфа изменяется из-за анимации. –

0

На самом деле, вам нужно использовать getOpacity(), потому что get alpha существует только для ColorDrawable, Transformation и некоторых других. и вам нужно использовать его на выталкиваемом из ImageView не самом представлении.

+0

Прохладный, спасибо за наконечник. – Joren

+0

Хм. getDrawable() имеет значение null, если я устанавливаю ImageView src через XML, а не через setImageResource во время выполнения. Есть идеи? – Joren

+0

Woops, я устанавливал фон вместо src. getOpacity не делает ничего полезного, хотя он просто возвращает одну из 4 констант, мне нужно что-то, что возвращает фактическое значение прозрачности. – Joren

1

В случае, если кто просто нужно получить и установить видимость управления, getVisibility и setVisibility может быть альтернативой вы можете использовать:

if(vw.getVisibility() == View.VISIBLE) 
{ 
    // do something 
} 

и вы можете установить видимость:

vw.setVisibility(View.INVISIBLE); 
1

Здесь я go View.ALPHA.get(View)

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

0

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

private int mCurrentAlpha; 

private void setAlpha(int newAlpha){ 
    mCurrentAlpha=newAlpha; 
    ImageView imageView=... 
    imageView.setAlpha(mCurrentAlpha); 
} 
Смежные вопросы