Android自定义滑动接听电话控件组实例

Android自定义滑动接听电话控件组实例,第1张

概述本文根据组件开发思想,首先介绍android自定义控件,然后将自定义的控件封装为jar包。最为实现滑动接听电话控件组。

本文根据组件开发思想,首先介绍androID自定义控件,然后将自定义的控件封装为jar包。最为实现滑动接听电话控件组。

一、目录结构

二、运行效果

三、代码实现

首先,自定义一个类IncomingPhone继承relativeLayout

public IncomingPhone(Context context,AttributeSet attrs) {     super(context,attrs);     mContext = context;     TextVIEw textVIEw = new TextVIEw(mContext);     textVIEw.setText("caonima");     pickUpVIEw = new PickUpVIEw(mContext);     hangUpVIEw = new HangUpVIEw(mContext);     pickUpVIEw.setBackground(getResources().getDrawable(R.drawable.pick_up_background));     hangUpVIEw.setBackground(getResources().getDrawable(R.drawable.hang_up_background));     relativeLayout.LayoutParams lp1 = new relativeLayout.LayoutParams(VIEwGroup.LayoutParams.WRAP_CONTENT,VIEwGroup.LayoutParams.WRAP_CONTENT);     lp1.addRule(relativeLayout.AliGN_PARENT_RIGHT,relativeLayout.TRUE); /    pickUpVIEw.setBackground(mContext.getDrawable(R.drawable.pick_up_background));     pickUpVIEw.setPickUpListener(new PickUpVIEw.PickUpListener() {       @OverrIDe       public voID pickUpEvent() {         mIncomingPhoneResultListener.incomingPhoneResultEvent("PICKUP");       }     });     hangUpVIEw.setHangUpListener(new HangUpVIEw.HangUpListener() {       @OverrIDe       public voID hangUpEvent() {          mIncomingPhoneResultListener.incomingPhoneResultEvent("HANGUP");       }     });     pickUpVIEw.setontouchListener(new OntouchListener() {       @OverrIDe       public boolean ontouch(VIEw v,MotionEvent event) {         switch (event.getAction()) {           case MotionEvent.ACTION_DOWN:             hangUpVIEw.setVisibility(VIEw.GONE);             break;           case MotionEvent.ACTION_UP:             hangUpVIEw.setVisibility(VIEw.VISIBLE);             pickUpVIEw.setVisibility(VIEw.VISIBLE);             break;           default:             break;         }         return false;       }     });     hangUpVIEw.setontouchListener(new OntouchListener() {       @OverrIDe       public boolean ontouch(VIEw v,MotionEvent event) {         switch (event.getAction()) {           case MotionEvent.ACTION_DOWN:             pickUpVIEw.setVisibility(VIEw.GONE);             break;           case MotionEvent.ACTION_UP:             hangUpVIEw.setVisibility(VIEw.VISIBLE);             pickUpVIEw.setVisibility(VIEw.VISIBLE);             break;           default:             break;         }         return false;       }     });     addVIEw(textVIEw);     addVIEw(pickUpVIEw);     addVIEw(hangUpVIEw,lp1);   } 

构造函数中添加子控件,并添加滑动事件以及监听器,其中PickUpVIEw、HangUpVIEw是自定义的子控件,是该类的内部类两个几乎一样,我贴出其中一个

class PickUpVIEw extends relativeLayout {   private Context mContext;   private final int minWIDth = 360;   private int screenWIDth;   private int mWIDth;   private int mHeight;   private PickUpListener mPickUpListener;    public voID setPickUpListener(PickUpListener mPickUpListener) {     this.mPickUpListener = mPickUpListener;   }    public int getmWIDth() {     mWIDth = getLayoutParams().wIDth;     return mWIDth;   }    public voID setmWIDth(int wIDth) {     mWIDth = wIDth;     getLayoutParams().wIDth = mWIDth;     requestLayout();   }    public int getmHeight() {     mHeight = getLayoutParams().height;     return mHeight;   }    public voID setmHeight(int height) {     mHeight = height;     getLayoutParams().height = mHeight;     requestLayout();   }   public PickUpVIEw(Context context) {      super(context);     WindowManager wm = (WindowManager) getContext()         .getSystemService(Context.WINDOW_SERVICE);      screenWIDth = wm.getDefaultdisplay().getWIDth();   }    @OverrIDe   public boolean ontouchEvent(MotionEvent event) {     int firstX = 0;     int lastX = 0;     mWIDth = getmWIDth();     switch (event.getAction()) {       case MotionEvent.ACTION_DOWN:         firstX = (int) event.getX(); //        ObjectAnimator.ofInt(this,"mWIDth",500).setDuration(5000).start();         break;       case MotionEvent.ACTION_MOVE:         lastX = (int) event.getX();         setmWIDth(lastX); //        Log.e("起始坐标",String.valueOf(firstX)); //        Log.e("结束坐标",String.valueOf(lastX));         break;       case MotionEvent.ACTION_UP:         lastX = (int) event.getRawX();         if (lastX > screenWIDth / 7 * 6) {           mPickUpListener.pickUpEvent();         } else {           setmWIDth(minWIDth);         }         break;       default:         break;     }     return true;   }    public interface PickUpListener {     public voID pickUpEvent();   } } 

在XML文件中定义

<relativeLayout     androID:layout_wIDth="match_parent"     androID:layout_height="wrap_content">     <com.example.administrator.pickuptest.IncomingPhone       androID:ID="@+ID/incoming"       androID:layout_wIDth="match_parent"       androID:layout_height="80dp">     </com.example.administrator.pickuptest.IncomingPhone>     <button       androID:ID="@+ID/btn_hang_up"       androID:layout_margin="10dp"       androID:background="#ff0000"       androID:textcolor="#ffffff"       androID:visibility="gone"       androID:layout_wIDth="match_parent"       androID:layout_height="80dp"       androID:text="挂断"/>   </relativeLayout> 

   在Activity中使用

incomingPhone = (IncomingPhone)findVIEwByID(R.ID.incoming); mBtnHangUp=(button)findVIEwByID(R.ID.btn_hang_up); incomingPhone.setIncomingPhoneResultListener(new IncomingPhone.IncomingPhoneResultListener() {   @OverrIDe   public voID incomingPhoneResultEvent(String result) {     if ("PICKUP".equals(result)){       Log.e("","打电话");       incomingPhone.setVisibility(VIEw.GONE);       mBtnHangUp.setVisibility(VIEw.VISIBLE);     }     else {       Log.e("","挂电话");       incomingPhone.setVisibility(VIEw.GONE);       mBtnHangUp.setVisibility(VIEw.VISIBLE);     }   } }); 

问题:图片大小以及屏幕适配可能会有些问题,如果使用,请注意测试。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android自定义滑动接听电话控件组实例全部内容,希望文章能够帮你解决Android自定义滑动接听电话控件组实例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1147969.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存