学习心得
Android布局的学习
- button按钮的背景调节
android:textColor="#FFFFFF"
可将其调成透明,"#FFFFFF"也可换成其他颜色,点击对应行数边上的白色图标即可点开调色盘,可在此选择需要的颜色
- 设置背景图片
- 将所需图片导入drawable文件夹(app/src/main/res/drawable)
- 对应代码
android:background="@drawable/back"
//back是背景图片的文件名
- 设置背景图片透明度
代码如下:
holder.linearLayout.getBackground().setAlpha(150);
holder.img_sign.setAlpha(150);
//alpha为透明度
但是加入代码后报错,没有找到原因,多次更改后意识到可以直接编辑图片,所以没有继续学习
调用sd卡存储和使用数据的学习
-
应用程序下的文件读写
在as里提供了DeviceFileExplorer查看应用程序的目录,具体路径是/data/data/应用程序包名。
如果是虚拟机可以直接看到该路径下的内容,如果是真机需要root。
androd对应用程序下的文件读写固定在files文件夹中,一般不需要权限。 -
assets下的文件读取
先添加assets文件夹,在程序目录上右键.添加完成后assets文件夹是与res文件夹同级的。这里的文件最后会被打包到apk中,一般存放一些图片htmljs css 等文件,大小不能超过1M。也可以在此文件夹下建立文件目录。
public void ReadAssetsFile(Context context, String file) {
try {
InputStream open = context.getResources().getAssets().open(file);
InputStreamReader isr = new InputStreamReader(open, "UTF-8");
BufferedReader bfr = new BufferedReader(isr);
String ln;
while ((ln = bfr.readLine()) != null) {
System.out.println(ln);
}
} catch (Exception e) {
e.printStackTrace();
}
}
-
raw下的文件读取
首先添加raw文件夹,在res文件夹上右键添加。这里的文件最后会被打包到apk中,同时会被编译到R.java文件中,访问的时候直接使用资源ID。raw不可以有目录结构,大小没有限制,可以放音频、视频文件。 -
SD卡下的文件读写
如果用的是虚拟机,那么自动就有sd卡的挂载位置,具体路径为/mnt/sdcard/。可以在DeviceFileExplorer中查看。sd卡中数据的读写需要权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
参考博客:
接口与服务器的学习
-
需求
Android开发一般页面分为启动页(SplashActivity)、引导页(GuideActivity)、活动闪屏页(ScreenActivity)、主页(MainActivity)、登录页(LoginActivity)等以及其他页面。
Android开发主页(MainActivity)的启动模式一般设置为:android:launchMode=“singleTask”,只有设置了这种启动模式才能更好的避免重复的启动主页面以及退出页面顺序异常的问题。 -
实现过程
正确的实现过程,首先判断被拉起的B应用是否处于后台运行。1、没有处于后台运行,A应用正常拉起B应用的主界面,然后再通过A应用传递type值,再跳转到对应的B界面。这时返回的顺序是B(type对应的界面)—>B应用的主界面—>A应用的界面;2、处于后台运行,说明B应用已经被打开,处于后台运行模式,这时我们不可以走B应用启动主界面的逻辑了,如果执意要这样做,由于我们设置了主页的启动模式为android:launchMode=“singleTask”,那么在B应用栈中位于B应用主界面以上的界面全部都会出栈,我们设置主界面的启动模式为singleTask是为了更好的避免重复的启动主页面以及退出页面顺序异常的问题。所以我们可以直接启动Activity的管理工具类,在启动页获取栈顶的Activity,然后在栈顶的Activity的基础上启动type对应的界面,这时返回的顺序是B(type)对应的界面—>B应用之前打开的界面—>B应用的主界面—>A应用的界面。 -
实现方法
我们通过Intent的隐式启动来拉起。
隐式启动拉起第三方APP有三种方式:1、Package;2、Action;3、Uri(推荐)。
- 首先判断我们拉起(跳转)的第三方APP是否存在
- 不存在APP则让它跳转到应用商店
- 第一种方法包名拉起 ,关于B应用的处理方法,有Demo可以参考
//A应用直接拉起B应用
Intent intent = getPackageManager().getLaunchIntentForPackage("B应用包名");
if (intent != null) {
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
//拉起B应用的某个界面,我们可以传一个type值;当然如果知道你要跳转的Activity的类名
也可以这样写。
Intent intent = new Intent();
intent.setClassName("B应用包名", "B应用包名.Activity");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
- Action方式,需要在被拉起的B应用清单文件中启动页Activity添加以下配置
//需要注意的不要在原来的基础上添加
<!--ACTION启动配置-->
<intent-filter>
<action android:name="SHIQJ" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
A应用
Intent intent = new Intent();
intent.setAction("SHIQJ");//这个值一定要和B应用的action一致,否则会报错
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
-
URI方式拉起 B应用清单文件需要配置:
在启动页(SplashActivity)清单文件增加如下配置:注意:不要在原有的intent-filter中增加代码,而是在原有intent-filter下方再增加一个intent-filter。 -
切记:A应用拉起B应用的时候千万不要忘记添加:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
如果不添加这个启动模式,有时候返回顺序是混乱的。