Android 开发学习
Posted IT_Holmes
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 开发学习相关的知识,希望对你有一定的参考价值。
文章目录
- 1. 控件 之 Notification(通知栏)
- 2. 控件 之 Toolbar(工具栏,个人感觉像 导航栏)
- 3. 控件 之 AlertDialog(对话框)
- 4. 控件 之 PopupWindow(弹出层)
- 5. 布局 之 LinearLayout(布局)
- 6. 布局 之 RelativeLayout(相对布局)
- 7. 布局 之 FrameLayout(框架布局)
- 8. 布局 之 TableLayout(表格布局)
- 9. 布局 之 GridLayout(网格布局)
- 10. 布局 之 ConstraintLayout(约束布局)
1. 控件 之 Notification(通知栏)
1.1 NotificationManager 的使用以及注意细节
NotificationManager类是一个通知管理器类,这个对象由系统维护的服务,以单例模式的方式获得,所以一般并不直接实例化这个对象。
在Activity中,可以使用Activity.getSystemService(String)方法获取NotificationManager对象。
通过NotificationCompat类的Builder构造器创建Notification对象。
Android8.0 新增了渠道的概念,如果没有设置,则通知无法在Android8.0的机器上显示!
Build.VERSION.SDK_INT的作用:
- Build.VERSION.SDK_INT 软件app安装在哪个手机上,该手机的操作系统版本号 比如8.1对应的SDK_INT是27
NotificationChannel对象第三个参数重要程度:
1.2 notification的使用
实现通知的效果:
代码案例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:text="发出通知"
android:onClick="sendNotification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:text="取消通知"
android:onClick="cancelNotification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
意图触发类:
package com.example.mynotification;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.Nullable;
public class NotificationActivity extends Activity
@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
super.onCreate(savedInstanceState);
Log.e("itholmes","onCreate: 进入NotificationActivity");
通知类定义配置,触发等等效果:
package com.example.mynotification;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity
private NotificationManager manager;
private Notification notification;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 通过getSystemService获取NotificationManager对象。
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
/**
* 如果是android 8版本必须配置渠道:
* Build.VERSION.SDK_INT: 是获取软件app安装在哪个手机上,该手机的操作系统的版本号 比如8.1对应的SDK_INT是27
* NotificationManager.IMPORTANCE_HIGH: 该值为26是android API版本,对应Android 8.0(Oreo)版本。
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
NotificationChannel channel = new NotificationChannel("itholmes", "测试通知", NotificationManager.IMPORTANCE_HIGH);
manager.createNotificationChannel(channel);
// 创建意图, 方便下面跳转意图。
Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
// 通过NotificationCompat类的Builder构造器创建Notification
notification = new NotificationCompat.Builder(this,"itholmes")
// 设置标题
.setContentTitle("官方通知")
// 设置内容
.setContentText("世界那么大,想去走走")
// 设置小图标,R.drawable.logo就是drawable目录下面的logo图片。
.setSmallIcon(R.drawable.logo)
// 设置大图标,BitmapFactory.decodeResource将图片转换Bitmap形式。
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.logo))
// 设置小图标的颜色 Color.parseColor方法将颜色转换为int类型。
.setColor(Color.parseColor("#ff0000"))
// 设置点击通知后的跳转意图
.setContentIntent(pendingIntent)
// 设置点击通知后自动清除通知
.setAutoCancel(true)
// .setWhen() 默认设置为当前时间
.build();
public void sendNotification(View view)
// 调用notify方法来触发通知。 注意:id就是唯一标识的效果。
manager.notify(1,notification);
public void cancelNotification(View view)
// 调用cancel方法来取消通知。
manager.cancel(1);
2. 控件 之 Toolbar(工具栏,个人感觉像 导航栏)
刚创建的项目,可以先去除原来的actionBar:
本次使用的是androidx的Toolbar。
Toolbar的基本属性:
示例如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
<!-- 方式一:基本属性的使用 -->
<androidx.appcompat.widget.Toolbar
android:id="@+id/td"
app:navigationIcon="@drawable/ic_baseline_arrow_back_ios_new_24"
app:title="标题"
app:titleTextColor="#ff0000"
app:titleMarginStart="90dp"
app:subtitle="子标题"
app:subtitleTextColor="#00ffff"
app:logo="@mipmap/ic_launcher"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#ffff00" />
<!-- 方式二:实现标题居中的效果如下 -->
<androidx.appcompat.widget.Toolbar
android:id="@+id/td2"
app:navigationIcon="@drawable/ic_baseline_arrow_back_ios_new_24"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#ffff00" >
<TextView
android:text="标题"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<!-- TextView 通过设置layout_gravity为center来达到居中的效果。 -->
</androidx.appcompat.widget.Toolbar>
</LinearLayout>
package com.example.mytoolbar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.td);
// 获取到toolbar,添加Navigation的点击事件(目前对应,navigationIcon属性设置的图片最左侧那个。)
// 这样之后最左侧的被点击后,就回触发!
toolbar.setNavigationOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
Log.e("TAG","toolbar被点击了");
);
3. 控件 之 AlertDialog(对话框)
效果如下:
基本属性:
示例如下:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
<Button
android:text="显示对话框"
android:onClick="dialClick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
dialog_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:orientation="vertical"
android:background="#ffff00"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:src="@mipmap/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:text="哈哈,天气很好"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
MainActivity
package com.example.mytoolbar;
import androidx.appcompat.app.AppCompatActivity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
public void dialClick(View view)
// 通过getLayoutInflater().inflate方法来获取layout布局信息
View dialogView = getLayoutInflater().inflate(R.layout.dialog_view,null);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// 这些set方法返回的都是builder,因此可以连贯起来。
builder
// 设置图标
.setIcon(R.mipmap.ic_launcher)
// 设置标题
.setTitle("我是对话框")
// 设置消息
.setMessage("今天天气怎么样!")
// 设置一个布局视图
.setView(dialogView)
// 设置确认按钮
.setPositiveButton("确定", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialogInterface, int i)
Log.e("tag","确认按钮被点击了");
)
// 设置取消按钮
.setNegativeButton("取消",new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialogInterface, int i)
Log.e("tag","取消按钮被点击了");
)
// 设置中间按钮
.setNeutralButton("中间",new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialogInterface, int i)
Log.e("tag","中间按钮被点击了");
);
// 调用create方法创建一个AlertDialog对象
AlertDialog alertDialog = builder.create();
// 调用AlertDialog对象的show方法显示对话框
alertDialog.show();
4. 控件 之 PopupWindow(弹出层)
基本属性如下:
示例如下:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:text="弹出PopupWindow"
android:onClick="popupClick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
popup_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@mipmap/ic_launcher"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content以上是关于Android 开发学习的主要内容,如果未能解决你的问题,请参考以下文章