展会信息港展会大全

实现ImageView和TextView的旋转
来源:互联网   发布日期:2015-10-03 11:20:48   浏览:1446次  

导读:public class IconViewGroup extends ViewGroup { TextView mTextView; ImageView mImageView;// 显示对应的icon private Context mContext; /** * 命名区域 */private final String namesp......

public class IconViewGroup extends ViewGroup {

TextView mTextView;

ImageView mImageView;// 显示对应的icon

private Context mContext;

/**

* 命名区域

*/

private final String namespace = "http://com.oppo.examples";

/**

* 保存创建旋转角度

*/

private float mRotateDegrees;

/**

* 保存创建背景图片的ID

*/

private int mBackGroudDrawableId;

/**

* 利用图片ID加载图片

*/

private Drawable mBackGroudDrawable;

/**

* 原始图片所需宽、高

*/

private int mBackGroundWidth;

private int mBackGroundHeight;

private View view;

private static final int ICON_WIDTH = 46;// 显示数字的TextView的长宽

private static final int ICON_HEIGHT = 46;

private static final int TEXT_WIDTH = 46;// 显示数字的TextView的长宽

private static final int TEXT_HEIGHT = 260;

public IconViewGroup(Context context) {

super(context);

// TODO Auto-generated constructor stub

}

public IconViewGroup(Context context, AttributeSet attrs) {

super(context, attrs);

init(context);

mContext = context;

mBackGroudDrawableId = attrs.getAttributeResourceValue(namespace,

"background", R.drawable.item_on);

mBackGroudDrawable = context.getResources().getDrawable(

mBackGroudDrawableId);

mRotateDegrees = attrs.getAttributeFloatValue(namespace,

"rotateDegrees", 30.0f);

}

private void init(Context context) {

// TODO Auto-generated method stub

mTextView = new MyTextView(context);

mTextView.setTextSize(28);

mTextView.setGravity(Gravity.CENTER_VERTICAL);

// mTextView.setBackgroundColor(0xFFFFFF00);

mTextView.setText(R.string.app_name);

mTextView.setTextColor(0xF0FFFFFF);

mImageView = new ImageView(context);

mImageView.setBackgroundResource(R.drawable.icon);

this.addView(mTextView);

this.addView(mImageView);

}

@Override

protected void onLayout(boolean changed, int l, int t, int r, int b) {

// TODO Auto-generated method stub

int ivWidth = mImageView.getMeasuredWidth();

int ivHeight = mImageView.getMeasuredHeight();

int tvWidth = mTextView.getMeasuredWidth();

int tvHeight = mTextView.getMeasuredHeight();

mTextView.measure(r - l, b - t);

mTextView.layout(5 + ivWidth + 10, getHeight() - tvHeight - 5,

getWidth(), getHeight() - 5);

mImageView.measure(r - l, b - t);

mImageView.layout(5, 5 + getHeight() - ivHeight, ivWidth, getHeight());

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

// TODO Auto-generated method stub

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

/**

* 设定View显示区域

*/

mBackGroundHeight = mBackGroudDrawable.getIntrinsicHeight();

mBackGroundWidth = mBackGroudDrawable.getIntrinsicWidth();

if (mRotateDegrees == 90.0f) {

setMeasuredDimension(mBackGroundHeight, mBackGroundWidth);

} else {

setMeasuredDimension(mBackGroundWidth, mBackGroundHeight);

}

}

@Override

protected void dispatchDraw(Canvas canvas) {

// TODO Auto-generated method stub

canvas.rotate(mRotateDegrees);

mBackGroudDrawable.setBounds(0, 0, mBackGroundWidth, mBackGroundHeight);

mBackGroudDrawable.draw(canvas);

super.dispatchDraw(canvas);

}

}

赞助本站

人工智能实验室

相关热词: ImageView TextView 旋转

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港