大佬教程收集整理的这篇文章主要介绍了Android自定义滑动接听电话控件组实例,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文根据组件开发思想,首先介绍android@L_772_0@控件,然后将@L_772_0@的控件封装为jar包。最为实现滑动接听电话控件组。
一、目录结构
二、运行效果
三、代码实现
首先,@L_772_0@一个类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(R_671_11845@Context.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是@L_772_0@的子控件,是该类的内部类两个几乎一样,我贴出其中一个
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自定义滑动接听电话控件组实例所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。