凡网站创建,h5小程序制作平台,国外无版权素材网站,关键词首页排名代做AndroidStudio使用入门1_AndroidStudio activity的基本使用1.1_MainActivity和activity_main的初识1.2_Activity的清单文件简介1.3_几种重要文件的介绍1.4_基本布局的认识与使用1.4.1_RelativeLayout(相对布局)1.4.2_线性布局2_访问资源的方式2.1_java访问资源的方式2.2_xml访问…
AndroidStudio使用入门1_AndroidStudio activity的基本使用1.1_MainActivity和activity_main的初识1.2_Activity的清单文件简介1.3_几种重要文件的介绍1.4_基本布局的认识与使用1.4.1_RelativeLayout(相对布局)1.4.2_线性布局2_访问资源的方式2.1_java访问资源的方式2.2_xml访问资源的方式3_控件的使用3.1_通用属性3.2_选择器的使用3.3_TextView的使用3.4_Button按钮和点击事件的添加3.5_EditText的使用3.6_单选框radio button和radio group的使用3.7_CheckBox的使用3.8_Toast提示的使用3.9_AlertDialog的使用3.9.1_AlertDialog的简单使用3.9.2_AlertDialog的单选框使用3.9.3_AlertDialog的自定义界面的使用3.10_ListView的使用3.10.1_SimpleAdapter的使用略3.10.2_ArrayAdapter的使用3.10.3_BaseAdapter的使用略3.11_ContextMenu长按事件3.12_页面分栏LayoutInflater4_生命周期与intent的使用4.1_生命周期4.2_页面跳转4.3_intent跳转页面传值4.4_intent传值自定义类4.5_回传数据5_Server服务的使用6_小问题、小技巧汇总6.1_去除AppCompatActivity自带标题6.2_解决不能安装问题6.3_Toast在新线程中不能正常使用6.4_按钮透明6.5_添加gif图片6.6_自动导包1_AndroidStudio activity的基本使用
log.v(,);//在控制面板输出内容1.1_MainActivity和activity_main的初识 在MainActivity所在文件夹中可以创建任意“?Activity”文件作为后端逻辑代码文件同理在activity_main所在文件夹中可以创建任意“activity_?”文件作为前端页面控制代码文件 注意两个文件名的“?”部分要相互对应 1.2_Activity的清单文件简介 1.3_几种重要文件的介绍 Android中的界面是由两个文件组成的 一个是Activity的Java文件 还有一个是xml的布局文件.Java文件都放在java的文件下布局文件全部在res/layout下 layout下的文件都是xml文件 res下的文件不允许有大写字母 manifests文件夹下AndroidManifest.xml:清单文件。可以配置应用的第一个启动的Activity,注册Activity修改应用图标及应用名称 values自定义变量名 colors.xml: strings.xml: 在此文件中定义变量类似C语言中的#define 多语言支持方式 drawable文件夹和mipmap文件夹 一般将APP的icon放在minmap文件夹下其他图片资源放在drawable文件夹下 1.4_基本布局的认识与使用 基本布局的认识 View:表示为Android视图 Java文件和xml文件都能编写View 不管是Java还是xml文件最后都会变成Java文件的视图其中java编写的视图和java课上学的视图一样一般开发软件不用java编写视图 ViewGroup:表示为布局在xml中布局可以嵌套 布局控件可以放其它控件常用布局 LinearLayout(线性布局)、RelativeLayout(相对布局)、ConstraintLayout(约束布局) 如果只有一个子控件则不需要写orientation属性有多个必须要写在新工具不一定 常用控件 Button(按钮)、TextView(文本)、EditText(输入框) 根布局需要加代码RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:toolshttp://schemas.android.com/tools xmlns:apphttp://schemas.android.com/apk/res-auto 其中xmlns:app只在相对布局中加 1.4.1_RelativeLayout(相对布局) 没有方向性但是有Z轴代码在后的Z轴值越大即可以悬浮必须要参照物 1、布局本身为参照 android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 android:layout_alignParentBottom 贴紧父元素的下边缘 android:layout_alignParentLeft 贴紧父元素的左边缘 android:layout_alignParentRight 贴紧父元素的右边缘 android:layout_alignParentTop 贴紧父元素的上边缘 2、通过id来指定参照物 android:layout_below 在某元素的下方 android:layout_above 在某元素的的上方 android:layout_toLeftOf 在某元素的左边 android:layout_toRightOf 在某元素的右边 android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐 android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐 android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐 android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐 3. 属性值为具体的像素值如 30dip40px android:layout_marginBottom 离某元素底边缘的距离 android:layout_marginLeft 离某元素左边缘的距离 android:layout_marginRight 离某元素右边缘的距离 android:layout_marginTop 离某元素上边缘的距离 1.4.2_线性布局 如果只有一个子控件则不需要写orientation属性有多个必须要写在新工具不一定在线性布局中 空间大小android:layout_width android:layout_height match_parent只会占满剩余的空间 wrap_content适应文本大小 除此之外还可以写固定数值单位是dp或dip layout_weight是权重 LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationhorizontalButtonandroid:idid/button_alterdialogandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1android:text删除android:onClickdelete/Buttonandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1android:text增加android:onClickdelete//LinearLayout2_访问资源的方式
2.1_java访问资源的方式
R.resource_type.name//R可以理解为资源中的最高包
Android.R.//官方资源2.2_xml访问资源的方式
pakage_name:resource_type/name3_控件的使用
3.1_通用属性 gravity对齐方式center、left、rightbottom 多个布局方式以|分隔 边距 内边距padding 外边距margin 限制文本行数 android: lines2 android:ellipsizeend----超出的部分“。。。”表示 放置图片图片存储在mipmapdrawable文件夹 Android:drawable背景图片和颜色 Android:backgroundmipmap/drawable_name背景图片 Android:background“颜色” 3.2_选择器的使用
3.3_TextView的使用
TextView android:layout_widthfill_parent android:layout_heightwrap_content android:textSize16spandroid:textColor#ffffff android:padding10dip android:background#cc0000 android:layout_gravitycenter android:textAndroid Studio 工具箱/3.4_Button按钮和点击事件的添加 Button继承于TextView android背景选择器的使用 Button点击事件的添加最简单的方式,另外两种方式见3.6 java文件下 MainActivity文件中 public void login(View view){//动作}res.layout文件夹下activity_main文件中 Buttonandroid:layout_width90dpandroid:layout_height70dpandroid:text登录android:textSize25dpandroid:onClicklogin/Button3.5_EditText的使用
基本使用
EditTextandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hint提示android:inputTypedatetime/EditText其中inputType是输入类型输入类型有密码、数字、文本、日期等
如何在后端获取编辑框中的内容
在java文件中 EditText edit_text1 findViewById(R.id.id名);edit_text1.getText().toString;3.6_单选框radio button和radio group的使用
直接应用
RadioGroup radioGroup findViewById(R.id.radiogroup);radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {switch (checkedId){case R.id.radiobutton_man:{Log.i(radiobutton_man,男生);break;}case R.id.radiobutton_woman:{Log.i(radiobutton_woman,女生);break;}}}});效果 2. 继承接口
public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);RadioGroup radioGroup findViewById(R.id.radiogroup_1);radioGroup.setOnCheckedChangeListener(this);//this在此使用的多态的属性表示继承的接口类而不是MainActivity类}Override//实现接口中的抽象类public void onCheckedChanged(RadioGroup group, int checkedId) {switch (checkedId){case R.id.radiobutton_man:{Log.i(radiobutton_man,男生);break;}case R.id.radiobutton_woman:{Log.i(radiobutton_woman,女生);break;}}}
}效果
3.7_CheckBox的使用
CheckBoxandroid:idid/chaoxiongandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text超凶/CheckBoxCheckBox checkBox findViewById(R.id.chaoxiong);//获取控件checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {//进行监听Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if (isChecked){//如果被选中Log.i(OnCheckedChange,buttonView.toString()被选中);}}});3.8_Toast提示的使用
Toast.makeText(MainActivity.this,被选中,Toast.LENGTH_LONG).show();3.9_AlertDialog的使用
3.9.1_AlertDialog的简单使用 Buttonandroid:idid/button_alterdialogandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text删除android:onClickdelete/public void delete(View v){AlertDialog.Builder builder new AlertDialog.Builder(MainActivity.this);builder.setTitle(确认).setIcon(R.mipmap.why).setMessage(确定删除吗?).setPositiveButton(确认, new DialogInterface.OnClickListener() {//创建确认选项按钮及其点击事件Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,删除成功,Toast.LENGTH_SHORT).show();}}).setNegativeButton(取消, new DialogInterface.OnClickListener() {//创建取消选项按钮及其点击事件Overridepublic void onClick(DialogInterface dialog, int which) {}});//下面两个千万不能忘记AlertDialog dialog builder.create();//创建dialog.show();//显示}效果
3.9.2_AlertDialog的单选框使用
Buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text选择小周周的午餐android:onClickselect/Buttonpublic void select(View view){AlertDialog.Builder builder new AlertDialog.Builder(MainActivity.this);builder.setTitle(馋的流口水了都).setIcon(R.mipmap.greedy).setSingleChoiceItems(new String[]{奥尔良鸡腿, 菠萝, 冰激凌}, 0, new DialogInterface.OnClickListener() {Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, 中午吃which, Toast.LENGTH_SHORT).show();}});//下面两个千万不能忘记AlertDialog dialog builder.create();//创建dialog.show();//显示}效果
3.9.3_AlertDialog的自定义界面的使用
Buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text打开自定义界面android:onClickcustomView/Buttonpublic void customView(View view){AlertDialog.Builder builder new AlertDialog.Builder(MainActivity.this);builder.setTitle(新窗口).setView(R.layout.activity_new);//下面两个千万不能忘记AlertDialog dialog builder.create();//创建dialog.show();//显示};效果
3.10_ListView的使用 3.10.1_SimpleAdapter的使用略
3.10.2_ArrayAdapter的使用
ListViewandroid:idid/listviewandroid:layout_widthwrap_contentandroid:layout_heightmatch_parent/ListViewListView listView findViewById(R.id.listview);String[] name {菠萝,青皮桔,香蕉,西瓜};ArrayAdapter arrayAdapter new ArrayAdapter(newActivity.this,android.R.layout.simple_list_item_1,android.R.id.text1,name);listView.setAdapter(arrayAdapter);3.10.3_BaseAdapter的使用略
3.11_ContextMenu长按事件 详解请转
3.12_页面分栏LayoutInflater 代码详情
4_生命周期与intent的使用
4.1_生命周期
Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);LogUtils.d(TAG,onCreate --- 创建时调用);
}Override
protected void onRestart() {super.onRestart();LogUtils.d(TAG,onRestart --- 重启时调用);
}Override
protected void onStart() {super.onStart();LogUtils.d(TAG,onStart --- 即将可见不可交互时调用);
}Override
protected void onResume() {super.onResume();LogUtils.d(TAG,onResume --- 可见可交互时调用);
}Override
protected void onPause() {super.onPause();LogUtils.d(TAG,onPause --- 即将暂停时调用);
}Override
protected void onStop() {super.onStop();LogUtils.d(TAG,onStop --- 即将停止不可见时调用);
}Override
protected void onDestroy() {super.onDestroy();LogUtils.d(TAG,onDestroy --- 即将销毁时调用);
}4.2_页面跳转
AndroidManifest.xml代码注意若要显示某个页面必须将其在此文件夹中声明
?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.example.myapplicationapplicationandroid:allowBackuptrueandroid:iconmipmap/angryandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtltrueandroid:themestyle/AppThemeactivity android:name.MainActivityintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activityactivity android:name.newActivity/activity/application/manifestpublic void windowSkip(View view){//按钮点击事件Intent intent new Intent();intent.setClass(MainActivity.this,newActivity.class);//从前者跳往后者startActivity(intent);//启动}4.3_intent跳转页面传值
MainActivity文件 public void loginSkip(View view){Intent intent new Intent();intent.setClass(MainActivity.this,LoginActivity.class);//从前者跳往后者intent.putExtra(name,jiajia);intent.putExtra(sex,男);intent.putExtra(hobby,new String[] {篮球,乒乓球,羽毛球});startActivity(intent);//启动}
}LoginActivity文件
public class LoginActivity extends AppCompatActivity {protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);//接收传值Intent intent getIntent();String name intent.getStringExtra(name);String sex intent.getStringExtra(sex);String[] hobbies intent.getStringArrayExtra(hobby);Log.i(LoginActivity,namesexhobbies);//打印}
}4.4_intent传值自定义类
只要继承了parcelable或者serializable接口就可以进行传值注意接收的时候需要强行转成此自定义类的类型
4.5_回传数据
回传数据 与无回传数据类似不同之处在于 启动跳转页面的函数需要加上第二个int参数用于标识跳转的页面 startActivityForResult(intent, nubmber);当关闭跳转页面的时候需要返回两个参数一个是判断是否有返回数据的int类型一般RESULT_OK1RESULT_CANCELED0一个是data String uriString editText.getText().toString();//获取数据Uri data Uri.parse(uriString)//转换数据类型//设置结果其中Intent第二个参数类型是Uri//Intent result new Intent(null, data);setResult(RESULT_OK, result);//设置返回结果当此页面结束时返回原页面接收数据 //重写父类Activity的函数onActivityResult
protected void onActivityResult(int requestCode, int resultCode, Intent data){
//requestCode是启动跳转页面时赋予页面的int类型的number标识符 startActivityForResult(intent, nubmber);
//resultCode是跳转页面返回数据结果时设置的判断是否有结果回传的int参数 setResult(RESULT_OK, result);
super.onActivityResult(requestCode, resultCode, data);switch(requestCode){case number1://如果是页面number1if (resultCode RESULT_OK){//判断是否回传了数据Uri uriData data.getData();//获取数据}break;case SUBACTIVITY2:break;}
}5_Server服务的使用
public class SimpleRandomServiceDemo extends AppCompatActivity {/** Called when the activity is first created. */Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_simple_random_service_demo);Button startButton (Button)findViewById(R.id.start);Button stopButton (Button)findViewById(R.id.stop);final Intent serviceIntent new Intent(this, RandomService.class);startButton.setOnClickListener(new Button.OnClickListener(){public void onClick(View view){startService(serviceIntent);}});stopButton.setOnClickListener(new Button.OnClickListener(){public void onClick(View view){stopService(serviceIntent);}});}
}public class RandomService extends Service {Overridepublic void onCreate() {super.onCreate();Toast.makeText(this, (1) 调用onCreate(),Toast.LENGTH_LONG).show();}Overridepublic void onStart(Intent intent, int startId) {super.onStart(intent, startId);Toast.makeText(this, (2) 调用onStart(),Toast.LENGTH_SHORT).show();double randomDouble Math.random();String msg 随机数 String.valueOf(randomDouble);Toast.makeText(RandomService.this,msg, Toast.LENGTH_SHORT).show();}Overridepublic void onDestroy() {super.onDestroy();Toast.makeText(this, (3) 调用onDestroy(),Toast.LENGTH_SHORT).show();}Overridepublic IBinder onBind(Intent intent) {return null;}
}application
service android:name.first.RandomService/service
/application6_小问题、小技巧汇总
6.1_去除AppCompatActivity自带标题 进入AndroidManifest.xml文件 ctrl进入AppTheme改代码如下
style nameAppTheme parentTheme.AppCompat.Light.NoActionBar6.2_解决不能安装问题
Android studio 打包apk后发给别人安装失败。
失败原因显示应用是非正式发布版本当前设备不支持安装。
在自己手机上也无法安装之后连接USB进行调试时可以运行打包成APK安装就会显示下图错误 2.原因分析 造成该问题的原因是Android Studio 3.0会在debug apk的manifest文件application标签里自动添加 android:testOnlytrue属性。该属性导致在IDE中使用Run生成的apk在大部分手机上只能用adb install -t 来安装。 这种apk在某些手机上甚至安装不了。3.解决方法 在gradle.properties 文件中添加如下指令
android.injected.testOnlyfalse
6.3_Toast在新线程中不能正常使用 由于主线程会自动初始化loop所以在主线程不会报错 //在所在线程加
Looper.prepare();//对loop进行初始化不然toast报异常
Toast.makeText(LoginActivity.this,登录成功,Toast.LENGTH_SHORT).show();
Looper.loop();//对loop进行初始化不然toast报异常6.4_按钮透明
两大属性介绍
android:alpha0 //实现按钮透明化按钮就不可见了包括上面的文字
android:background#00000000//设置按钮背景背景透明但是按钮上的文字仍然可见。也可以把图片设置为背景6.5_添加gif图片
转自
6.6_自动导包
自动导包方法import