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>


浙公网安备 33010602011771号