Android Stdio笔记

一、控件学习

1.TextView

1.1基本属性

  • layout_width,组件宽度
  • layout_height,组件高度

"match_parent"和容器一致,容器有多大,就有多大

"wrap_content"根据内容调整大小、

“200dp”直接给数字

  • id,为Textview设置一个组件id

可以实现在java函数中调用组件,并且通过接口修改组件属性

TextView tv_one =findViewById(R.id.tv_one);
tv_one.setText("leo");

组件唯一标识符

  • text,设置显示文本信息

一般为了国际化方便,要将内容写在res/values/strings.xml

  • textColor,设置字体颜色

"#00 00 00 00"前两位透明,后面依次RGB

  • textStyle,设置字体风格,三个值可选,normal(默认无效果),bold,italic
  • textSize,单位sp,适配不同大小的手机屏幕
  • background,控件背景颜色,或者图片

颜色“#00000000”, 正规开发颜色要写到res/values/colors.xml

  • gravity,设置控件中内容对齐向,TextView是文字,ImageView中是图片等等

“center”,“bottom”,“left”,“right”,“center_horizontal”,"center_virtical",自己看标签属性

1.2 带阴影的TextView

  • android::shadowColor,设置阴影颜色,需要与shadowRadius一起使用。
  • android::shadowRadius,设置阴影的模糊程度,设为"0.1"就变成字体颜色了,建议使用"3.0"。
  • android::shadowDx,设置阴影在水平方向的偏移,就是水平方向阴影开始的横坐标位置。
  • android::shadowDy,设置阴影在竖直方向的偏移,就是竖直方向阴影开始的纵坐标位置。

1.3 实现跑马灯效果的TextView

  • android::singleLine,内容单行显示,

先设置文字单行显示,这个时候文字会被省略一部分,省略的显示“...“

  • android::ellipsize,在哪里省略文本

=”marquee“(跑马灯选这个), ”start“, ”end“

  • android::marqueeRepeatLimit,字幕动画重复次数

=”marquee_forever“

  • android::focusable,是否可以获取焦点

="true"

动画只有获取焦点才可以运行,

(1)除非直接请求焦点<requestFocus/>

(2)实现自己的类,并且重写isFocused()函数

  • android::focusableInTouchMode,用于控制视图在触摸模式下是否可以聚焦

2.Butten

2.1 StateListDrawable

StateListDrawable是Drawable资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点,<selector>,我们只需要将Button的background属性设置为该Drawable资源即可轻松实现,按下按钮时不同的按钮颜色或者背景。

  • drawable,引用drawable位图
  • state_focused,是否获取焦点
  • state_pressed,控件是否被按下
  • state_enabled,控件是否可用
  • state_selected,控件是否被选择,针对有滚轮的情况
  • state_checked,控件是否被勾选
  • state_checkable,控件可否被勾选,eg:checkbox
  • state_ ......

一般将APP的icon放在minmap文件夹下,其他图片资源放在drawable文件夹下。

怎么用Drawable?

创建一个文件夹,在res下,然后在文件夹里面天机资源文件,再添加DrewableReourseFile,再在里面添加item,设置item属性。

这个是图片

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/ic_baseline_accessibility_24" 
    android:state_pressed="true"/>


<item android:drawable="@drawable/ic_baseline_account_balance_24" 
    android:state_pressed="false"/>


</selector>

还可以创建颜色,一样的方法。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:color="#FFFF0000" 
    android:state_pressed="true"/>


<item color="#FF00FF00" 
    android:state_pressed="false"/>


</selector>

完成后,就直接在UI.xml的函数里面调用这个资源,它自动把这个用起来。

2.2 Button点击事件、触摸事件、长按事件

  • 点击事件
  • 长按事件
  • 触摸事件
package com.example.myapplication;

import android.os.Bundle;

import com.google.android.material.snackbar.Snackbar;

import androidx.appcompat.app.AppCompatActivity;

import android.util.Log;
import android.view.MotionEvent;
import android.view.View;

import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;

import com.example.myapplication.databinding.ActivityMainBinding;

import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.ProgressBar;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "leo";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn=findViewById(R.id.btn);

        btn.setOnClickListener(new View.OnClickListener(){


            @Override
            public void onClick(View view) {
                Log.e(TAG,"onClick");
            }


        });
        btn.setOnLongClickListener(new View.OnLongClickListener(){

            @Override
            public boolean onLongClick(View view) {
                Log.e(TAG,"onLOngClick");
                return false;
            }
        });

        btn.setOnTouchListener(new View.OnTouchListener()
        {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {

                Log.e(TAG,"onTouchClick"+ motionEvent.getAction());
                return false;//返回true表示事件被消费了
            }
        });
    }






}

单独设计各种事件响应的处理函数,控件自带接口,接口的参数就是处理函数。

3. EditText

3.1 主要属性

  • andriod:hint 输入提示
  • andriod:textColorHint 输入提示文字颜色
  • andriod:intputType 输入类型
  • andriod:drawableXxxxx 在输入框的指定位置添加图片

drawableLeft="  "

  • andriod:paddingXxxx 设置内容与边框的间距
  • andriod:background 背景色或者图片
  • 同时,EditText类内部还有很多函数,比如getText()等等

4. ImageView

4.1 基本属性

  • andriod:src 设置图片资源
  • andriod:scaleType 设置图片缩放类型

"fitStart" 保持宽高比缩放图片,直到较长的边与image的边长相等,缩放完成后将图片放在ImageView的左上角。

"fitCenter" 默认值,同上,缩放后放在中间。

"fitEnd" 同上,缩放后放于右下角。

"fitXY" 对图片的横纵方向进行独立缩放,使得该图片完全适应ImageView,但是图片的宽高比可能发生变化。

"center" 保持原图大小,放在ImageView的中心。当原图的ImageView的size,超过部分裁剪处理。

"centerCrop" 保持宽高比缩放图片,直到完全覆盖ImageView,坑出现图片显示不完全。

"centerInside" 保持完整的宽高比缩放图片,直到ImageView能够完全的显示图片。

"matrix" 不改变原图的大小,从ImageView的左上角开始绘制原图,原图超过ImageView的部分做裁剪处理。

  • andriod:maxHeight 最大高度,配合andriod:adjustViewBounds,才生效。
  • andriod:maxWidth 最大宽度,配合andriod:adjustViewBounds,才生效。
  • andriod:adjustViewBounds 调整View的界限,最大宽高需要和次函数联合用。

5. ProgressBar进度条

5.1 基本属性

  • andriod:max 进度条的最大值
  • andriod:progress 进度条已完成进度值
  • andriod:indetermine 如果设置成true,则进度条不精度显示进度。
  • style="?andriod:attr/progressBarStyleHorizontal" 水平进度条

5.2 实现点击按钮显示进度条

    public void leoclick(View view) {

        if(progress.getVisibility()==View.GONE){

            progress.setVisibility(View.VISIBLE);
        }
        else {
            progress.setVisibility(View.GONE);
        }
    }
}

5.3 实现水平进度条

//先设置ui.xml progressBar 的max ,和style  

  public void leoclick(View view) {
        int progress = this.progress1.getProgress();
        progress+=10;
        progress1.setProgress(progress);

    }

6. Notification于NotificationManager

6.1 创建一个NotificationManager

NotificationManager类是一个通知管理类,这个对象是由系统维护的服务,是以单例模式的方式获取得,所以一般并不实例化这个对象。在Activity中,可以使用Activity.getSystemService(String)方法获取NotificationManager对象,Activity.getSystemService(String)方法可以通过Android系统级服务句柄,返回对应的对象。在这里需要返回NotificationManager,所以直接传递Context.NOTIFICATION_SERVICE即可。

6.2 使用Builder构造器来创建Notification对象

使用NotificationCompat类的Builder构造器来创建Notification对象,可以保证程序在所有的版本上都能正常使用。Android8.0新增了通知渠道这个概念,如果没有设置,则无法在Android8.0的机器上显示。

6.3 NotificationChannel

通知渠道:Android8.0引入了通知渠道,其允许你为要显示的每种通知类型创建用户可自定义的渠道。

通知重要程度设置,NotificationManager类中,

  • IMPORTANCE_NONE
  • IMPORTANCE_MIN 开启通知,不会弹出,但没有提示音,状态栏无显示。
  • IMPORTANCE_LOW 开启通知,不会弹出,没有提示音,状态栏显示。 
  • IMPORTANCE_DEFAULT 开启通知,不会弹出,有提示音,状态栏显示。
  • IMPORTANCE_HIGH 开启通知,会弹出,有提示音,状态栏有显示。

6.4 常见方法说明

  • setContentTitle(String string)设置标题
  • setContentText(String string)设置文本内容
  • setSmallIcon(int icon)设置小图标
  • setLargeIcon(Bimap icon)设置通知大图标
  • setColor(int argb)设置小图标颜色
  • setContentIntent(PendingIntent intent) 设置点击后的跳转意图
  • setAutoCancel(boolean bool)设置点击通知后自动清除
  • setWhen(long when) 设置通知被创建的时间

注意:

Android5.0系统后,开始对通知栏图标的设计进行修改,现在Google要求,所有应用程序的通知栏图标,应该只使用alpha图层来绘制,而不是RGB图层,简单的说,就是没颜色的图片。

 

7. ToolBar

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/tb"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"<!-- 和之前的尺寸一样 -->
        app:navigationIcon="@drawable/ic_baseline_chevron_left_24"
        app:title="标题"
        app:titleTextColor="#ffff00"
        app:titleMarginStart="90dp"
        app:subtitle="子标题"
        app:logo="@drawable/ic_baseline_change_history_24"

        />

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值