activity

王学岗高级UI9————事件分发机制

我与影子孤独终老i 提交于 2019-12-30 19:05:11
一 事件分发流程 被分发的对象是哪些?被分发的对象是用户触摸屏幕而产生的点击事件,事件主要包括:按下、滑动、抬起和取消。这些事件被封装成MotionEvent对象。该对象中的主要事件如下: 事件传递的顺序为:Activity -> Window ->DecorView(当前界面的底层容器)。一个点击操作要是没有被Activity下的任何View处理,即顶层DecorView的dispatchTouchEvent()方法返回false的话,则Activity的onTouchEvent()方法会被调用。 我们下面在源码中追踪下。 当我们点击手机屏幕的时候,硬件会通知软件,软件底层程序(C/C++)会调用java层Activity的dispatchTouchEvent(MotionEvent ev)方法。 public boolean dispatchTouchEvent(MotionEvent ev) { //如果是down,说明是一个新的事件 3398 if (ev.getAction() == MotionEvent.ACTION_DOWN) { 3399 onUserInteraction(); 3400 } //调用了PhoneWindow的superDispatchTouchEvent()方法, //把事件从Activity分发到DecorView /

Android:Activity之间跳转和参数传递

倾然丶 夕夏残阳落幕 提交于 2019-12-30 14:04:48
一个activity就好比一个网页,此文章讲解怎样创建一个activity并且实现跳转! 一、学习创建Activity 1、新建一个java类,右击src目录,选择new-->class,新的activity需要继承Activity类 2、需要复写onCreate() 例子: package com.example.testsend; import android.app.Activity; import android.os.Bundle; public class MainActivity2 extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.newtest); } } 3、配置到AndroidManifext.xml,在application下创建一个新的activity,如果跟MainActivity同一目录,可以只写.name,否则加包名,不过建议写全。 <activity android:name="com.example.testsend.MainActivity2"> </activity> 如果希望新的activity作为首页展示

Android Fragment和Activity

℡╲_俬逩灬. 提交于 2019-12-30 14:04:16
Fragment和Activity Fragment和Activity的交互   一个Fragment的实例总是和包含它的Activity直接相关。   fragment可以通过 getActivity() 方法来获得Activity的实例,然后就可以调用一些例如findViewById()之类的方法。   如:    View listView = getActivity() . findViewById (R.id.list);    但是注意调用getActivity()时,fragment必须和activity关联(attached to an activity),否则将会返回一个null。   相似的,activity也可以获得一个fragment的引用,从而调用fragment中的方法。   获得fragment的引用要用 FragmentManager ,之后可以调用 findFragmentById() 或者 findFragmentByTag() .   比如:    ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment); 创建事件回调    一些情况下,可能需要fragment和activity共享事件

Android 引导界面制作

て烟熏妆下的殇ゞ 提交于 2019-12-29 19:01:54
项目做完了,做了第一次启动,滑动的引导页了。 然后需求又要改成流行的图层图片引导了。如图: 大家一定也经常见吧,实现当然很简单了。FrameLayout上加一个图层就完了呗。让它点击后消失。  嗯,可是那么多界面,难道所有界面布局都要改吗?改成根元素上再套一层FrameLayout? 这里看过我 DecorView浅析 的童鞋,一定很来感觉。setContentView载入的布局的父元素不就是FrameLayout吗? 那么我们直接往它上面加引导图层不就可以了吗? Very good! 方法: 1. 只需要解决怎么找到那个Framelayout,我这里想到的办法是给每个xml布局的根元素设置一个id,通过findViewById找到咋们通过setContentView设置上布局, 再通过View的view.getParent();得到它的父元素。它的父元素不就是咋们的要的FrameLayout吗? 然后创建一个ImageView设置上引导图片加到FrameLayout就可以了。 由于有很多Activity,咋们当然要将这公共的事放在你们所有Activity的父类那里。我这里是BasicActivity。在onStart中调用了添加引导图片的方法。 2. 由于引导过的界面就没必要再次引导了。所以得保存记录。这里采用偏好设置保存,如果该Activity被引导过了,就将它的类全名保存下。

adb启动activity、service、发送broadcast

扶醉桌前 提交于 2019-12-28 23:23:31
一、adb启动activity: $ adb shell $ am start -n {包(package)名}/{包名}.{活动(activity)名称} 如:启动浏览器 # am start -n com.android.browser/com.android.browser.BrowserActivity 二、adb启动service: $ adb shell $ am startservice -n {包(package)名}/{包名}.{服务(service)名称} 如:启动自己应用中一个service # am startservice -n com.android.traffic/com.android.traffic.maniservice 三、adb发送broadcast: $ adb shell $ am broadcast -a <广播动作> 如:发送一个网络变化的广播 # am broadcast -a android.net.conn.CONNECTIVITY_CHANGE 来源: https://www.cnblogs.com/guanghma/p/10987770.html

Android基础Activity篇——创建一个活动(Activity)

末鹿安然 提交于 2019-12-28 21:47:32
1.创建活动 首先用AS创建一个add no activity项目名使用ActivityTest,包名为默认的com.example.activitytest 2.右击app.java.com.example.activitytest包,new-->Activity-->Empty Activity,将活动命名为FirstActivity,不勾选Generate(生成) Layout和Launcher Activity选项。 其中 Layout是布局用的 ,而 Launcher Activity是用于将当前活动设置为Main活动 。 3.打开刚才创建的FirstActivity.java,可以看到AS已经自动重写了onCreate()方法。 public class FirstActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }} 需注意的是 项目中的任何活动都应该重写该方法 。从super可以看出这里的onCreate()是直接调用的父类的方法。 4.创建布局 在res目录右击,new-->Directory(目录),创建layout目录。右击layout--

Android集成支付宝的坑

馋奶兔 提交于 2019-12-28 19:34:43
Android在集成支付宝sdk的时候, 如果有安装支付宝,则启动支付宝app进行支付; 如果没有安装,则启动 H5PayActivity 进行支付。 记得在AndroidManifest里面配置: <activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation|screenSize" android:exported="false" android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden"> </activity> <activity android:name="com.alipay.sdk.auth.AuthActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind"> </activity> 然而~~~~ H5PayActivity 启动了还有可能是白屏!白屏!白屏!!点解?

用Activity 书写一个dialog

夙愿已清 提交于 2019-12-28 07:23:29
在项目中的用到弹窗时,一般都会用Dialog,其实可以使用Dialog样式的Activity来实现,只需要在注册Activity时指明theme就行。下面就记录一下这个Dialog的创建过程,以及一些遇到的坑。 第一步:创建一个DialogActivity,继承自Activity, 第二步:在注册清单里给这个Activity,添加主题样式theme, <activity android:name=".han.DialogActivity" android:label="@string/app_name" android:theme="@style/activityDialogTheme"> </activity> 其中的activityDialog 在res_values_styles.xml 下创建的一个dialog样式: <style name="activityDialogTheme" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item><!--边框--> <item name="android:windowIsFloating">false</item><!--是否浮现在activity之上--> <item name="android

Android事件分发机制--浅显易懂解析

别等时光非礼了梦想. 提交于 2019-12-27 05:49:25
Android事件分发机制的本质 将点击事件向某个View进行传递并且最终得到处理,即当一个点击事件发生后,系统需要将这个事件传递给一个具体的View处理,这个事件的传递过程就是事件分发过程 事件在那些对象传递 Activity、ViewGroup、View分发流程:Activity(Window)-> ViewGroup -> Viewsuper:调用父类方法true:处理事件,事件不在继续往下传递false:不处理事件,事件也不继续传递,交给父控件的onTouchEvent()处理传递: Activity -> ViewGroup -> View 从上往下调用dispatchTouchEvent() View -> ViewGroup -> Activity 从下往上调用onTouchEvent() 1. Activity的事件分发 当一个点击事件发生时,事件最先到达Activity的dispatchTouchEvent()进行事件分发 public boolean dispatchTouchEvent ( MotionEvent ev ) { //一个事件的开始总是从DOWN开始 if ( ev.getAction ( ) == MotionEvent.ACTION_DOWN ) { //默认空方法,每当按键、触摸、trackBall事件分发到当前的Activity就会被调用

ARouter路由解析

谁说胖子不能爱 提交于 2019-12-27 02:44:45
目录介绍 01.原生跳转实现 02.实现组件跳转方式 2.1 传统跳转方式 2.2 为何需要路由 03.ARouter配置与优势 04.跨进程组件通信 4.1 URLScheme 4.2 AIDL 4.3 BroadcastReceiver 4.4 路由通信注意要点 05.ARouter的结构 06.ARouter的工作流程 6.1 初始化流程 6.2 跳转页面流程 07.ARouter简单调用api 7.1 最简单调用 7.2 build源码分析 7.3 navigation分析 08.Postcard信息携带 09.LogisticsCenter 10.DegradeService降级容错服务 11.Interceptor拦截器 12.数据传输和自动注入 13.多dex的支持 14.InstantRun支持 15.生成的编译代码 好消息 博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是markdown格式的!同时也开源了生活博客,从12年起,积累共计N篇[近100万字,陆续搬到网上],转载请注明出处,谢谢! 链接地址: https://github.com/yangchong211/YCBlogs