布局相关
图片资源的如何在布局中调用?
@drawable/图片名
布局中weight的比例分配如何?
全部控件的weight总合除当前控件的weight,比如btn1:2 btn2:1 btn3:2,那么btn1-3的权重分配分别是2/5;1/5;2/5
LinearLayout的特点是什么?
辨别方法为:其内部控件要么水平摆放要么垂直摆放
按要求进行对相对布局进行排布
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/item_nc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="文本1"/>
<TextView
android:id="@+id/item_zh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/item_nc"
android:text="我在文本1的下面"/>
</RelativeLayout>
以下4个属性设置控件与之间的关系和位置
以下5个属性,设置的是控件与控件之间对齐的方式(是顶部、底部还是左、右对齐)
以下4个属性设置控件与父控件之间对齐的方式(是顶部、底部还是左、右对齐)
以下3个属性设置控件的方向
Activiy与控件
按钮响应条件1:按钮的id为btn1;条件2:实现接口的方法;条件3:点击按钮Toast内容为“我被点击了”
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:id="@+id/btn1"
tools:ignore="SpeakableTextPresentCheck"/>
</RelativeLayout>
MainActivity.java
package com.example.mytest;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
btn1 = (Button) findViewById(R.id.btn1);
//监听控件
btn1.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn1) {
Toast.makeText(this, "我被点击了", Toast.LENGTH_SHORT).show();
}
}
}
RadioButton控件,这个控件的功能是?
单选按钮
归纳和总结出一个activity启动另一个activity的过程
答:有显式意图和隐式意图两种类型
显示意图:
通过Intent()构造方法实现,第一个参数表示当前activity对象(this),第二个参数表示要启动的目标activity。通过这个方法创建一个对象,然后将该对象传递给startActivity()方法即可启动。
隐式意图:
1、需要在AndroidManifest.xml中对应注册的activity先设置过滤器
2、过滤器中添加action
3、activity中需要new一个Intent(意图)
4、添加和注册时一样的action
5、startAction()完成启动
startActivityForResult中各参数的作用
第一个参数是intent对象,第二个参数是请求码,用于判断数据的来源
Activity生命周期函数中,onCreate的作用是什么,一般将findViewById放在这个函数中
Activity创建时被调用,通常做一些初始化设置
Activity的启动模式有什么?各个模式的原理(书面总结)
1、standard模式:默认的启动模式,每启动一个activity就会在栈顶创建一个新的实例;
2、singleTop模式:判断要启动的activity实例是否位于栈顶,如果是则直接复用,否则创建新的实例;
3、singleTask模式:系统首先检查栈中是否存在当前activity实例,如果存在则直接使用,并把当前实例之上的全部出栈,否则会重新创建新实例;
4、singleInstance模式:启动新的栈来管理activity实例,无论从哪个任务启动该activity,该实例在整个系统中只有一个。如果要启动的activity不存在,则会先创建新的栈再创建activity实例,如果已存在,系统会把它所在的任务栈转移到前台。
AlterDialog对话框调用什么函数可以使得对话框消失,普通对话框中是如何设置标题等信息的?
调用dismiss()函数使得对话框消失;new一个AlterDialog对象,传入当前上下文和标题信息两个值即可。
存储篇
内部存储、外部存储、SharedPreferences分别的是如何存储的?
内部存储:创建FileOutputStream对象,通过该对象的write()方法将数据写入文件中。
外部存储:使用Environment的getExternalStorageState()和getExternalStorageDirectory()方法判断sd卡和获取sd卡根目录的路径,然后用FileOutputStream对象将数据写入。
SharedPreferences:首先调用getSharedPreferences()方法获取实例对象。然后调用SharedPreferences的Editor()方法获取到可编辑的Editor对象,最后通过该对象的putString()方法存储数据。
编写一个SharedPreferences存储的程序,每个步骤要清楚其作用
package com.example.experiment6;
import android.content.Context;
import android.content.SharedPreferences;
import java.util.HashMap;
import java.util.Map;
public class SaveQQFile {
//存储文件
public static boolean saveUserInfo(Context context,String userName,String passWord){
//获取实例对象
SharedPreferences sp = context.getSharedPreferences("data", Context.MODE_PRIVATE);
//获取编辑器
SharedPreferences.Editor edit = sp.edit();
//存入String类型的账号密码
edit.putString("userName",userName);
edit.putString("passWord",passWord);
//提交修改
edit.commit();
return true;
}
//读取文件
public static Map<String, String> getUserInfo(Context context) {
//获取实例对象
SharedPreferences sp = context.getSharedPreferences("data", Context.MODE_PRIVATE);
//获取账号密码
String userName = sp.getString("userName", null);
String passWord = sp.getString("passWord", null);
//创建一个哈希表
Map<String,String>userMap = new HashMap<String,String>();
//插入账号密码键值对
userMap.put("userName",userName);
userMap.put("passWord",passWord);
//返回哈希表
return userMap;
}
}
数据库中事务的概念是什么?
事务是一个对数据库执行工作的单元,是针对数据库的一组操作,它可以由一条或多条SQL语句组成;事务是以逻辑顺序完成的工作单元或序列,可以是由用户手动操作完成,也可以是由某种数据库程序自动完成。
服务篇
启动服务的两种方式是什么
startService()和bindService()
两种启动服务中,各函数的作用是什么?
- onCreate():第一次创建服务时执行的方法;
- onDestory():服务被销毁时执行的方法;
- onStartCommand():客户端通过调用startService()方法启动服务时执行的方法;
- onBind():客户端通过调用bindService()方法启动服务时执行的方法;
- onUnbind():客户端通过unBindService()断开服务绑定时执行的方法。
广播篇
广播是什么?
广播是一种运用在应用程序之间传递消息的机制,例如电池电量低时会发送一条提示广播。
广播应用的场合(P149)
Android中内置了很多系统广播:只要涉及到手机的基本操作(开机、网络变化、插入耳机等),都可以通过发送系统广播来监听变化,通过发送对应的intent-filter(包括action)
写一个Toast提示并显示出来,提示内容为”我要复习好“,Toast的特点是什么?
- 提示消息不会获得焦点
- 信息会自动消失,不会一直保留
Toast.makeText(this, "我要复习好", Toast.LENGTH_SHORT).show();
内容提供者篇
将内容观察者、提供者、操作者三者关系原理理清
- 内容提供者:暴露本应用的私有数据,供其它应用使用,在不同程序之间实现数据共享
- 内容观察者:观察制定Uri所代表的数据,实时监听内容提供者共享的数据是否发生变化
- 内容操作者:使用ContentProvider共享数据时提供了相应操作的Uri,因此在访问现有的ContentProvider时要指定相应的Uri然后通过ContentResolver对象来实现数据的操作
观察者等函数名要记忆清楚
- 提供者:ContentProvider
- 观察者:ContentObserver
- 操作者:ContentResolver
URI的格式是什么?
$$ \underbrace{content://}_{sheme}\quad\underbrace{aaa.bbb.ccc}_{authority}\quad\underbrace{/userinfo}_{path} $$
scheme是一个标准的前缀,表明这个数据被内容提供者所控制,不会被修改。authority是在创建内容提供者时制动的属性值,主要用来区分不同的应用程序,为了避免冲突,会采用程序包名的方式命名。path代表资源,当访问者需要操作不同数据时,这个部分是可以动态改变的。
URI是什么英文缩写
统一资源标识符Uniform Resource Identifier
其他
四层架构:应用程序层,应用程序架构层。核心类库,Linux内核
布局:线性,相对,绝对,帧,表格
padding:内边距,内部,填充
margin:外边距,外部,留白
帧布局是以左上角为起点进行对其控件的
主题文件存放在哪个文件夹下?
(/res/values/themes)文件themes.xml