安卓开发接口回调(安卓调用后端接口)

网友投稿 619 2023-03-07


本篇文章给大家谈谈安卓开发接口回调,以及安卓调用后端接口对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享安卓开发接口回调的知识,其中也会对安卓调用后端接口进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Android接口回调总结,以及运用到弹窗PopWindow的Demo实现

最近项目中接触到接口回调,以及Android弹窗PopWindow组件的使用,现在利用学到的知识自己写了一个简单的Demo,练习下在Android下如何运用接口回调,来实现弹窗PopWindow的功能。

1. 定义一个接口:OnSelectItemListener。定义一个方法 void selectItem(String name, int type),作为点击弹窗的每个Item的回调接口。

2. 自定义弹窗类:MyPopupWindow,其布局文件为popup_window.xml。当在MainActivity调用其构造函数创建对象时,同时执行initPopupWindow()函数,给每个Item设置监听器,监听点击Item时,回调接口函数selectItem("Pop Window A", POP_WINDOW_ITEM_1),该函数在MainActivity中实现。

3. 主Activity: MainActivity。其布局文件为一个Button和一个TextView。监听Button,每当点击则弹出PopWindow,呈现三个Item。调用MyPopupWindow类中的方法setOnSelectItemListener(OnSelectItemListener listener),传入OnSelectItemListener 对象作为参数,同时实现回调接口OnSelectItemListener的方法void selectItem(String name, int type)。

主Activity: MainActivity. Java

[java] view plain copy
packagecom.lambdroid.callbacktest2;

importandroid.app.Activity;

importandroid.content.Context;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.widget.Button;

importandroid.widget.TextView;

importandroid.widget.Toast;

//联系接口的回调以及PopWindow弹窗的简单使用

publicclassMainActivityextendsActivity {

privateMyPopupWindow myPopupWindow;

privateButton btn_pop_window;

privateTextView tv_display;

protectedContext context;

@Override

protectedvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

context =this;

btn_pop_window = (Button) findViewById(R.id.btn_pop_window);

tv_display = (TextView) findViewById(R.id.tv_display);

//给Button设置事件监听:弹出弹窗

btn_pop_window.setOnClickListener(newView.OnClickListener() {

@Override

publicvoidonClick(View v) {

myPopupWindow.show(btn_pop_window);

}

});

myPopupWindow =newMyPopupWindow(context);

//实现OnSelectItemListener接口的selectItem方法:对于弹窗三个Item的事件监听

myPopupWindow.setOnSelectItemListener(newOnSelectItemListener() {

@Override

publicvoidselectItem(String name,inttype) {

//点击电站列表,弹出弹框

if(myPopupWindow !=null myPopupWindow.isShowing()) {

myPopupWindow.dismiss();

}

tv_display.setText(name);

switch(type){

caseMyPopupWindow.POP_WINDOW_ITEM_1:

Toast.makeText(context,"我是弹窗A, 我的英文名是"+ name, Toast.LENGTH_SHORT).show();

break;

caseMyPopupWindow.POP_WINDOW_ITEM_2:

Toast.makeText(context,"我是弹窗B, 我的英文名是"+ name, Toast.LENGTH_SHORT).show();

break;

caseMyPopupWindow.POP_WINDOW_ITEM_3:

Toast.makeText(context,"我是弹窗C, 我的英文名是"+ name, Toast.LENGTH_SHORT).show();

break;

default:

break;

}

}

});

}

}

activity_main.xml

[html] view plain copy
android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:id="@+id/btn_pop_window"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:layout_margin="20dp"

android:padding="20dp"

android:text="Pop Window"

android:textSize="20sp"/

android:id="@+id/tv_display"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="10dp"

android:gravity="center"

android:text="Hello World!"

android:textSize="30sp"/

自定义弹窗类:MyPopupWindow.java

[java] view plain copy
packagecom.lambdroid.callbacktest2;

importandroid.app.ActionBar;

importandroid.content.Context;

importandroid.graphics.drawable.ColorDrawable;

importandroid.view.LayoutInflater;

importandroid.view.View;

importandroid.widget.LinearLayout;

importandroid.widget.PopupWindow;

publicclassMyPopupWindowimplementsView.OnClickListener{

privatePopupWindow mPopWindow;

privateContext mContext;

privateLinearLayout llPop1;

privateLinearLayout llPop2;

privateLinearLayout llPop3;

privateintpw_height;

publicstaticfinalintPOP_WINDOW_ITEM_1 =1;

publicstaticfinalintPOP_WINDOW_ITEM_2 =2;

publicstaticfinalintPOP_WINDOW_ITEM_3 =3;

privateOnSelectItemListener listener;

publicvoidsetOnSelectItemListener(OnSelectItemListener listener){

this.listener = listener;

}

publicMyPopupWindow(Context context){

mContext = context;

initPopupWindow();//初始化弹窗

}

publicvoidinitPopupWindow(){

View view = LayoutInflater.from(mContext).inflate(R.layout.popup_window,null);

mPopWindow =newPopupWindow(view, ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT,true);

mPopWindow.setOutsideTouchable(true);

/** 为其设置背景,使得其内外焦点都可以获得 */

mPopWindow.setBackgroundDrawable(newColorDrawable());

mPopWindow.setFocusable(true);

pw_height = view.getHeight();

llPop1 = (LinearLayout) view.findViewById(R.id.ll_pop_1);

llPop1.setOnClickListener(this);

llPop2 = (LinearLayout) view.findViewById(R.id.ll_pop_2);

llPop2.setOnClickListener(this);

llPop3 = (LinearLayout) view.findViewById(R.id.ll_pop_3);

llPop3.setOnClickListener(this);

}

//监听三个弹窗的点击事件

@Override

publicvoidonClick(View v) {

switch(v.getId()){

caseR.id.ll_pop_1:

if(listener !=null) {

listener.selectItem("Pop Window A", POP_WINDOW_ITEM_1);//回调接口

}

break;

caseR.id.ll_pop_2:

if(listener !=null) {

listener.selectItem("Pop Window B", POP_WINDOW_ITEM_2);

}

break;

caseR.id.ll_pop_3:

if(listener !=null) {

listener.selectItem("Pop Window C", POP_WINDOW_ITEM_1);

}

break;

default:

break;

}

}

//显示弹窗,并设置弹窗基于标题栏的显示位置

publicvoidshow(View view) {

//popupwindow相对view位置x轴偏移量

View viewTemp = mPopWindow.getContentView();

viewTemp.measure(0,0);

intwidth = viewTemp.getMeasuredWidth();

intxOffset = (view.getWidth() - width) /2;

mPopWindow.showAsDropDown(view, xOffset,0);

}

/**

* 退出popupwindow

*/

publicvoiddismiss() {

if(mPopWindow !=null mPopWindow.isShowing()) {

mPopWindow.dismiss();

}

}

/**

* popupwindow是否正在显示

*/

publicbooleanisShowing() {

if(mPopWindow !=null) {

returnmPopWindow.isShowing();

}

returnfalse;

}

}

popup_window.xml

[html] view plain copy
android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical"

android:id="@+id/ll_alarm_type"

android:layout_width="120dp"

android:layout_height="130dp"

android:orientation="vertical"

android:background="@drawable/popupwindow"

android:paddingBottom="16dp"

android:paddingTop="16dp"

android:id="@+id/ll_pop_1"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:layout_marginTop="5dp"

android:layout_gravity="center_horizontal"

android:orientation="vertical"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:text="窗口 A"

android:textSize="15sp"

android:textColor="#ffffff"/

android:id="@+id/ll_pop_2"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:layout_gravity="center_horizontal"

android:orientation="vertical"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:text="窗口 B"

android:textSize="15sp"

android:textColor="#ffffff"/

android:id="@+id/ll_pop_3"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:layout_gravity="center_horizontal"

android:orientation="vertical"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:text="窗口 C"

android:textSize="15sp"

android:textColor="#FFFFFF"/

回调接口:OnSelectItemListener

[java] view plain copy
packagecom.lambdroid.callbacktest2;

publicinterfaceOnSelectItemListener {

voidselectItem(String name,inttype);

}

点击Button,弹出弹窗,显示三个Item

点击第二个Item,通过回调函数,来实现TextView内容的修改,以及弹出Toast

总结

Java回调情形涉及很多,本文属于接口的异步回调:当不知道何时会执行接口的回调函数,(通过接口回调来对获取到的资源的操作)。除此还有线程间的异步回调(子线程进行耗时操作,操作完毕通知主线程或将数据传给主线程处理),以及利用接口回调来实现线程间的数据通信等等(Android可以利用Handler来实现)。等下次再举例说明Java回调函数的其它情形。

Android动态加载调用方法时方法的参数里面带有接口,如何获取接口的回调

在Android中到处可见接口回调机制,尤其是UI事件处理方面,本文给大家介绍android接口回调机制,涉及到android接口回调相关知识,对本文感兴趣的朋友可以参考下本篇文章

在使用接口回调的时候发现了一个经常犯的错误,就是回调函数里面的实现有可能是用多线程或者是异步任务去做的,这就会导致我们期望函数回调完毕去返回一个主函数的结果,实际发现是行不通的,因为如果回调是多线程的话你是无法和主函数同步的,也就是返回的数据是错误的,这是非常隐秘的一个错误。那有什么好的方法去实现数据的线性传递呢?先介绍下回调机制原理。
回调函数
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
开发中,接口回调是我们经常用到的。
接口回调的意思即,注册之后并不立马执行,而在某个时机触发执行。
举个例子:
A有一个问题不会,他去问B,B暂时解决不出来,B说,等我(B)解决了再告诉你(A)此时A可以继续先做别的事情。
那么就只有当B解决完问题后告诉A问题解决了,A才可以能解决这个问题。
代码中比如最常用的:
一个Activity中给按钮一个接口回调方法,只有用户点击了这个按钮,告诉按钮被点击了,才会执行按钮接口回调的方法

Android里怎么接口回调的方法从fragment向Activity传值

接口回调实现步骤
1:定义接口
2:activity实现接口,实现接口方法
3:fragment得到接口对象,在内容加载完后调用接口方法
4:在activity中接口回调方法得到回传值
fragment----接口回调---activity

android最基本-自定义回调

仅以此篇记录最最基本的接口回调的处理,常见的使用是:recyclerview的条目点击事件...

以recylerview的条目点击事件为例,步骤:
1.在Adapter中定义MyOnItemClickListener接口, 在接口中定义抽象方法 关于安卓开发接口回调和安卓调用后端接口的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 安卓开发接口回调的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于安卓调用后端接口、安卓开发接口回调的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:vue axios 二次封装的示例代码
下一篇:详解Java内存泄露的示例代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~