关于自定义view的适配问题

自定义view的时候往往,有一些适配不同的屏幕的手机,<RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:layout_centerInParent="true">
    
        <RelativeLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            >
  <ImageView android:id="@+id/img_background" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:background="@drawable/backgroundcenter"/>
       <com.examclass.circle.RotatView
           android:id="@+id/myRotatView"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_centerInParent="true"
           ></com.examclass.circle.RotatView>
    </RelativeLayout>

  </RelativeLayout>

写在布局里,尽量要使用dp,相对布局,这时候我的view还没有适配成功,模拟器和真机还是有不同的,后来就在想为什么呢。。看了下代码:

 @Override
    protected void onDraw(Canvas canvas) {


        Matrix matrix = new Matrix();
        // 设置转轴位置
        matrix.setTranslate((float)width/2, (float)height/2);


        // 开始转
        matrix.preRotate(deta_degree);
        // 转轴还原
        matrix.preTranslate(-(float)width/2, -(float)height/2);


        // 将位置送到view的中心
        matrix.postTranslate((float)(maxwidth - width-40), (float)(maxwidth - height-35));//就是这里了,可以想自己来适配,因为view是以左上脚为圆心的,而parent又是中心,、、、、、所以

     xml 显示view的时候在整个view的右下角,故而自己试下直接用固定的数字来适配,结果达到想要的效果了,这个跟取屏幕像素做比例的原理是一样的


        canvas.drawBitmap(rotatBitmap, matrix,paint);
       
        super.onDraw(canvas);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值