【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android怎么實(shí)現(xiàn)圓形純數(shù)字按鈕_第1頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android怎么實(shí)現(xiàn)圓形純數(shù)字按鈕_第2頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android怎么實(shí)現(xiàn)圓形純數(shù)字按鈕_第3頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android怎么實(shí)現(xiàn)圓形純數(shù)字按鈕_第4頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android怎么實(shí)現(xiàn)圓形純數(shù)字按鈕_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論