我正在尝试创建一个列表视图,如下所示: -
现在,我使用WearableListView适配器使列表视图成功运行。但是,我在ImageView中使用静态图像。我想要的是在滚动时聚焦特定列表元素时创建这种灰色和蓝色类型的动画。我怎么做?我尝试使用ImageView的选择器xml文件,但似乎这个ListView没有使用这个选择器(android:state-focused,selected,pressed-nothing works)。知道我怎么得到我想要的东西?希望我明白我的问题。感谢。
答案 0 :(得分:2)
是的你是对的,图像选择器不起作用,为什么?我完全不知道,我们没有任何文件可供阅读。
但幸运的是,我已经成功实施了这个场景,它几乎与默认设置屏幕相似。
对于解决方法,我在方法下面设置了圆形颜色:
onScaleUpStart()
- 为所选项目设置圆圈颜色onScaleDownStart()
- 为未选择的项目设置圆圈颜色。我在项目布局中使用了CircleImageView和TextView。示例代码可以是:
private final class MyItemView extends FrameLayout implements WearableListView.Item {
final CircledImageView image;
final TextView text;
private float mScale;
private final int mFadedCircleColor;
private final int mChosenCircleColor;
public MyItemView(Context context) {
super(context);
View.inflate(context, R.layout.wearablelistview_item, this);
image = (CircledImageView) findViewById(R.id.image);
text = (TextView) findViewById(R.id.text);
mFadedCircleColor = getResources().getColor(android.R.color.darker_gray);
mChosenCircleColor = getResources().getColor(android.R.color.holo_blue_dark);
}
@Override
public float getProximityMinValue() {
return mDefaultCircleRadius;
}
@Override
public float getProximityMaxValue() {
return mSelectedCircleRadius;
}
@Override
public float getCurrentProximityValue() {
return mScale;
}
@Override
public void setScalingAnimatorValue(float value) {
mScale = value;
image.setCircleRadius(mScale);
image.setCircleRadiusPressed(mScale);
}
@Override
public void onScaleUpStart() {
image.setAlpha(1f);
text.setAlpha(1f);
image.setCircleColor(mChosenCircleColor);
}
@Override
public void onScaleDownStart() {
image.setAlpha(0.5f);
text.setAlpha(0.5f);
image.setCircleColor(mFadedCircleColor);
}
}
答案 1 :(得分:1)
新更新带来 WearableListView.OnCenterProximityListener 替代 WearableListView.Item ,以使用选择器实现可穿戴列表视图,
它有两种实现方法:
onCenterPosition
onNonCenterPosition
public class WearableListItemLayout extends LinearLayout implements WearableListView.OnCenterProximityListener {
private CircledImageView image;
private TextView text;
public WearableListItemLayout(Context context) {
this(context, null);
}
public WearableListItemLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public WearableListItemLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
image = (CircledImageView) findViewById(R.id.image);
text = (TextView) findViewById(R.id.name);
}
@Override
public void onCenterPosition(boolean b) {
image.setAlpha(1f);
image.setBackgroundResource(R.drawable.blue_oval);
text.setAlpha(1f);
}
@Override
public void onNonCenterPosition(boolean b) {
image.setAlpha(0.5f);
image.setBackgroundResource(R.drawable.gray_oval);
text.setAlpha(0.5f);
}
}