activity

Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)

本小妞迷上赌 提交于 2019-11-29 16:25:49
转载注明地址: http://blog.csdn.net/xiaanming/article/details/9257853 最近有一个需要,我们公司做了一个apk客户端,然后其他的公司可以根据自己的需要来替换里面的资源图片,文字等一些资源文件问题,我本来想这个简单,用两个工程直接替换里面的资源文件就行,老大说,这样子不好,如果要改需要改两个客户端,而且还麻烦,叫我将所有的Activity打成Jar包的形式,这样子我们改了里面的内容就直接发布Jar包出去,其他公司直接下载Jar来使用,这样子他们自己公司也能更好的维护。 所以我就想直接将Activity打成Jar包,可是在使用的过程中发现这样子根本行不通,因为如果Activity引用了布局文件的话,比如R.layout.XXX或者R.string.XXX,我们使用的时候会报资源ID未找到的异常,在官网上看到可以将另一个工程当做Library http://developer.android.com/tools/projects/projects-eclipse.html ,可是这样子需要将源码给到人家,不能直接发布Jar包,貌似不是我要的那种情况,今天我教大家如果将Activity打成Jar包的形式 1.我们新建一个Android工程,取名为ActivityLibrary,这个就是等下我们需要打包成Jar的工程 注

Android高级面试 —— onActivityResult能不能设计成回调?

半世苍凉 提交于 2019-11-29 15:01:55
文章目录 1. 你觉得onActivityResult好用吗? 2. onActivityResult能设计成回调吗? 我觉得这是一个很有趣的问题,有趣的除了题目本身,也在于其引申出的感悟。我们在使用和学习Android Framework相关的内容时,除了要了解其内部实现机制,还要求自己要试着去反思,或者提问其设计的目的,这样才能帮助我们更好的理解和吸收其设计的精髓之处。 1. 你觉得onActivityResult好用吗? 面试官在提出设计问题前可能会先抛砖引玉,先提出这个问题来探一探面试者有没有真正的去体验和总结相关的内容。大部分人可能会说,麻烦!那为什么麻烦呢?首先先看一下onActivityResult是怎么使用的: // Activity A startActivityForResult ( intent , requestCode ) ; // Activity B setResult ( resultCode , intent ) ; // Activity A @Override protected void onActivityResult ( int requestCode , int resultCode , Intent data ) { super . onActivityResult ( requestCode , resultCode , data

[Android]Android开发入门之HelloWorld

谁都会走 提交于 2019-11-29 14:53:51
引言 :在做Unity开发的时候,发现这么个问题,虽然Unity是跨平台的,能够进行Android,IOS,Web,PC等开发,但如果要实现一些稍微系统层的东西,还是需要通过通信,调用原系统的接口(自定义的接口)来进行开发的,所以这还是需要了解其他平台原生态的开发的,之前我Web,IOS开发有了一定了解,最近要实现一个移动平台的二维码扫描功能,由于IOS我在现有资源的情况下,不能进行真机调试,但Android平台开发我又不熟悉,所以感觉很是头疼,于是就下定决心还是要了解一下原生态的Android开发,求人不如靠己,求人只能是暂时的,再有耐心的人都经过不起你的反复的问,他人也有他人的工作! 学习一门新的技术,都是从HelloWorld开始!这个是众所周知的,输入HelloWorld也就是进入了该开发的大门!下面我就写一下学习心得! 之前我一直从事的是Visual Stdio软件下的开发,无论是cocos2dx还是.net,Unity3d,都离不开VS,感觉微软最成功的不仅仅是Windows操作系统,还有一个就是Visual Stdio集成开发环境,我之前一直没有触碰与java相关的开发方向,就是因为习惯使用了VS,并且已经爱上它了,就不习惯Eclipse开发环境,java开发的程序员或许也会有这感觉,习惯上了Eclipse开发环境也就独爱它一样

写给Android开发者的Kotlin入门

只愿长相守 提交于 2019-11-29 14:02:54
写给Android开发者的Kotlin入门 Google在今年的IO大会上宣布,将Android开发的官方语言更换为Kotlin,作为跟着Google玩儿Android的人,我们必须尽快了解和使用Kotlin语言。 不过Kotlin毕竟是语言级别的新事物,比起Java来说,从编程思想到代码细节都有不少变化,我们最好先对Kotlin有个整体的基本的了解,然后再去学习和使用,这样才能高效地掌握Kotlin语言。 Java的辉煌与阴影 1995年,当年如日中天的Sun公司发布了Java语言,引起了巨大的轰动,与当时主流的C语言和Basic语言比起来,Java语言简单、面向对象、稳定、与平台无关、解释型、多线程、动态等特点,就像是打开了一个新的世界,一时间风靡全球,云集者众,微软为了模仿Java搞出C#语言,Netscape为了赶时髦硬塞出一个JavaScript语言,IBM则捏着鼻子做了Java IDE Eclipse(日蚀,呵呵)。直到现在,Java在编程世界里还占据着举足轻重的地位,Andy Rubin在开发Android系统时,也很自然地采用了Java和C++(C++负责NDK开发)作为开发语言。 但是,Java毕竟是20多年前的语言了,虽然有不断扩展更新,但是底层设计思想是很难改动的,这就导致它很难实现一些新的语言特性,例如函数式编程、Lambda 表达式、流式API、高阶函数

Activity的生命周期

╄→尐↘猪︶ㄣ 提交于 2019-11-29 11:43:46
活动的生存期 Activity 类中定义了七个回调方法,覆盖了活动生命周期的每一个环节,下面我来一一 介绍下这七个方法。 1. onCreate() 这个方法你已经看到过很多次了,每个活动中我们都重写了这个方法,它会在活动 第一次被创建的时候调用。你应该在这个方法中完成活动的初始化操作,比如说加载布 局、绑定事件等。 2. onStart() 这个方法在活动由不可见变为可见的时候调用。 3. onResume() 这个方法在活动准备好和用户进行交互的时候调用。 此时的活动一定位于返回栈的 栈顶,并且处于运行状态。 4. onPause() 这个方法在系统准备去启动或者恢复另一个活动的时候调用。 我们通常会在这个方 法中将一些消耗 CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度 一定要快,不然会影响到新的栈顶活动的使用。 5. onStop() 这个方法在活动完全不可见的时候调用。它和 onPause()方法的主要区别在于,如 果启动的新活动是一个对话框式的活动,那么 onPause()方法会得到执行,而 onStop() 方法并不会执行。 6. onDestroy() 这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。 7. onRestart() 这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。 以上七个方法中除了

分析Activity的View绑定过程

旧巷老猫 提交于 2019-11-29 10:48:56
在我们coding时,在Activity.onCreate()里面常用的教科书式的代码是: setContentView(R.layout.main); 然后我们就可通过: View view=findViewById(R.id.helloworld); 获取某个控件,但是这一切是如何完成的,本文会去探讨一下。 进入Activity的源码,查看setContentView()和findViewById()这两个函数查看原型: /*** * Set the activity content from a layout resource. The resource will be * inflated, adding all top-level views to the activity. * * @param layoutResID Resource ID to be inflated. */ public void setContentView( int layoutResID) { getWindow().setContentView(layoutResID); } /*** * Set the activity content to an explicit view. This view is placed * directly into the activity's view

Activity数据返回 startActivityForResult()用法详解

我与影子孤独终老i 提交于 2019-11-29 09:23:21
一、目标 如下图,用户在第一个页面填写完数据后点击“计算”按钮,程序跳转到第二个页面,并显示计算结果。在用户点击第二个页面的“返回计算结果”按钮后,程序跳转回第一个页面,并显示第二个页面的计算结果,注意第一个页面的变化。 二、思路 1、在第一个页面(MainActivity.java)中以方法startActivityForResult( )启动第二个页面(TwoActivity.java); view source print ? 01. private void jump2Activiy2() { 02. 03. Bundle bundle = new Bundle(); 04. bundle.putString( "strSex" , strSex); 05. bundle.putDouble( "douHeight" , douHeight); 06. Intent intent = new Intent(); 07. intent.setClass(MainActivity. this , TwoActivity. class ); 08. intent.putExtra( "bundle" , bundle); 09. startActivityForResult(intent, 0 ); 10. } 2、在第二个页面中对要返回的数据进行打包,并以方法setResult

安卓学习日记第二天——Fragment

时间秒杀一切 提交于 2019-11-29 08:54:41
一、基本概念 Fragment是依赖于Activity的,不能独立存在的。 一个Activity里可以有多个Fragment。 一个Fragment可以被多个Activity重用。 Fragment有自己的生命周期,并能接收输入事件。 我们能在Activity运行时动态地添加或删除Fragment。 Fragment的优点: 模块化(Modularity):只需要把代码写在各自的Fragment中。 可重用(Reusability):多个Activity可以重用一个Fragment。 可适配(Adaptability):根据硬件的屏幕尺寸、屏幕方向,能够方便地实现不同的布局。 二、添加到Activity方法 1、静态方法: 创建各个Fragment.xml添加各自组件,然后创建对应的Fragment类并继承自Fragment,重写OnCreateView觉得Fragment的布局 public class Fragment1 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment1,

程序设置横屏后,锁屏时会被销毁一遍,解锁时又重新加载onCreat的问题解决

早过忘川 提交于 2019-11-29 07:01:27
今天在写一个应用的时候,因为需要设置成横屏模式,所以在Manifest里面的Activity里面加了两个参数设置: android:screenOrientation = "landscape" android:configChanges = "keyboardHidden|orientation" 这是设置屏幕方向为横屏,以及禁止在屏幕切换的时候重启Activity和隐藏键盘。 横竖屏切换的知识可以看我另一篇文章。 本来是用的好好的,但是无意中在锁屏后再解锁的时候,应用会先竖屏,然后再转回横屏,而且还有一些时间间隔,于是我就去调查了一番: 首先,在所有Activity的生命周期加了一句 打印LOG,发现在锁屏的时候,Activity就执行了一遍onDestroy,解锁的时候,又重新从onCreat来打开,于是就又执行了一遍onCreat里面的代码,,,这不科学,正常情况下是不会执行这两个的(除非系统内存吃紧,自动销毁,但是这个情况排除了)。 经过反复查找和DEBUG之后,又和同学同事讨论了半天,还去查看了锁屏的源代码(虽然没看懂几句),还是没有结果,,, 不过,皇天不负有心人,终于在stackoverflow上找到一大神的回答了~ 问题的关键所在,就是API13以后,需要在 android:configChanges 的参数里面加一个 screenSize!!! 也就是:

在一个继承Activity的类中,不能同时让onCreate和构造函数同时出现吗?

寵の児 提交于 2019-11-29 06:55:17
在一个继续Activity的类中,不能同时让onCreate和构造函数同时出现吗?? 参考:http://bbs.csdn.net/topics/390321638 如果不能,原因为何? 如果能,为什么会出现错误? 先看一下java 的例子. //A.java public class A { public A() { System.out.println("===a 构造====="); } } /B.java public class B { static A a = new A(); static { System.out.println("===B static==="); } public B(){ System.out.println("B 构造"); } { System.out.println("===B 动态==="); } } //C.java public class C { /** * @param args */ public static void main(String[] args) { try { Class aClass = Class.forName("B"); Object anInstance = aClass.newInstance(); } catch (Exception e) { e.printStackTrace(); }