赞
踩
说在最前面:
这是我根据B站的教学视频整理的笔记,视频里面的代码都是自己手敲、经过调试而且没有错误的
B站教学视频链接:(学完必会)Android studio基础,从入门到精通,学完小白也能会_哔哩哔哩_bilibili
总结2正在奋笔疾书ing~ 未完待续
目录
build.gradle(:app)文件中指定了所有相关的配置,如SDK版本,APP版本号和名称等(后续APP进行升级时会用到)
在manifest.xml中修改APP的名字和图标,图标需要改icon和roundicon两个
在mainactivity.java中可以进行对log函数的调试,在logcat窗口中进行对所需信息的搜索
- // 打印最琐碎的信息
- Log.v(TAG,"onCreate");
- // information,打印重要数据
- Log.i(TAG,"onCreate");
- // warning,打印警告信息
- Log.w(TAG,"onCreate");
- // error,打印错误信息
- Log.e(TAG,"onCreate");
- // debug,打印调试信息
- Log.d(TAG,"onCreate");
在与MainActivity同级目录下新建一个活动,选择empty activity
在layout目录下创建新建布局,new layout recourse
添加高和宽的属性,修改按钮的文字内容
- <?xml version="1.0" encoding="utf-8"?>
- <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
-
- <Button
- android:id="@+id/Button1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="按钮1"></Button>
-
-
- </androidx.constraintlayout.widget.ConstraintLayout>
setContentView方法,使用R.layout.xxx进行引用定义的布局
setContentView(R.layout.first_layout);
即对主活动进行添加等,需要添加如下的代码,
- android:exported="true">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
还可以对主活动的名称进行修改,如定义android:label="主界面"
- <activity
- android:name=".MainActivity"
- android:label="主界面"
- android:exported="true">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
-
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
1. 在布局中添加按钮
在first_layout文件中:
- <Button
- android:id="@+id/Button1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="@string/button1_name"></Button>
2. 在java中添加按钮,使用Toast方法弹出窗口
在main activity文件中:定义一个按钮
- Button b1 = (Button)findViewById(R.id.Button1);
- b1.setOnClickListener(new View.OnClickListener(){
- @Override
- public void onClick(View view) {
- Toast.makeText(MainActivity.this, "你按痛我啦", Toast.LENGTH_SHORT).show();
- }
- });
1. 在包文件下新建一个名为menu的文件夹,在该文件夹下新建一个menu文件名为main,使用item标签为菜单下的两个子菜单设置id和内容
- <?xml version="1.0" encoding="utf-8"?>
- <menu xmlns:android="http://schemas.android.com/apk/res/android">
-
- <item android:id="@+id/add_item"
- android:title="我是一个添加"></item>
-
- <item android:id="@+id/remove_item"
- android:title="我是一个删除"></item>
- </menu>
2. 在MainActivity.java中重写两个方法,进行对菜单的显示和对应点击按钮后的弹窗
- // 重写onCreateOptionsMenu,设置菜单
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main,menu);
- // 显示创建的菜单是否显示
- return true;
- }
-
- // 为菜单添加点击弹窗
- @Override
- public boolean onOptionsItemSelected(@NonNull MenuItem item) {
- switch (item.getItemId()){
- case R.id.add_item:
- Toast.makeText(this, "这是一个添加菜单", Toast.LENGTH_SHORT).show();
- break;
- case R.id.remove_item:
- Toast.makeText(this, "你确定要删除吗?", Toast.LENGTH_SHORT).show();
- break;
- default:
- }
- return true;
- }
intent是意图,可以用于转换活动。
明确的指定想要跳转到的活动,因此称为显式intent,创建的intent对象传入2个参数:
在按钮点击事件中添加intent完成对主活动MainActivity和SecondActivity之间的跳转,然后使用startActivity方法进行活动的转换
- Button b1 = (Button)findViewById(R.id.Button1);
- b1.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Toast.makeText(MainActivity.this, "你按痛我啦", Toast.LENGTH_SHORT).show();
- // 使用显示intent跳转活动
- Intent intent = new Intent(MainActivity.this,SecondActivity.class);
- startActivity(intent);
- }
- });
不明确指出想要跳转到的活动,在配置文件中通过<intent-filter>进行配置
- <activity
- android:name=".SecondActivity"
- android:label="第二界面"
- android:exported="false">
- <intent-filter>
- <action android:name="jump_to_second_activity"></action>
- <category android:name="android.intent.category.DEFAULT"></category>
- </intent-filter>
-
- </activity>
- b1.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Toast.makeText(MainActivity.this, "你按痛我啦", Toast.LENGTH_SHORT).show();
- // 使用显示intent跳转活动
- // Intent intent = new Intent(MainActivity.this,SecondActivity.class);
- // 使用隐式intent
- Intent intent = new Intent("jump_to_second_activity");
-
- startActivity(intent);
- }
- });
- Button b1_1 = (Button) findViewById(R.id.Button1_1);
- b1_1.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Toast.makeText(MainActivity.this,"打开网页",Toast.LENGTH_SHORT).show();
- Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setData(Uri.parse("http://www.baidu.com"));
- startActivity(intent);
- }
- });
把parse中的参数改成"tel:******"即可
- Button b1_2 = (Button) findViewById(R.id.Button1_2);
- b1_2.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Toast.makeText(MainActivity.this,"打开拨号界面",Toast.LENGTH_SHORT).show();
- Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setData(Uri.parse("tel:10086"));
- startActivity(intent);
- }
- });
在主活动的点击跳转到第二个活动的按钮中进行字符串data的传输
1. 定义字符串data
2. 使用显式intent进行数据的传递,然后使用putExtra方法将数据存入intent中,该方法需要两个参数,一个是存入的数据名,一个是存入的数据值,存入的数据名为StringInformation,数据值为data的内容
- // 把java中的按钮和布局中的联系起来
- Button b1 = (Button)findViewById(R.id.Button1);
- b1.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Toast.makeText(MainActivity.this, "跳转到第二个活动", Toast.LENGTH_SHORT).show();
-
- // 在向第二个活动转换的过程中传递一个字符串
- String data = "你好,第二个活动!";
-
- // 使用显示intent跳转活动
- Intent intent = new Intent(MainActivity.this,SecondActivity.class);
- // 把需要传递的数据存入intent中,第一个参数是传递的数据名称,第二个参数是取得的实际值内容
- intent.putExtra("StringInformation",data);
-
- // 使用隐式intent
- // Intent intent = new Intent("jump_to_second_activity");
- //intent.addCategory("my_category");
- startActivity(intent);
- }
- });
在活动二显示布局的语句后开始进行从intent中取出数据
1. 使用getIntent方法定义一个intent对象
2. 因为要取得值是string型,所以使用getStringExtra方法,方法中传递的参数是在上面定义的数据的名称“StringInformation”
3. 使用logcat窗口进行信息打印,查看是否成功
- // 新建一个获取数据的intent
- Intent intent = getIntent();
- // 获取存再intent中的名为StringInformation的字符串
- String data =intent.getStringExtra("StringInformation");
- // 在logcat窗口中打印对应信息
- Log.d("SecondActivity",data);
测试:打印成功
新建一个empty activity,在main_activity布局文件中进行进行TextView控件属性的设置
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity">
-
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:textSize="17sp"
- android:textColor="@color/purple_200"
- android:text="我是一行文字,欢迎来到textview的学习">
- </TextView>
-
- </LinearLayout>
效果:
对按钮的使用我们已经非常熟悉了,这里新引入一个textAllCaps属性,由于Android studio会自动把按钮里的小写转换为大写字母,所以若需要保持小写,则把属性设置为false,从而可以保持小写字母。
- <Button
- android:id="@+id/button1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="Hello everyone! 我是一个按钮"
- android:textAllCaps="false">
- </Button>
在活动里可以进行对按钮点击的添加
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- Button b = (Button) findViewById(R.id.button1);
- b.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- switch (view.getId()){
- case R.id.button1:
- // 逻辑控制
- break;
- default:
- break;
- }
- }
- });
- }
hint属性显示输入框要显示的文字
- <EditText
- android:id="@+id/edit_text"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:hint="快点给我的输入框里输入文字吧!">
- </EditText>
在输入框中输入文字,点击按钮,在界面中弹出(toast方法)输入框中的相应内容
- public class MainActivity extends AppCompatActivity {
-
- // 创建一个输入框对象
- private EditText editText;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- Button b = (Button) findViewById(R.id.button1);
-
- // 和按钮一样,使用findviewbyid 获取到输入框的实例
- editText = (EditText)findViewById(R.id.edit_text);
-
- b.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- switch (view.getId()){
- case R.id.button1:
- // 逻辑控制
- String inputText = editText.getText().toString();
- Toast.makeText(MainActivity.this, inputText, Toast.LENGTH_SHORT).show();
- break;
- default:
- break;
- }
- }
- });
- }
- }
- <ImageView
- android:id="@+id/image_view"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/img2">
- </ImageView>
准备工作:在drawable中放置两张资源图片,新建一个按钮b2
- package cn.edu.sdut.uipractice01;
-
- import androidx.appcompat.app.AppCompatActivity;
-
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ImageView;
- import android.widget.Toast;
-
- public class MainActivity extends AppCompatActivity {
-
- // 创建一个输入框对象
- private EditText editText;
- // 创建一个imageview对象
- private ImageView imageView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- Button b1 = (Button) findViewById(R.id.button1);
- Button b2 = (Button) findViewById(R.id.button2);
-
- // 和按钮一样,使用findviewbyid 获取到输入框的实例
- editText = (EditText)findViewById(R.id.edit_text);
- // 获取imageview的id
- imageView =(ImageView) findViewById(R.id.image_view);
-
- b1.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- switch (view.getId()){
- case R.id.button1:
- // 逻辑控制
- String inputText = editText.getText().toString();
- Toast.makeText(MainActivity.this, inputText, Toast.LENGTH_SHORT).show();
- break;
- default:
- break;
- }
- }
- });
-
- b2.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- imageView.setImageResource(R.drawable.img1);
- }
- });
- }
- }
效果:
点击后-》
要求:依次点击春夏秋冬四个按钮,显示对应的四张图片
- <?xml version="1.0" encoding="utf-8"?>
-
- <!--最外层容器-->
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- tools:context=".MainActivity">
-
- <!-- 放按钮-->
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
-
- <Button
- android:id="@+id/b1"
- android:layout_width="0dp"
- android:layout_weight="1"
- android:layout_height="wrap_content"
- android:text="春"/>
-
- <Button
- android:id="@+id/b2"
- android:layout_width="0dp"
- android:layout_weight="1"
- android:layout_height="wrap_content"
- android:text="夏"/>
-
- <Button
- android:id="@+id/b3"
- android:layout_width="0dp"
- android:layout_weight="1"
- android:layout_height="wrap_content"
- android:text="秋"/>
-
- <Button
- android:id="@+id/b4"
- android:layout_width="0dp"
- android:layout_weight="1"
- android:layout_height="wrap_content"
- android:text="冬"/>
-
-
- </LinearLayout>
-
- <!-- 放图片-->
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1">
-
- <ImageView
- android:id="@+id/img1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/spring"
- android:scaleType="fitXY"/>
- <ImageView
- android:id="@+id/img2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/summer"
- android:visibility="invisible"
- android:scaleType="fitXY"/>
- <ImageView
- android:id="@+id/img3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/autumn"
- android:visibility="invisible"
- android:scaleType="fitXY"/>
- <ImageView
- android:id="@+id/img4"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/winter"
- android:visibility="invisible"
- android:scaleType="fitXY"/>
-
-
- </FrameLayout>
-
-
-
- </LinearLayout>
button的OnClickListener的三种实现方法:
(159条消息) button的OnClickListener的三种实现方法_huiwolf2008的博客-CSDN博客
此处点击事件的监听器使用并不是匿名类new onClickListener,而是让activity类实现onClickListener接口,然后重写其对应的方法onclick即可。
- package cn.edu.sdut.myclass831;
-
- import androidx.appcompat.app.AppCompatActivity;
-
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.ImageView;
- import android.widget.Toast;
-
- public class MainActivity extends AppCompatActivity implements View.OnClickListener {
-
- Button b1,b2,b3,b4;
- ImageView img1,img2,img3,img4;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- b1 = findViewById(R.id.b1);
- b2 = findViewById(R.id.b2);
- b3 = findViewById(R.id.b3);
- b4 = findViewById(R.id.b4);
-
- img1 = findViewById(R.id.img1);
- img2 = findViewById(R.id.img2);
- img3 = findViewById(R.id.img3);
- img4 = findViewById(R.id.img4);
-
- b1.setOnClickListener(this);
- b2.setOnClickListener(this);
- b3.setOnClickListener(this);
- b4.setOnClickListener(this);
-
- }
-
- @Override
- public void onClick(View view) {
- // 获取点击的按钮的id值
- int id=view.getId();
- // 首先隐藏所有图片
- hideImg();
- switch (id){
- case R.id.b1:
- img1.setVisibility(View.VISIBLE);
- break;
- case R.id.b2:
- img2.setVisibility(View.VISIBLE);
- break;
- case R.id.b3:
- img3.setVisibility(View.VISIBLE);
- break;
- case R.id.b4:
- img4.setVisibility(View.VISIBLE);
- break;
- default:
- break;
-
- }
- }
-
- protected void hideImg(){
- img1.setVisibility(View.INVISIBLE);
- img2.setVisibility(View.INVISIBLE);
- img3.setVisibility(View.INVISIBLE);
- img4.setVisibility(View.INVISIBLE);
- }
-
- }
- <ProgressBar
- android:id="@+id/progress_bar"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"/>
控件的三个可见值的属性:visible invisible gone
- b3.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- if(progressBar.getVisibility()==view.GONE)
- progressBar.setVisibility(view.VISIBLE);
- else
- progressBar.setVisibility(view.GONE);
- }
- });
1. 修改样式并设置进度条最大范围
- <ProgressBar
- android:id="@+id/progress_bar"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- style="?android:attr/progressBarStyleHorizontal"
- android:max="100"
- />
2. 点击按钮增加进度条的值
通过getProgress获取进度条的值,然后每次点击一次按钮,进度加10,使用setProgress设置更新后的进度条值。
- b3.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- // 点击按钮设置可见性
- // if(progressBar.getVisibility()==view.GONE)
- // progressBar.setVisibility(view.VISIBLE);
- // else
- // progressBar.setVisibility(view.GONE);
- int prgress = progressBar.getProgress();
- prgress+=10;
- progressBar.setProgress(prgress);
- }
- });
效果:
作用:用于提示用户重要内容/信息,可以屏蔽其他控件的交互能力。
对话框无需在布局文件中进行创建,直接在活动中点击按钮的事件中创建即可,可套用以下模板,具体方法不再进行讲解。
- b4.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
- dialog.setTitle("这里有一条重要信息");
- dialog.setMessage("请注意休息,不要久坐哦~");
- dialog.setCancelable(false);
- // 为对话框按钮创建点击事件
- dialog.setPositiveButton("好的", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
-
- }
- });
- // 显示对话框
- dialog.show();
- }
- });
效果:
在对话框中可以出现一个进度条。
使用方法与AlertDialog类似
- b5.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
- progressDialog.setTitle("加载进度");
- progressDialog.setMessage("正在加载中,请耐心等待~");
- progressDialog.setCancelable(true);
- progressDialog.show();
- }
- });
效果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。