最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實(shí)現(xiàn)底部支付彈窗效果

 更新時(shí)間:2017年01月25日 09:09:06   作者:ganshenml  
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)底部支付彈窗效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Android底部支付彈窗實(shí)現(xiàn)的效果:

實(shí)現(xiàn)的思路:

1.通過繼承PopupWindow自定義View來達(dá)到彈窗的彈出效果;

2.通過回調(diào)將輸入的密碼由彈窗傳入到主界面中;

2.恩,這就夠了——>有些注意點(diǎn)在代碼中備注;

自定義View的代碼:

public class BottomDialogView extends PopupWindow { 
 private View dialogView; 
 private EditText payPassEt; 
 private Button cancelBtn, confirmBtn; 
 private ImageView backDialogIv; 
 
 public BottomDialogView(Activity context, final BottomDialogOnclickListener bottomDialogOnclickListener) { 
 super(context); 
 LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
 dialogView = inflater.inflate(R.layout.dialog, null); 
 backDialogIv = (ImageView) dialogView.findViewById(R.id.backDialogIv); 
 payPassEt = (EditText) dialogView.findViewById(R.id.payPassEt); 
 cancelBtn = (Button) dialogView.findViewById(R.id.cancelBtn); 
 confirmBtn = (Button) dialogView.findViewById(R.id.confirmBtn); 
 backDialogIv.setOnClickListener(new OnClickListener() { 
  @Override 
  public void onClick(View view) { 
  dismiss(); 
  } 
 }); 
 cancelBtn.setOnClickListener(new OnClickListener() { 
  @Override 
  public void onClick(View view) { 
  dismiss(); 
  } 
 }); 
 confirmBtn.setOnClickListener(new OnClickListener() { 
  @Override 
  public void onClick(View view) { 
  bottomDialogOnclickListener.onPositiveClick(payPassEt.getText().toString().trim(), BottomDialogView.this); 
  } 
 }); 
 
 
 this.setContentView(dialogView); 
 this.setWidth(LayoutParams.MATCH_PARENT); 
 this.setHeight(LayoutParams.MATCH_PARENT); 
 this.setFocusable(true); 
 this.setAnimationStyle(R.style.DialogShowStyle); //設(shè)置彈出窗體動(dòng)畫效果 
 ColorDrawable dw = new ColorDrawable(0xb0000000); 
 this.setBackgroundDrawable(dw); 
 
 dialogView.setOnTouchListener(new OnTouchListener() { 
  public boolean onTouch(View v, MotionEvent event) { 
  int height = dialogView.findViewById(R.id.pop_layout).getTop(); 
  int y = (int) event.getY(); 
  if (event.getAction() == MotionEvent.ACTION_UP) { 
   if (y < height) { //添加OnTouchListener監(jiān)聽判斷獲取觸屏位置如果在選擇框外面則銷毀彈出框 
//   dismiss(); 
   } 
  } 
  return true; 
  } 
 }); 
 
 } 
 
} 

分析:其實(shí)很簡(jiǎn)單,無法就是通過加載布局將布局裝載至自定義的View中。bottomDialogOnclickListener 是自定義的回調(diào)接口,無法就是將值傳遞至主界面中。

主界面代碼:

public class ShowBottomDialogAct extends AppCompatActivity { 
 private Button showBtn; 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_show_bottom_dialog); 
 showBtn = (Button) findViewById(R.id.showBtn); 
 showBtn.setOnClickListener(new View.OnClickListener() { 
  @Override 
  public void onClick(View view) { 
  showDialog(); 
  } 
 }); 
 } 
 
 
 private void showDialog() { 
 DialogUtil.showBottomDialog(ShowBottomDialogAct.this, R.id.activity_show_bottom_dialog, new BottomDialogOnclickListener() { 
  @Override 
  public void onPositiveClick(String contentStr, BottomDialogView dialogView) { 
  dialogView.dismiss(); 
  } 
 }); 
 } 
 
} 

分析:可以看到,主界面的代碼異常簡(jiǎn)單,主要是通過自定義一個(gè)幫助類來進(jìn)行彈窗的顯示——>因?yàn)閺棿昂芸赡茉诙鄠€(gè)界面使用,所以這種寫法個(gè)人還是比較喜歡的。另外通過回調(diào)將彈窗對(duì)象給傳輸出來,以便在使用的時(shí)候根據(jù)網(wǎng)絡(luò)請(qǐng)求的具體情況來控制彈窗的顯示與取消。

幫助類的代碼:

public static void showBottomDialog(Activity activity , int dialogLayoutId , BottomDialogOnclickListener bottomDialogOnclickListener){ 
 
 BottomDialogView bottomDialogView = new BottomDialogView(activity, bottomDialogOnclickListener); 
 bottomDialogView.showAtLocation(activity.findViewById(dialogLayoutId), Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); //設(shè)置窗口顯示在parent布局的位置并顯示 
 InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);//自動(dòng)打開軟鍵盤 
 imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); 
 
 } 

分析:兩點(diǎn)——>1.負(fù)載布局文件;2.控制軟鍵盤顯示與關(guān)閉;

另外一個(gè)很重要的點(diǎn),花了不少時(shí)間才去發(fā)現(xiàn):彈窗彈起的時(shí)候,軟鍵盤一般是會(huì)覆蓋一部分輸入框的,這是非常不好看的。之所以demo中沒有出現(xiàn)這種情況,是通過了特殊的處理——>將整個(gè)彈窗布局外包一層ScrollView,這樣方便軟鍵盤彈起找到輸入框焦點(diǎn)時(shí)會(huì)將整個(gè)布局往上頂。但,這還不夠,一定要在ScrollView中設(shè)置一個(gè)屬性:

android:fillViewport="true" 

最后,GitHub地址>>https://github.com/ganshenml/BottomDialogApp

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

抚顺市| 贵州省| 苗栗县| 苏尼特左旗| 东丽区| 兰考县| 鹤峰县| 乌兰浩特市| 如皋市| 江西省| 邵阳县| 宁安市| 许昌县| 西宁市| 城市| 积石山| 水城县| 双柏县| 花莲市| 抚顺县| 崇信县| 呼图壁县| 秦皇岛市| 富蕴县| 定州市| 桦甸市| 广南县| 莱州市| 高雄县| 布拖县| 黎城县| 郸城县| 类乌齐县| 饶平县| 乐安县| 共和县| 苏州市| 威远县| 夏津县| 水富县| 岢岚县|