java-Android-Textview,跑马灯,button,EditText,ImageView,进度条,通知,线性布局相对布局

 

minimum APi level 设置最小的安卓适用版本,如果某设备安卓的版本低于这个设置的值,将无法运行在此设备上

 Textview

 

 

主的java程序的入口在src下面的main下面的mainactivity,布局文件在res下面的layout文件里的xml

textview的使用方法

布局文件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"
    android:orientation="vertical">
    <!--如果宽度高度写match-parent,生成的textview的窗口就是跟随linearlayout的框大小-->
    <!--如果宽度高度写wrap_content,生成的textview的窗口根据它的子控件来自动生成框位-->
    <!--写数字(200dp)的话就是生成数字大小的框位-->
    <!--下面的design和text可以切换预览和代码-->
    <!--id的前面要写@+id/-->
    <!--设置颜色的属性总共是八位,前两位是设置透明度00全透明ff不透明,后面三位代表红绿蓝-->
    <!--设置字体大小的单位一般是以sp为单位-->
    <!--background设置背景颜色-->
    <!--gravity设置字体位置-->
    <!--shadowColor,shadowRadius,shadowDx,shadowDy是都要设置的-->
    <!--shadowcolor设置阴影的颜色,shadowradius设置阴影的模糊度,shadowdx设置阴影的x偏移,shadowdy设置y偏移-->
    <TextView
        android:id="@+id/zqhtv"
        android:text="@string/tvid"
        android:textColor="#FF00ffff"
        android:textStyle="bold"
        android:textSize="50sp"
        android:background="#FFFFFF00"
        android:gravity="center_horizontal"
        android:shadowColor="#FFCC00FF"
        android:shadowRadius="3.0"
        android:shadowDx="5.0"
        android:shadowDy="5.0"
        android:layout_height="300dp"
        android:layout_width="300dp"/>

</LinearLayout>

主程序mainactivity

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //通过tv的id获取textview
        TextView one =findViewById(R.id.zqhtv);
        one.setText("java设置显示的文本内容,正在执行跑马灯效果");
    }
}

values下的strings.xml

<resources>
    <string name="app_name">My Application</string>
    <string name="tvid">正规写法,调用value里的属性</string>
</resources>

效果

跑马灯的实现

 

Mainactitvty直接用自带的

 自己写的类zqhtv

package com.example.myapplication;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
import androidx.annotation.Nullable;
public class Zqhtv extends TextView {
    public Zqhtv(Context context) {
        super(context);
    }
    public Zqhtv(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }
    public Zqhtv(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    @Override
    public boolean isFocused() {
        return true;  //获取焦点
    }
}

布局文件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"
    android:orientation="vertical">
    <!--如果宽度高度写match-parent,生成的textview的窗口就是跟随linearlayout的框大小-->
    <!--如果宽度高度写wrap_content,生成的textview的窗口根据它的子控件来自动生成框位-->
    <!--写数字(200dp)的话就是生成数字大小的框位-->
    <!--下面的design和text可以切换预览和代码-->
    <!--id的前面要写@+id/-->
    <!--设置颜色的属性总共是八位,前两位是设置透明度00全透明ff不透明,后面三位代表红绿蓝-->
    <!--设置字体大小的单位一般是以sp为单位-->
    <!--background设置背景颜色-->
    <!--gravity设置字体位置-->
    <!--shadowColor,shadowRadius,shadowDx,shadowDy是都要设置的-->
    <!--shadowcolor设置阴影的颜色,shadowradius设置阴影的模糊度,shadowdx设置阴影的x偏移,shadowdy设置y偏移-->
    <!--singleLine为真值是设置不自动换行,所有文本一行显示,ellipsize是省略号的位置-->
    <!--如果ellipsize是start省略号在一开始,middle在中间,marquee是流水灯的形式-->
    <!--android:marqueeRepeatLimit="marquee_forever"设置无限次数循环跑马灯,focusable是是否可以获取焦点
    focusableintouchmode是在控制视图在触摸模式下是否可以聚焦-->
    <!--com.example.myapplication.Zqhtv是调用自己写的textview-->
    <com.example.myapplication.Zqhtv
        android:id="@+id/zqhtv"
        android:text="sdadsadsadsadsadasdsadasdasdsada"
        android:textColor="#FF00ffff"
        android:textStyle="bold"
        android:textSize="50sp"
        android:background="#FFFFFF00"
        android:gravity="center_horizontal"
        android:shadowColor="#FFCC00FF"
        android:shadowRadius="3.0"
        android:shadowDx="5.0"
        android:shadowDy="5.0"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:layout_height="match_parent"
        android:layout_width="match_parent"/>

</LinearLayout>

 效果

 可以通过vector asset来导入内置的图片

 按钮BTN

activity_main

<?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">
`   <!--按钮的颜色变化和图片的操作都在drawable的目录下-->
    <Button
        android:text="按钮1"
        android:background="@drawable/btn_draw"
        android:layout_width="100dp"
        android:layout_height="100dp"
         />
</LinearLayout>

btn_draw.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/phone" android:state_pressed="true"/>
    <item android:drawable="@drawable/face"/>
    <!--设置按下的时候它显示电话的图片,平常的时候显示脸的图片 -->
</selector>

按键的事件

 

 

 

mainactivity

package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //通过tv的id获取textview
        Button btn1 =findViewById(R.id.btn1); //获取按钮
//        one.setText("java设置显示的文本内容,正在执行跑马灯效果");
        //设置单击事件的触发方法
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("单击事件触发");
            }
        });
        //设置长按事件
        btn1.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                System.out.println("长按事件触发");

                return false;//如果返回的是true,onclick不会被执行
            }
        });
        //设置触摸的事件
        btn1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                System.out.println("触摸事件触发"+event.getAction());
                //event.getAction()显示0是触摸上去,event.getAction()=2是触摸移动,event.getAction()=1是触摸解除
                return false;  //这里如果返回的是true,onlongclick和onclick不会被执行
            }
        });
    }
}

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"
    android:orientation="vertical">
`   <!--按钮的颜色变化和图片的操作都在drawable的目录下-->
    <Button
        android:id="@+id/btn1"
        android:text="按钮1"
        android:background="@drawable/btn_draw"
        android:layout_width="100dp"
        android:layout_height="100dp"
         />
</LinearLayout>

btn_draw.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/phone" android:state_pressed="true"/>
    <item android:drawable="@drawable/face"/>
    <!--设置按下的时候它显示电话的图片,平常的时候显示脸的图片 -->
</selector>

文本编辑框

mainactivity自带的就行

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"
    android:orientation="vertical">
`   <!--hint是提示的内容,textcolothint是提示内容的颜色,inputtype可以指定用户的输入类型的键盘-->
    <!--drawableLeft是指的在文本的左边加上图标drawablePadding设置文本的左边图片的间距-->
    <!--paddingLeft指的是所有内容距离左边的间距,相当于左边的边框-->
    <EditText
        android:id="@+id/edittx"
        android:background="#FFDDDDCC"
        android:hint="请输入电话号码"
        android:textColorHint="#FFAA"
        android:inputType="phone"
        android:drawableLeft="@drawable/human"
        android:drawablePadding="20dp"
        android:paddingLeft="20dp"
        android:layout_width="200dp"
        android:layout_height="100dp"
         />
    <EditText
        android:id="@+id/edittx2"
        android:hint="请输入密码"
        android:textColorHint="#FFAA"
        android:inputType="textPassword"
        android:layout_width="200dp"
        android:layout_height="100dp"
        />
</LinearLayout>

图片显示框

<?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">
    <!--如果不设置scaletype那就是会被同比例缩放并且边界拓展,不会变成畸形,如果设置了fitxy就会畸形
    强制缩放,fitstart同比缩放放在上面,fitcenter同比缩放放在中间,
    center保持图片原来的大小超出部分会被才切掉,matrix不改变原图的大小,从imgeview的
    左上角开始绘图,原图超过imgview的部分会被裁切掉
    maxWidth设置最大的宽度maxHeight设置最大的高度-->
    <ImageView
        android:id="@+id/edittx"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:maxWidth="200dp"
        android:maxHeight="200dp"
        android:scaleType="fitCenter"
        android:src="@drawable/back" />
</LinearLayout>

 进度条操作

Mainactivity

package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
public class MainActivity extends AppCompatActivity {
    private Button btn;
    private Button btn1;
    private ProgressBar pb;
    private ProgressBar pb1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        pb=findViewById(R.id.pb);
        pb1=findViewById(R.id.pb1);
        btn=findViewById(R.id.bt);
        btn1=findViewById(R.id.bt1);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (pb.getVisibility()==View.GONE){   //如果当前进度条是不可见的
                    pb.setVisibility(View.VISIBLE);  //设置进度条可见
                }
                else{
                    pb.setVisibility(View.GONE);  //如果进度条是可见的就设置它不可见
                }
            }
        });
    }
    public void btnload(View view){
        int progress=pb1.getProgress();  //获取当前进度条的值
        progress=progress+10; //值加十
        pb1.setProgress(progress);   //设置进度条
    }
}

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"
    android:orientation="vertical">
    <!--
    android:progressBarStyleHorizontal是水平进度条,onclick可以设置点击事件,跳到btnload函数执行
    -->
    <ProgressBar
        android:id="@+id/pb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
 />
    <Button
        android:id="@+id/bt"
        android:text="这里是按钮"
        android:layout_width="200dp"
        android:layout_height="100dp"/>
    <ProgressBar
        android:id="@+id/pb1"
        style="?android:progressBarStyleHorizontal"
        android:layout_width="200dp"
        android:layout_height="10dp"
        />
    <Button
        android:id="@+id/bt1"
        android:onClick="btnload"
        android:text="模拟下载"
        android:layout_width="200dp"
        android:layout_height="100dp"/>
</LinearLayout>

效果

 通知nortification

Mainactivity

package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;

import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.ImageDecoder;
import android.media.Image;
import android.media.ImageReader;
import android.os.Build;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;

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);
        //创建通知管理器
        manager =(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
        //如果sdk的版本大于8.0,就创建notificationchannel,低级版本不需要创建
        //NotificationManager.IMPORTANCE_HIGH高重要性,会弹出通知,发出提示音
        //IMPORTANCE_NONE不开启通知,IMPORTANCE_DEFAULT,发出提示音,不弹出
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
            NotificationChannel notificationChannel=new NotificationChannel("zqh","测试通知",NotificationManager.IMPORTANCE_HIGH);
            manager.createNotificationChannel(notificationChannel);
        }
        //构建通知,注意通知必须设置以下的三项才能显示,标题内容,小图标
        //可选的设置,设置大图标,setColor设置小图标颜色
        //setAutoCancel(true)设置点击通知后取消通知
        notification=new NotificationCompat.Builder(this,"zqh")
                .setContentTitle("当前通知")
                .setContentText("大撒大撒大大")
                .setSmallIcon(R.drawable.human)
                .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.back))
                .setColor(Color.parseColor("#ff0000"))
                .build();
    }
    public void btnsendnote(View view){
        manager.notify(1,notification);  //按钮按下的时候执行通知,那个id号可以随便写
    }
    public void btncancelnote(View view){
        manager.cancel(1);       //取消刚刚上面的那个生成的通知(id号相同)
    }
}

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"
    android:orientation="vertical">
    <!--
    android:progressBarStyleHorizontal是水平进度条,onclick可以设置点击事件,跳到btnload函数执行
    -->
    <Button
        android:id="@+id/bt"
        android:text="发出通知"
        android:onClick="btnsendnote"
        android:layout_width="200dp"
        android:layout_height="100dp"/>
    <Button
        android:id="@+id/bt1"
        android:onClick="btncancelnote"
        android:text="取消通知"
        android:layout_width="200dp"
        android:layout_height="100dp"/>
</LinearLayout>

线性布局

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"
    android:orientation="vertical"
    >
    <!--
    主的线性布局是垂直布局
    ly1是垂直布局,200*200,里面有一个view的小块,paddingLeft为内部组件距离左边的距离
    ly2是水平布局,宽度匹配父界面宽度,高度只有200dp。android:layout_marginTop="20dp"是ly2
    距离上面的ly1之间的距离是20dp
    gravity="center"是内部组件居中显示。
    ly2里面先是加入了两个50*50的绿块和黑块。接着加入了两个高度完全,宽度权重均为1的绿块和黑块
    加入权重之后这两个大绿块和黑块将会去减去50*50小黑块占用的宽度,然后根据权重分配剩下的ly2的宽度
    来进行显示
    -->
    <LinearLayout
        android:id="@+id/ly1"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:orientation="vertical"
        android:background="#FFAA"
        android:paddingLeft="30dp"
        android:paddingRight="30dp"
        >
        <View
            android:background="#FF000000"
            android:layout_height="match_parent"
            android:layout_width="match_parent">
        </View>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/ly2"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:orientation="horizontal"
        android:background="#FF00"
        android:layout_marginTop="20dp"
        android:gravity="center"
        >
        <View
            android:background="#FF000000"
            android:layout_height="50dp"
            android:layout_width="50dp">
        </View>
        <View
            android:background="#FF00AA00"
            android:layout_height="50dp"
            android:layout_width="50dp">
        </View>
        <View
            android:background="#FF000000"
            android:layout_height="200dp"
            android:layout_width="0dp"
            android:layout_weight="1">
        </View>
        <View
            android:background="#FF00AA00"
            android:layout_height="200dp"
            android:layout_weight="1"
            android:layout_width="0dp">
        </View>
    </LinearLayout>
</LinearLayout>

 

 

 相对布局

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!--view1-4分别是在左上角左下角右上角右下角的四个方块
    rightbox是在view1右边的一个小块
    bottombox是在rightbox下面的一个小块-->
    <View
        android:id="@+id/view1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#FF000000">
    </View>
    <View
        android:id="@+id/view2"
        android:background="#FFFACD"
        android:layout_alignParentBottom="true"
        android:layout_width="100dp"
        android:layout_height="100dp">
    </View>
    <View
        android:id="@+id/view3"
        android:background="#E6E6FA"
        android:layout_alignParentRight="true"
        android:layout_width="100dp"
        android:layout_height="100dp">
    </View>
    <View
        android:id="@+id/view4"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:background="#2F4F4F"
        android:layout_width="100dp"
        android:layout_height="100dp">
    </View>
    <View
        android:id="@+id/rightbox"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_toRightOf="@id/view1"
        android:background="#FFFF00"
        >
    </View>
    <View
        android:id="@+id/bottombox"
        android:layout_width="300dp"
        android:layout_height="100dp"
        android:background="#8B8B7A"
        android:layout_below="@id/rightbox">
    </View>
</RelativeLayout>

 

posted @ 2021-04-16 17:13  克莱比-Kirby  阅读(241)  评论(0)    收藏  举报