Android学习笔记

尺寸

  1. 最常用的就是px,这是像素值,不会随设备的尺寸变化而变化,所以兼容性差。
  2. dp(dip,device independent plxels),设备独立像素,不同设备有不相同显示效果,这个不依赖于像素
  3. sp,这个是设置字体像素常用。
  4. 在设置宽高这些需要传递参数的时候,是以像素为单位的,所以需要注意。

阴影的制作

android:shadowColor="@color/purple_200" 设置阴影颜色
        android:shadowRadius="0.1"  阴影模糊度
        android:shadowDy="10"	阴影偏移在竖直方向偏移
        android:shadowDx="10"	阴影偏移在竖直方向偏移

使文字链接化

textView的属性

android:autoLink="all"

更多样式的TextView

使用shape可以完成自己想要的样式
首先得在drawable下定义一个shape的文件,如
在这里插入图片描述

在这里插入图片描述
然后自己写个名字就ok了,其他默认
在这里插入图片描述
代码粘贴如下

<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="30dp"></corners>

    <solid android:color="@color/green"></solid>

    <padding android:left="5dp"
        android:right="5dp"/>

    <gradient android:startColor="@color/green"
        android:endColor="@color/white"
        android:angle="0"/>
</shape>

然后在自己想要用到的TextView的background属性加上这个就OK了.
在这里插入图片描述
效果如图:
在这里插入图片描述
具体详情见博客:https://www.jianshu.com/p/ef734937b521

制作跑马灯效果

关键

android:ellipsize="marquee"
//在哪里省略文本,marquee表示跑马灯效果
android:singleLine="true"
//内容单行显示
android:focusable="true"
//移动光标时 是否能聚焦到组件上,比如按钮,就是移动光标是按钮会变成选中状态
android:marqueeRepeatLimit="marquee_forever"
//这个是字幕动画重复的次数

到这就是必要代码结束了
android:clickable="true"
//这个是点击事件,表示点击之后,这个跑马灯开始进行
anroid:focusableInTouchMode="true"
//通过触摸获取焦点

如果需要他一运行就能开始跑马灯的运行,则定义一个自己定义一个类继承textView.如:

public class newTestView extends androidx.appcompat.widget.AppCompatTextView {
    public newTestView(Context context) {
        super(context);
    }

    public newTestView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public newTestView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public boolean isFocused() {
        //获取焦点,让代码自动跑起来
        return true ;
    }
}
或者请求到这个焦点加在textVIew里面加上<requestFocus/>,
注意不是加在属性里面,是在标签里面<TextView></TextView>

按钮

事件:

按钮继承于textView
解决按钮在刚开始学android不能改变背景颜色的问题
在这个文件

在这里插入图片描述
这一行加上Bridge就欧克了。
加上Bridge

怎么使用按钮的一些事件呢?

  1. 先在drawable里面定义一个选择器,选择器内容如下
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_baseline_account_box_24" android:state_pressed="true"/>
    <item android:drawable="@drawable/ic_launcher_foreground" />
</selector>
  1. 在使用按钮的地方调用这个drawable,即可使用
    在这里插入图片描述

其他的背景色的变化设置也是如此,不过是color了,如:

<item android:color="@color/green" android:state_pressed="true"/>
 <item android:color="@color/purple_200" />

在颜色上面,分为三层,第一层是foreground,第二层是文字,第三层是background,只有可能第一层的颜色就会遮住后面的颜色。

点击事件


Button btn = findViewById(R.id.center);
        //设置点击事件
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.e(TAG, "onClick: ");
            }
        });

在调用函数结束后,如果使用的是return true,会将事件消费,不会执行其他触发函数。所以一般用return false.

还可以在xml的button控件里面直接设置事件,如:

<Button
        android:id="@+id/center"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="@drawable/btn_sec"
        android:layout_centerInParent="true"
        android:backgroundTint="@color/color_sec"
        android:onClick="click"
        />

然后再mainactivity里面定义click函数,效果同上。

EditText

hint 输入提示
textColorHint输入提示文字的颜色
inputType 输入类型
drawableXxxx 在输入框的指定方位添加图片
drawablePadding 设置图片与输入内容的间距
paddingXxx 设置内容与边框的间距
background
android:selectAllOnFocus="true"获取焦点时全选

例子:

<EditText
        android:id="@+id/username"
        android:layout_width="200dp"
        android:layout_height="40dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:hint="请输入用户名"
        android:drawableLeft="@drawable/ic_baseline_person_24"
        android:drawablePadding="10dp"
        android:background="@color/white"
        android:textColorHint="#95a1aa" 
        app:layout_constraintBottom_toTopOf="@+id/guideline9"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline8"
        app:layout_constraintVertical_bias="0.833" />
    

然后在java代码中获取所输入的数据,通过button的点击事件,java代码如下:

public class MainActivity extends AppCompatActivity {
    Button btn;
    EditText et;
    EditText et2;
    String TAG = "系统";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = findViewById(R.id.login);
        et = findViewById(R.id.username);
        et2 = findViewById(R.id.password);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String name = et.getText().toString();
                Log.e(TAG, "成功登录!" );
                if(name == "admin"){

                }
            }
        });
    }

然后如果你是多行输入文本内容,在Edit控件里面直接加入
android:inputType=“textMultiLine”,然后设置一下最大行数,
android:maxLines=“5”,
然后改变一下Edit的样式,需要在drawable里面加入一个xml文件

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <solid
                android:color="#EFEFEF"/>
            <corners
                android:radius="3dip"
                />
            <stroke
                android:width="0.5px"
                android:color="#505050"/>
        </shape>
    </item>
</layer-list>

然后Edit控件里面用background属性加上就可以。
然后设置光标在左上角,否则默认是居中的。

android:gravity="top"

然后设置文本选中的颜色是
textColorHighlight属性

ImageView

属性有:
src 图片资源
scaleType 图片缩放类型
maxHeight 最大高度
maxWidth 最大宽度
adjustViewBounds 调整View的界限

这个自己去调试,博主比较懒

ProgressBar进度条

属性有:
max; 进度条的最大值
progress; 进度条已完成进度值
indeterminate; 如果设置为true , 则进度条不精确显示进度
style=“?android:attr/progressBarStyleHorizontal” 设置水平进度条

例子是按钮点击来进行进度条的显示与隐藏
首先得了解Android view getVisibility()函数
(1)0 -------- VISIBLE 可见
(1)4 -------- INVISIBLE 不 可见但是占用布局空间
(1)8 -------- GONE 不 可见也不占用布局空间

有个地方需要注意:只有在oncreate函数之后才能使用findById方法

java部分代码如下

btn_pro.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(progressBar.getVisibility() == View.GONE){
                    progressBar.setVisibility(View.VISIBLE);
                }
                else{
                    progressBar.setVisibility(View.GONE);
                }
            }
        });

在这里插入图片描述
或者制作一个水平的进度条。当你点击按钮时,进度增加,当进度完成后,进度条消失
代码如下:

btn2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                if(Bar.getVisibility() == View.GONE){
                    Bar.setVisibility(View.VISIBLE);
                    Bar.setProgress(0);
                    return;
                }
                int progress = Bar.getProgress();
                if(progress < Bar.getMax()){
                    progress += 10;
                    Bar.setProgress(progress);

                }
                else Bar.setVisibility(View.GONE);

            }
        });

在这里插入图片描述

弹出警告

初级开发时的Attention

  1. 要在下图中加入
    在这里插入图片描述
<activity android:name=".intro"></activity>

name里面是你自己对应页面的class。
2. 再就是字符串的比较,还是用equals()函数,直接用== ,会比较不成功。

3.在自己新加页面与一个类绑定时,实现按钮点击然后跳转。
不仅要写

Intent i = new Intent();
                i.setClass(MainActivity.this,intro.class);
                startActivity(i);

setClass前面是当前类,后面是你要跳转的控制类。

动态添加Fragment

步骤:

  1. 创建一个待处理的fragment(自己创建一个fragment类)
  2. 获取FragmentManager,一般都是通过getSupportFragmentManager()
  3. 开启一个事物transaction,一般调用fragmentManager的beginTransaction()(transaction用来管理fragment)
  4. 使用transaction进行fragment的替换
  5. 提交事物(transaction.submit())

Activity与Fragment通信的方案

原生方案:Bundle
Java语言中类与类自己通信常用方案:接口
其他方案:evenBus或者liveData(使用的是观察者模式或者发布订阅者模式)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值