版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】Android中如何實(shí)現(xiàn)自定義ImageView添加文字設(shè)置按下效果
首先上效果圖,看看是否是你需要的效果圖/upload/information/20200623/125/126743.gif下面開始擼代碼MyImageTextView.javapublic
class
MyImageTextView
extends
LinearLayout
{
private
ImageView
mImageView
=
null;
private
TextView
mTextView
=
null;
private
int
imageId,
pressImageId;
private
int
textId,
textColorId,
textTopId,
pressTextColorId;
public
MyImageTextView(Context
context)
{
this(context,
null);
}
public
MyImageTextView(Context
context,
@Nullable
AttributeSet
attrs)
{
this(context,
attrs,
0);
}
public
MyImageTextView(Context
context,
@Nullable
AttributeSet
attrs,
int
defStyleAttr)
{
super(context,
attrs,
defStyleAttr);
this.setOrientation(LinearLayout.VERTICAL);//設(shè)置垂直排序
this.setGravity(Gravity.CENTER);//設(shè)置居中
if
(mImageView
==
null)
{
mImageView
=
new
ImageView(context);
}
if
(mTextView
==
null)
{
mTextView
=
new
TextView(context);
}
if
(attrs
==
null)
return;
int
count
=
attrs.getAttributeCount();
for
(int
i
=
0;
i
<
count;
i++)
{
String
attrName
=
attrs.getAttributeName(i);//獲取屬性名稱
//根據(jù)屬性獲取資源ID
switch
(attrName)
{
//顯示的圖片
case
"image":
imageId
=
attrs.getAttributeResourceValue(i,
0);
break;
//按下時顯示的圖片
case
"pressImage":
pressImageId
=
attrs.getAttributeResourceValue(i,
0);
break;
//顯示的文字
case
"text":
textId
=
attrs.getAttributeResourceValue(i,
0);
break;
//設(shè)置文字顏色
case
"textColor":
textColorId
=
attrs.getAttributeResourceValue(i,
0);
break;
//設(shè)置文字距離上面圖片的距離
case
"textTop":
textTopId
=
attrs.getAttributeResourceValue(i,
0);
break;
//按下時顯示的文字顏色
case
"pressTextColor":
pressTextColorId
=
attrs.getAttributeResourceValue(i,
0);
break;
}
}
init();
}
/**
*
初始化狀態(tài)
*/
private
void
init()
{
this.setText(textId);
mTextView.setGravity(Gravity.CENTER);//字體居中
this.setTextColor(textColorId);
this.setTextPaddingTop(textTopId);
this.setImgResource(imageId);
addView(mImageView);//將圖片加入
addView(mTextView);//將文字加入
}
@Override
public
boolean
onTouchEvent(MotionEvent
event)
{
int
action
=
event.getAction();
switch
(action)
{
//按下
case
MotionEvent.ACTION_DOWN:
if
(pressImageId
!=
0)
this.setImgResource(pressImageId);
if
(pressTextColorId
!=
0)
this.setTextColor(pressTextColorId);
break;
//移動
case
MotionEvent.ACTION_MOVE:
break;
//抬起
case
MotionEvent.ACTION_UP:
if
(imageId
!=
0)
this.setImgResource(imageId);
if
(textColorId
!=
0)
this.setTextColor(textColorId);
break;
}
return
super.onTouchEvent(event);
}
/**
*
設(shè)置默認(rèn)的圖片
*
*
@param
resourceID
圖片id
*/
public
void
setImgResourceDefault(int
resourceID)
{
imageId
=
resourceID;
setImgResource(resourceID);
}
/**
*
設(shè)置按下的圖片
*
*
@param
resourceID
圖片id
*/
public
void
setImgResourcePress(int
resourceID)
{
pressImageId
=
resourceID;
}
/**
*
設(shè)置顯示的圖片
*
*
@param
resourceID
圖片ID
*/
private
void
setImgResource(int
resourceID)
{
if
(resourceID
==
0)
{
this.mImageView.setImageResource(0);
}
else
{
this.mImageView.setImageResource(resourceID);
}
}
/**
*
設(shè)置顯示的文字
*
*
@param
text
*/
public
void
setText(int
text)
{
this.mTextView.setText(text);
}
/**
*
設(shè)置字體顏色(默認(rèn)為黑色)
*
*
@param
color
*/
private
void
setTextColor(int
color)
{
if
(color
==
0)
{
this.mTextView.setTextColor(Color.BLACK);
}
else
{
this.mTextView.setTextColor(getResources().getColor(color));
}
}
/**
*
設(shè)置默認(rèn)的顏色
*
*
@param
color
顏色I(xiàn)D
*/
public
void
setTextDefaultColor(int
color)
{
textColorId
=
color;
setTextColor(color);
}
/**
*
設(shè)置按下的顏色
*
*
@param
color
顏色I(xiàn)D
*/
public
void
setTextPressColor(int
color)
{
pressImageId
=
color;
}
/**
*
設(shè)置字體大小
*
*
@param
size
*/
public
void
setTextSize(float
size)
{
this.mTextView.setTextSize(size);
}
/**
*
設(shè)置文字與上面的距離
*
@param
top
*/
public
void
setTextPaddingTop(int
top)
{
if
(top
!=
0)
this.mTextView.setPadding(0,
getResources().getDimensionPixelOffset(top),
0,
0);
}
}下面是屬性文件<?xml
version="1.0"
encoding="utf-8"?>
<resources>
<declare-styleable
name="imageText">
<attr
name="image"
format="integer"
/>
<attr
name="pressImage"
format="integer"
/>
<attr
name="text"
format="integer"
/>
<attr
name="textColor"
format="integer"
/>
<attr
name="pressTextColor"
format="integer"
/>
<attr
name="textTop"
form
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級下冊人教版語文教學(xué)計劃
- 公司搬遷計劃規(guī)劃方案規(guī)劃方案
- 農(nóng)林牧漁業(yè)商業(yè)計劃書
- 2025年幼兒教師學(xué)年工作計劃模板
- 綜合二教學(xué)計劃
- 公司計劃生育目標(biāo)責(zé)任書公司目標(biāo)責(zé)任書
- 《復(fù)合材料講》課件
- 《比昂的精神分析》課件
- 合活種植合作協(xié)議書合同模板
- 工程項(xiàng)目合同管理自測
- 幼兒游戲的課件
- 2025年重慶貨運(yùn)從業(yè)資格證考試題及答案詳解
- 三三制薪酬設(shè)計
- 【MOOC】中國近現(xiàn)代史綱要-武漢理工大學(xué) 中國大學(xué)慕課MOOC答案
- 【新教材】蘇教版小學(xué)科學(xué)三年級上冊:全冊單元試卷、期中期末總復(fù)習(xí)試卷
- 屋面板的拆除與更換施工方案
- GB/Z 44047-2024漂浮式海上風(fēng)力發(fā)電機(jī)組設(shè)計要求
- 2024版統(tǒng)編版一年級道德與法治上冊《2 我向國旗敬個禮》教學(xué)課件
- 國開(內(nèi)蒙古)2024年《漢語中的中國文化》形成性考核1-3終結(jié)性考核答案
- 司法臨床司法鑒定培訓(xùn)
- 第47屆世界技能大賽江蘇省選拔賽計算機(jī)軟件測試項(xiàng)目樣題
評論
0/150
提交評論