安卓adapter子项动态设置控件宽度以及扩展动画

适配器每项的一个控件  根据数据百分比大小 动态设置宽度  以及扩展动画

非常简单的一个功能  但是也写出来 希望有点帮助吧

baseAdapter 的getView 会根据布局 初始化convertView  此处我的convertView有两个控件  固定高宽的ImageView 剩余的就是另外一个LinearLayout了

getView大家都清楚  但是在此方法中 return convertView  的时候 获取控件LinearLayout最大宽度 是获取不了的  但是getView又是暴露出来给我们编码的最后一处

所以我获取宽度是在 适配器实例化的时候 根据屏幕宽度 减去 另外一个控件的宽度 以及间距

获取手机屏幕宽度的代码

DisplayMetrics metrics=new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(metrics);.

int width = metrics.widthPixels;

获取的是px  像素

布局一般是用dp  dp转px 方法

dp * context.getResources().getDisplayMetrics().density +0.5f

如此一来即可以获取控件布局的px 然后在getView中

LayoutParams params = (LayoutParams) view.getLayoutParams();

params.width = (int) (width * (显示的比例));

view.setLayoutParams(params) 设置控件的宽度了


设置动画

view.clearAnimation();
view.startAnimation(mExtendAnimation);

mExtendAnimation = AnimationUtils.loadAnimation(context, R.anim.extend);


动画的xml文件

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 数据 平移 展开动画 -->
    <scale
        android:duration="1000"
        android:fromXScale="0.0"
        android:fromYScale="1.0"
        android:pivotX="0%"
        android:pivotY="50%"
        android:toXScale="1.0"
        android:toYScale="1.0" 
        android:fillAfter="true"
        />
</set>

到这就已经完成了   为了美观  在做个处理 每项颜色渐变  在getView中

view.setBackgroundColor(getShadeColor(position))


private Integer getShadeColor(int position) {
// 开始色码
float Br = 221.0f;
float Bg = 70.0f;
float Bb = 26.0f;


// / 结束色码
float Er = 237.0f;
float Eg = 182.0f;
float Eb = 51.0f;

//渐变公式
int count = list.size();
int  countR = (int) (Br + (Er - Br) / (count + 1) * position);
int countG = (int) (Bg + (Eg - Bg) / (count + 1) * position);
int countB = (int) (Bb + (Eb - Bb) / (count + 1) * position);


return Color.rgb(countR, countG, countB);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值