




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android怎么實(shí)現(xiàn)圓形純數(shù)字按鈕
這篇文章主要介紹了Android怎么實(shí)現(xiàn)圓形純數(shù)字按鈕,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓在下帶著大家一起了解一下。最近在搞一個(gè)數(shù)字撥號(hào)按鍵按鈕,就想到使用GridView,但在實(shí)現(xiàn)中遇到點(diǎn)問題,在給數(shù)字鍵進(jìn)行圓形狀態(tài)鍵設(shè)置時(shí)發(fā)現(xiàn)一個(gè)問題,GridView中自帶的原生選擇矩形按鈕總是存在,于是就想到了讓其狀態(tài)背景設(shè)置成透明。一、自定義按鈕控件RelativeLayoutpublic
class
KeyboardView
extends
RelativeLayout
{
Context
mContext;
private
GridView
gridView;
private
List<Map<String,
String>>
dataList;
public
KeyboardView(Context
context)
{
this(context,
null);
}
public
KeyboardView(Context
context,
AttributeSet
attrs)
{
super(context,
attrs);
this.mContext
=
context;
View
view
=
View.inflate(context,
R.layout.layout_virtual_keyboard,
null);
dataList
=
new
ArrayList<>();
gridView
=
(GridView)
view.findViewById(R.id.gv_keybord);
initDataList();
setupView();
addView(view);
//添加view
}
public
List<Map<String,
String>>
getDataList()
{
return
dataList;
}
private
void
initDataList()
{
//初始化數(shù)字?jǐn)?shù)據(jù)
for
(int
i
=
1;
i
<
13;
i++)
{
Map<String,
String>
map
=
new
HashMap<>();
if
(i
<
10)
{
map.put("keyName",
String.valueOf(i));
}
else
if
(i
==
10)
{
map.put("keyName",
"*");
}
else
if
(i
==
11)
{
map.put("keyName",
String.valueOf(0));
}
else
if
(i
==
12)
{
map.put("keyName",
"#");
}
dataList.add(map);
}
}
public
GridView
getGridView()
{
return
gridView;
}
private
void
setupView()
{
KeyBoardAdapter
keyBoardAdapter
=
new
KeyBoardAdapter(mContext,
dataList);
gridView.setAdapter(keyBoardAdapter);
}
}填充的GridView布局其中android:listSelector=”@android:color/transparent”設(shè)置GridView選擇器背景為透明色就可以按照item設(shè)置的樣式顯示狀態(tài)選擇了<?xml
version="1.0"
encoding="utf-8"?>
<FrameLayout
xmlns:android="/apk/res/android"
android:layout_width="wrap_content"
android:background="#3F51B5"
android:layout_height="wrap_content">
<!--
鍵盤
-->
<GridView
android:id="@+id/gv_keybord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:listSelector="@android:color/transparent"
android:horizontalSpacing="1dp"
android:numColumns="3"
android:verticalSpacing="1dp"
/>
</FrameLayout>二、GridView適配器,其中填充的item的背景可以是UI切的選型圖,也可以自己通過shape繪制出來public
class
KeyBoardAdapter
extends
BaseAdapter
{
private
Context
mContext;
private
List<Map<String,
String>>
mDataList;
public
KeyBoardAdapter(Context
context,
List<Map<String,
String>>
dataList)
{
this.mContext
=
context;
this.mDataList
=
dataList;
}
@Override
public
int
getCount()
{
return
mDataList.size();
}
@Override
public
Object
getItem(int
position)
{
return
mDataList.get(position);
}
@Override
public
long
getItemId(int
position)
{
return
position;
}
@Override
public
View
getView(int
position,
View
convertView,
ViewGroup
parent)
{
ViewHolder
viewHolder;
if
(convertView
==
null)
{
convertView
=
View.inflate(mContext,
R.layout.grid_item_virtual_keyboard,
null);
viewHolder
=
new
ViewHolder();
viewHolder.btnKey
=
(TextView)
convertView.findViewById(R.id.btn_keys);
convertView.setTag(viewHolder);
}
else
{
viewHolder
=
(ViewHolder)
convertView.getTag();
}
viewHolder.btnKey.setText(mDataList.get(position).get("keyName"));
return
convertView;
}
public
final
class
ViewHolder
{
public
TextView
btnKey;
}
}適配器item布局<?xml
version="1.0"
encoding="utf-8"?>
<RelativeLayout
xmlns:android="/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/btn_keys"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerInParent="true"
android:gravity="center"
android:background="@drawable/phone_bt_dial_num_selected"
android:textColor="#333333"
android:textSize="32sp"
/>
</RelativeLayout>三,在Activity中調(diào)用,首先要禁止系統(tǒng)的按鍵的彈出public
class
NormalKeyBoardActivity
extends
AppCompatActivity
{
private
KeyboardView
keyboardView;
private
GridView
gridView;
private
List<Map<String,
String>>
valueList;
private
EditText
textNum;
private
ImageButton
phone_delete;
private
String
amount;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_keyboard);
initView();
valueList
=
keyboardView.getDataList();
phoneDelete();
}
private
void
phoneDelete()
{
phone_delete.setOnClickListener(new
View.OnClickListener()
{
@Override
public
void
onClick(View
view)
{
DeleteNum();
}
});
}
//刪除鍵刪除的數(shù)字
private
void
DeleteNum()
{
if
(amount.length()
>
0)
{
amount
=
amount.substring(0,
amount.length()
-
1);
textNum.setText(amount);
Editable
ea
=
textNum.getText();
textNum.setSelection(ea.length());
}
}
private
void
initView()
{
textNum
=
(EditText)
findViewById(R.id.textAmount);
//
不調(diào)用系統(tǒng)鍵盤
if
(android.os.Build.VERSION.SDK_INT
<=
10)
{
textNum.setInputType(InputType.TYPE_NULL);
}
else
{
this.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
try
{
Class<EditText>
cls
=
EditText.class;
Method
setShowSoftInputOnFocus;
setShowSoftInputOnFocus
=
cls.getMethod("setShowSoftInputOnFocus",
boolean.class);
setShowSoftInputOnFocus.setAccessible(true);
setShowSoftInputOnFocus.invoke(textNum,
false);
}
catch
(Exception
e)
{
e.printStackTrace();
}
}
keyboardView
=
(KeyboardView)
findViewById(R.id.virtualKeyboardView);
phone_delete
=
(ImageButton)
findViewById(R.id.phone_bt_del);
gridView
=
keyboardView.getGridView();
gridView.setOnItemClickListener(onItemClickListener);
textNum.setOnClickListener(new
View.OnClickListener()
{
@Override
public
void
onClick(View
v)
{
keyboardView.setFocusable(true);
keyboardView.setFocusableInTouchMode(true);
keyboardView.setVisibility(View.VISIBLE);
}
});
}
private
AdapterView.OnItemClickListener
onItemClickListener
=
new
AdapterView.OnItemClickListener()
{
@Override
public
void
onItemClick(AdapterView<?>
adapterView,
View
view,
int
position,
long
l)
{
if
(position
<
11
&&
position
!=
9)
{
amount
=
textNum.getText().toString().trim();
amount
=
amount
+
valueList.get(position).get("keyName");
textNum.setText(amount);
Editable
ea
=
textNum.getText();
textNum.setSelection(ea.length());
}
else
{
if
(position
==
9)
{
amount
=
textNum.getText().toString().trim();
amount
=
amount
+
valueList.get(position).get("keyName");
textNum.setText(amount);
Editable
ea
=
textNum.getText();
textNum.setSelection(ea.length());
}else
if
(position
==
11)
{
String
amount
=
textNum.getText().toString().trim();
amount
=
amount
+
valueList.get(position).get("keyName");
textNum.setText(amount);
Editable
ea
=
textNum.getText();
textNum.setSelection(ea.length());
}
}
}
};
}activity中的布局<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<EditText
android:id="@+id/textAmount"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="numberDecimal"
android:padding="14dp"
android:gravity="center_horizontal"
android:textColor="#333333"
android:textSize="34sp"
/>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題開題報(bào)告:初中學(xué)生跨學(xué)科實(shí)踐能力測(cè)評(píng)與培養(yǎng)路徑研究
- 課題開題報(bào)告:產(chǎn)學(xué)研用協(xié)同發(fā)展研究
- 定制家具運(yùn)營(yíng)管理協(xié)議
- 香料、香精制造企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 二零二五年度企業(yè)高管激勵(lì)與勞動(dòng)合同
- 超氧化鈉企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 二零二五年度旅游酒店經(jīng)營(yíng)權(quán)承包協(xié)議書
- 二零二五年度智能家居系統(tǒng)個(gè)人購(gòu)房附加服務(wù)協(xié)議
- 辛醇-2企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 風(fēng)能新能源船舶企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 硬筆書法紙(打直接打印)
- 陳銀子礦山基建施工組織方案方案
- 襄陽(yáng)房地產(chǎn)市場(chǎng)月報(bào)2024年08月
- 工業(yè)互聯(lián)網(wǎng)平臺(tái)的架構(gòu)與功能
- 八年級(jí)英語(yǔ)下冊(cè)課件教學(xué)
- 人教版(2019) 必修第二冊(cè) Unit 1 Cultural Heritage Discovering Useful Structures(教案)
- 陳獨(dú)秀生平事跡
- 2024年人教版初三數(shù)學(xué)(下冊(cè))模擬試卷及答案(各版本)
- 《大學(xué)美育》高職全套教學(xué)課件
- 醫(yī)院CT機(jī)房裝飾改造工程施工組織設(shè)計(jì)
- 軟件工程自考02333重點(diǎn)難點(diǎn)匯集
評(píng)論
0/150
提交評(píng)論