2022-9-15 364 0
java

前面看了TextView控件,后面不想看了,先把控件都记一下,知道功能,后面用到了再查资料吧1、EditText(输入框)用于输入文本2、Button(按钮)与ImageButton(图像按钮)用于点击事件3、ImageView(图像视图)用于玩图片的,可以设置图片填满,图纵横比,圆角图之类4、RadioButton(单选按钮)&Checkbox(复选框)单选框布局代码<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/LinearLayout1"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="请选择性别"android:textSize="23dp"/><RadioGroupandroid:id="@+id/radioGroup"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButtonandroid:id="@+id/btnMan"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="男"android:checked="true"/><RadioButtonandroid:id="@+id/btnWoman"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="女"/></RadioGroup><Buttonandroid:id="@+id/btnpost"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="提交"/></LinearLayout>点击事件判断:@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//RadioGroupradgroup=(RadioGroup)findViewById(R.id.radioGroup);////第一种获得单选按钮值的方法一开始是男,选了女之后会有提示,而不需要点击提交////为radioGroup设置一个监听器:setOnCheckedChanged()//radgroup.setOnCheckedChangeListener(newRadioGroup.OnCheckedChangeListener(){//@Override//publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){//RadioButtonradbtn=(RadioButton)findViewById(checkedId);//Toast.makeText(getApplicationContext(),"按钮组值发生改变,你选了"+radbtn.getText(),Toast.LENGTH_LONG).show();//}//});////////第二种方式,通过点击提交按钮获取值Buttonbtnchange=(Button)findViewById(R.id.btnpost);RadioGroupradgroup=(RadioGroup)findViewById(R.id.radioGroup);//为radioGroup设置一个监听器:setOnCheckedChanged()btnchange.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){for(inti=0;i<radgroup.getChildCount();i++){//getChildCount()获得按钮组中的单选按钮的数目;RadioButtonrd=(RadioButton)radgroup.getChildAt(i);//getChinldAt(i):根据索引值获取我们的单选按钮if(rd.isChecked()){//isChecked():判断按钮是否选中Toast.makeText(getApplicationContext(),"点击提交按钮,获取你选择的是:"+rd.getText(),Toast.LENGTH_LONG).show();break;}}}});}复选框布局类似,大差不差,同时,可以根据需求修改选择框样式5、开关按钮ToggleButton和开关Switch6、ProgressBar(进度条)android:max:进度条的最大值android:progress:进度条已完成进度值android:progressDrawable:设置轨道对应的Drawable对象android:indeterminate:如果设置成true,则进度条不精确显示进度android:indeterminateDrawable:设置不显示进度的进度条的Drawable对象android:indeterminateDuration:设置不精确显示进度的持续时间android:secondaryProgress:二级进度条,类似于视频播放的一条是当前播放进度,一条是缓冲进度,前者通过progress属性进行设置!7、SeekBar(拖动条)这玩意是进度条的子类android:max="100"//滑动条的最大值android:progress="60"//滑动条的当前值android:secondaryProgress="70"//二级滑动条的进度android:thumb="@mipmap/sb_icon"//滑块的drawable接着要说下SeekBar的事件了,SeekBar.OnSeekBarChangeListener我们只需重写三个对应的方法:onProgressChanged:进度发生改变时会触发onStartTrackingTouch:按住SeekBar时会触发onStopTrackingTouch:放开SeekBar时触发8、RatingBar(星级评分条)最傻逼和最简单的。。。。。9、ScrollView(滚动条)滚动到底部:我们可以直接利用ScrollView给我们提供的:fullScroll()方法:scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部另外用这玩意的时候要小心异步的玩意,就是addView后,有可能还没有显示完,如果这个时候直接调用该方法的话,可能会无效,这就需要自己写handler来更新了~publicstaticvoidscrollToBottom(finalViewscroll,finalViewinner){HandlermHandler=newHandler();mHandler.post(newRunnable(){publicvoidrun(){if(scroll==null||inner==null){return;}intoffset=inner.getMeasuredHeight()-scroll.getHeight();if(offset<0){offset=0;}scroll.scrollTo(0,offset);}});}2.设置滚动的滑块图片这个更加简单:垂直方向滑块:android:scrollbarThumbVertical水平方向滑块:android:scrollbarThumbHorizontal

2022-9-15 828 0
java

TextView1、基础属性<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:gravity="center"android:background="#8fffad"><TextViewandroid:id="@+id/txtOne"android:layout_width="200dp"android:layout_height="200dp"android:gravity="center"android:text="TextView(显示框)"android:textColor="#EA5246"android:textStyle="bold|italic"android:background="#000000"android:textSize="18sp"/></RelativeLayout>2、实际开发2.1带阴影的textViewandroid:shadowColor:设置阴影颜色,需要与shadowRadius一起使用哦!android:shadowRadius:设置阴影的模糊程度,设为0.1就变成字体颜色了,建议使用3.0android:shadowDx:设置阴影在水平方向的偏移,就是水平方向阴影开始的横坐标位置android:shadowDy:设置阴影在竖直方向的偏移,就是竖直方向阴影开始的纵坐标位置2.2带边框的TextViewshapeDrawable,画2.3带图片(drawableXxx)的TextView:这里就把图片直接放在Drawable文件夹下就行然后在TextView中可以设置四个方向的图片:drawableTop(上),drawableButtom(下),drawableLeft(左),drawableRight(右)另外,也可以使用drawablePadding来设置图片与文字间的间距!<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.jay.example.test.MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:drawableTop="@drawable/show1"android:drawableLeft="@drawable/show1"android:drawableRight="@drawable/show1"android:drawableBottom="@drawable/show1"android:drawablePadding="10dp"android:text="张全蛋"/></RelativeLayout>这样设置的drawable并不能自行设置大小,在XML是无法直接设置的;所以我们需要在Java代码中来进行一个修改!publicclassMainActivityextendsAppCompatActivity{privateTextViewtxtZQD;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);txtZQD=(TextView)findViewById(R.id.txtZQD);Drawable[]drawable=txtZQD.getCompoundDrawables();//获得四个方向的图片资源放到数组//数组下表0~3,依次是:左上右下drawable[1].setBounds(100,0,200,200);txtZQD.setCompoundDrawables(drawable[0],drawable[1],drawable[2],drawable[3]);}}2.4使用autoLink属性识别链接类型<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="http://www.baidu.com"android:autoLink="web"android:textColor="#000000"android:textSize="30sp"android:background="@drawable/txt_rectborder"/>2.5TextView玩转HTML2.6SpannableString&SpannableStringBuilder定制文本这里的用到再看吧https://www.runoob.com/w3cnote/android-tutorial-textview.html后面还有啥跑马灯之类的,也是用到再说吧。

java

一、view和ViewGroupAPP的用户界面上的每一个组件都是使用View和ViewGroup对象的层次结构来构成的,如图1.要定义一个布局,可以用代码,也可以用xml文件定义。比如这样:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TextViewandroid:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="IamaTextView"/><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="IamaButton"/></LinearLayout>实际应用中多数还是采用app控件以及标准的UI布局。二、六大布局:1、LinearLayout(线性布局)先图:大多用等比例划分的属性用于适配不同屏幕。2、RelativeLayout(相对布局)以父容器或者兄弟组件参考+margin+padding就可以设置组件的显示位置上图:以父容器定位以兄弟组件定位margin与padding的区别首先margin代表的是偏移,比如marginleft="5dp"表示组件离容器左边缘偏移5dp;而padding代表的则是填充,而填充的对象针对的是组件中的元素,比如TextView中的文字比如为TextView设置paddingleft="5dp",则是在组件里的元素的左边填充5dp的空间!margin针对的是容器中的组件,而padding针对的是组件中的元素,要区分开来!3、TableLayout(表格布局)4、FrameLayout(帧布局)属性:android:foreground:*设置改帧布局容器的前景图像android:foregroundGravity:设置前景图像显示的位置5、GridLayout(网格布局)6、AbsoluteLayout(绝对布局)建议少用,因为,可能不同手机屏幕大小像素的不同导致适配完全不同,换了就出错。单位dp①控制大小:android:layout_width:组件宽度android:layout_height:组件高度②控制位置:android:layout_x:设置组件的X坐标android:layout_y:设置组件的Y坐标androidstudio就可以玩,可以尝试一下。

2022-9-14 473 0
java

一、目录结构新建了一个空项目,目录结构就这样:java:我们写Java代码的地方,业务功能都在这里实现res:存放我们各种资源文件的地方,有图片,字符串,动画,音频等,还有各种形式的XML文件巨麻烦,一个前端一个后端,很烦。1、res资源目录PS:说到这个res目录,另外还有提下这个assets目录,虽然这里没有,但是我们可以自己创建,两者的区别在于是否前者下所有的资源文件都会在R.java文件下生成对应的资源id,而后者并不会;前者我们可以直接通过资源id访问到对应的资源;而后者则需要我们通过AssetManager以二进制流的形式来读取!对了,这个R文件可以理解为字典,res下每个资源都都会在这里生成一个唯一的iddrawable图片资源:drawable:存放各种位图文件,(.png,.jpg,.9png,.gif等)除此之外可能是一些其他的drawable类型的XML文件mipmap-hdpi:高分辨率,一般我们把图片丢这里mipmap-mdpi:中等分辨率,很少,除非兼容的的手机很旧mipmap-xhdpi:超高分辨率,手机屏幕材质越来越好,以后估计会慢慢往这里过渡mipmap-xxhdpi:超超高分辨率,这个在高端机上有所体现layout布局资源layout:该目录下存放的就是我们的布局文件,另外在一些特定的机型上,我们做屏幕适配,比如480*320这样的手机,我们会另外创建一套布局,就行:layout-480x320这样的文件夹!menu菜单资源menu:在以前有物理菜单按钮,即menu键的手机上,用的较多,现在用的并不多,菜单项相关的资源xml可在这里编写,不知道谷歌会不会出新的东西来替代菜单了~values目录demens.xml:定义尺寸资源string.xml:定义字符串资源styles.xml:定义样式资源colors.xml:定义颜色资源arrays.xml:定义数组资源attrs.xml:自定义控件时用的较多,自定义控件的属性!theme主题文件,和styles很相似,但是会对整个应用中的Actvitiy或指定Activity起作用,一般是改变窗口外观的!可在Java代码中通过setTheme使用,或者在Androidmanifest.xml中为<application...>添加theme的属性!PS:你可能看到过这样的values目录:values-w820dp,values-v11等,前者w代表平板设备,820dp代表屏幕宽度;而v11这样代表在API(11),即android3.0后才会用到的!AndroidManifest.xml主配置文件,用于配置各个组件的访问权限。Android程序签名打包签名的作用:1.应用程序升级:无缝升级到新的版本,包签名必须是同一证书。2.应用程序模块化3.代码数据共享:不同的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程中,而且要让他们用相同的证书签名。其余操作借鉴https://www.runoob.com/w3cnote/android-tutorial-sign-package.html反编译:工具apktools:https://ibotpeaches.github.io/Apktool/dex2jar:https://github.com/pxb1988/dex2jarJD-GUI:http://java-decompiler.github.io/感兴趣的自己研究吧。

2022-9-14 538 0
java

android代码名称:版本号版本名中文名API33Android13/AndroidT/Tiramisu/提拉米苏API32S_V2/sv2/SnowCone/刨冰API31Android12/AndroidS/SnowCone/刨冰API30Android11/AndroidR/RedVelvetCake(红丝绒蛋糕)/RVCAPI29Android10/AndroidQ(Android系统将直接被称为Android10,不再使用甜品做代号)APIQandroidQAPI28android9.0Pie馅饼API27android8.1Oreo奥利奥API26android8.0Oreo奥利奥API25android7.1Nougat牛轧糖API24android7.0Nougat牛轧糖API23android6.0Marshmallow棉花糖API22android5.1Lollipop棒棒糖API21android5.0Lollipop棒棒糖API20android4.4WKitKat奇巧巧克力棒API19android4.4KitKat奇巧巧克力棒API18android4.3JellyBean果冻豆API17android4.2JellyBean果冻豆API16android4.1JellyBean果冻豆API15android4.0.3~4.0.4IceCreamSandwich冰淇淋三明治API14android4.0~4.0.2IceCreamSandwich冰淇淋三明治API13android3.2Honeycomb蜂巢API12android3.1Honeycomb蜂巢API11android3.0Honeycomb蜂巢API10android2.3.3~2.3.7Gingerbread姜饼API9android2.3~2.3.2Gingerbread姜饼API8android2.2~2.2.3Froyo冻酸奶API7android2.1Éclair闪电泡芙API6android2.0.1Éclair闪电泡芙API5android2.0Éclair闪电泡芙API4android1.6Donut甜甜圈API3android1.5ICupcake纸杯蛋糕API2android1.1API1android1.0android架构:1、应用程序层就是程序员开发的那一层,就是平常用户用的那些app们。2、应用程序框架就是安卓操作系统所提供的各种API,程序员可以通过调用这些API进行程序开发。a.丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(textboxes),按钮(buttons),甚至可嵌入的web浏览器。b.内容提供器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。c.资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和布局文件(layoutfiles)。d.通知管理器(NotificationManager)使得应用程序可以在状态栏中显示自定义的提示信息。e.活动管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。3、系统运行库a、程序库Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。以下是一些核心库:主要包括基本的C库、以及多媒体库以支持各种多媒体格式、位图和矢量字体、2D和3D图形引擎、浏览器、数据库支持。1.Bionic系统C库。2.媒体库,基于PacketVideoOpenCORE。3.SurfaceManager顾名思义,用于管理Surface。4.Webkit,LibWebCore浏览器,基于Webkit引擎。5.SGL底层的2D图形引擎6.3Dlibraries基于OpenGLES1.0APIs实现7.FreeType位图(bitmap)和矢量(vector)字体显示。8.SQLite一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。b、Android运行库Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。(安卓5.0之后改用ART虚拟机)Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的"dx"工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。4、Linux内核Android的核心系统服务依赖于内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。每个安卓版本API对应的Linux内核版本也都不相同。Linux内核也同时作为硬件和软件栈之间的抽象层。其外还对其做了部分修改,主要涉及两部分修改:a)Binder(IPC):提供有效的进程间通信,虽然linux内核本身已经提供了这些功能,但Android系统很多服务都需要用到该功能,为了某种原因其实现了自己的一套。b)电源管理:为手持设备节省能耗。Android开发语言Java,分为3部分:a)java语言:即其语法,其写代码的程式b)java虚拟机:为了实现一次编译到处可以运行的原则,java在编译连接以后并没有产生目标机器语言,而是采用了Javabytecode这种Java共用指令,这时就需要一个虚拟机来执行改指令。c)库:跟我们常用的C语言一样提供一些常用的库后两者结合就是JavaRuntimeEnvironment。参考文献:https://blog.csdn.net/salary/article/details/82177546参考文献:https://www.cnblogs.com/skynet/archive/2010/04/15/1712924.html参考文献:https://www.cnblogs.com/lijunamneg/archive/2013/01/18/2866953.html

2022-9-14 565 0