安卓开发学习(Android Studio)

每一个页面都是一个activity,在activity里写事件,但是页面布局要在activity_main这种xml文件里写布局,或者脱控件,好吧,目前就这么多了。

pid

aA1028339752

比例积分微分

#include <stdio.h>
#include<bits/stdc++.h>
struct _pid{
float SetSpeed; //定义设定值
float ActualSpeed; //定义实际值
float err; //定义偏差值
float err_last; //定义上一个偏差值
float Kp,Ki,Kd; //定义比例、积分、微分系数
float voltage; //定义电压值(控制执行器的变量)
float integral; //定义积分值
}pid;
//项目中获取到的参数
void PID_init(){
printf(“PID_init begin \n”);
pid.SetSpeed=0.0;
pid.ActualSpeed=0.0;
pid.err=0.0;
pid.err_last=0.0;
pid.voltage=0.0;
pid.integral=0.0;
pid.Kp=0.2; //自己设定
pid.Ki=0.015; //自己设定
pid.Kd=0.2; //自己设定
printf(“PID_init end \n”);
}
float PID_realize(float speed){
pid.SetSpeed=speed; //设定值
pid.err=pid.SetSpeed-pid.ActualSpeed; //设定值-实际值
pid.integral+=pid.err; //积分值,偏差累加
pid.voltage=pid.Kp*pid.err+pid.Ki*pid.integral+pid.Kd*(pid.err-pid.err_last);
pid.err_last=pid.err; //上一个偏差值
pid.ActualSpeed=pid.voltage*1.0; //算出实际值
return pid.ActualSpeed; //返回
}
int main(){
printf(“System begin \n”);
PID_init();
int count=0;
while(count<1000)
{
float speed=PID_realize(200.0);
printf(“%f\n”,speed);
count++;
}
return 0;
}

P:Proportion(比例),就是输入偏差乘以一个常数。
I  :Integral(积分),就是对输入偏差进行积分运算。
D:Derivative(微分),对输入偏差进行微分运算。
注:输入偏差=读出的被控制对象的值-设定值。比如说我要把温度控制在26度,但是现在我从温度传感器上读出温度为28度。则这个26度就是”设定值“,28度就是“读出的被控制对象的值”。然后来看一下,这三个元素对PID算法的作用
如果现在的输出是1,目标输出是100
P:的作用是以最快的速度达到100,把P理解为一个系数即可;
I:0的积分才能是一个常数,I就是使误差为0而起调和作用;
D:大家都知道微分是求导数,导数代表切线是吧,切线的方向就是最快到至高点的方向。最快获得最优解,那么微分就是加快调节过程的作用了。

在工业过程控制中,按被控对象的实时数据采集的信息与给定值比较产生的误差的比例、积分和微分进行控制的控制系统,简称PID控制系统。PID控制具有原理简单,鲁棒性强和实用面广等优点,是一种技术成熟、应用最为广泛的控制系统
dyua

kk1230 

Windows在C:\WINDOWS\system32\drivers\etc目录下

关于andriod sdk无法进行更新的问题,可以采取这种方式,在末尾添加

74.125.237.1 dl-ssl.google.com

Adb interface驱动无法安装解决方法!

实际上Android SDK中带有Adb Interface的驱动,可以安装自带驱动。

其中驱动存放的位置为:

%\extras\google\usb_driver\android_winusb.inf

然后开始安装上述inf文件

步骤如下:

1. 在设备管理器中,找到ADB Interface,右击,选择“更新驱动程序软件”

2. 在弹出的窗口中选择第二项,也就是“浏览计算机以查找驱动程序软件” (以前遇到驱动的问题从来不考虑第二项,单纯地认为驱动肯定要在网上下而不是在windows中找)

3. 在弹出的窗口中继续选择第二项,也就是“从计算机的设备驱动程序列表中选择”

4. 在弹出的窗口中保持默认选择,点击“下一步”

5. 在弹出的窗口中选择“从磁盘安装”

在“从磁盘安装”对话框的“制造商文件复制来源”中,选择电脑上的Android SDK目录中的android_winusb.inf 文件

6. 选择android_winusb.inf路径并确定之后,在弹出的对话框中,选择第三项,也就是 “Android Composite ADB Interface”,然后点击“下一步”

7. 安装的过程中可能会出现一些警告信息,忽略,选择继续安装

8. 安装完毕

layout也就是布局文件,形成前端

java文件就是后台文件,控制

1、.gradle和.idea
这两个目录下放置的都是Android Studio自动生成的一些文件,我们无须关心,也不要去手动编辑。
2、app
        项目中的代码、资源等内容几乎都是放置在这个目录下的,我们后面的开发工作也基本都是在这个目录下进行的,待会儿还会对这个目录单独展开进行讲解。
3、build
        这个目录你也不需要过多关心,它主要包含了一些在编译时自动生成的文件。
4、gradle
        这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。Android Studio默认没有启动gradle wrapper的方式,如果需要打开,可以点击Android Studio导航栏 –> File –> Settings –> Build,Execution,Deployment –> Gradle,进行配置更改。
5、.gitignore
        这个文件是用来将指定的目录或文件排除在版本控制之外的。
6、build.gradle
        这是项目全局的gradle构建脚本,通常这个文件中的内容是不需要修改的。下面会详细分析gradle构建脚本中的具体内容。
7、gradle.properties
        这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。
8、gradlew和gradlew.bat
        这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的。
9、HelloWorld.iml
        iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件(Android Studio是基于IntelliJ IDEA开发的),用于标识这是一个IntelliJ IDEA项目,我们不需要修改这个文件中的任何内容。
10、local.properties
        这个文件用于指定本机中的Android SDK路径,通常内容都是自动生成的,我们并不需要修改。除非你本机中的Android SDK位置发生了变化,那么就将这个文件中的路径改成新的位置即可。
11、settings.gradle
        这个文件用于指定项目中所有引入的模块。由于HelloWorld项目中就只有一个app模块,因此该文件中也就只引入了app这一个模块。通常情况下模块的引入都是自动完成的,需要我们手动去修改这个文件的场景可能比较少。

andriod studio项目目录结构简介

manifests:

AndroidManifest.xml:APP的配置信息

java:主要为源代码和测试代码

res:主要是资源目录,存储所有的项目资源

res文件夹下anim文件是动画文件

drawable:存储一些xml文件,-*dpi表示存储分辨率的图片,用于适配不同的屏幕。

-mdpi:320×480

-hdpi:480×800、480×854

-xhdpi:至少960×720

-xxhdpi:1280×720

layout:存储布局文件

mipmap:存储原声图片资源

values:存储app引用的一些值

– colors.xml:  存储了一些color的样式

– dimens.xml:存储了一些公用的dp值

– strings.xml: 存储了引用的string值

– styles.xml:   存储了app需要用到的一些样式

Gradle Scripts:build.gradle为项目的gradle配置文件

build:系统生成的文件目录,最后生成的apk文件就在这个目录,这里是app-debug.apk

libs:为项目需要添加的*.jar包或*.so包等外接库

src:项目的源代码,其中android test为测试包,main里为主要的项目目录和代码,test为单元测试代码

AndroidManifest.xml

AndroidManifext描述了package中暴露的组件像activity,serveice等,他们各自的实现类,各种能被处理的数据和启动位置。此外还能声明程序中的contentproviers,intentreceivers,还能指定permissions和instrumentation等等。

xmlns:android:定义android的命名空间。

package:指定本应用内java主程序的包名,这里就是com.example.jared.hello了。

application:声明了每一个应用程序的组件及其属性。

android:allowBackup:将程序加入到系统的备份和恢复架构中。

android:icon:显而易见表示APP的图标了。

android:label:许可列表。

android:supportsRtl:启用各种RTLAPI来用RTL布局显示应用,这个是android4.2的新特性。     android:theme:android的主题。

activity:android:name表示当前的activity的名字,因为工程为MainActivity,所以这个名字就为这个,之后有新的activity的话,也需要添加才可以使用。

intent-filter:包含了action,data和category三种。

action:只有android:name属性,常见的是android.intent.action.MAIN,表示此activity是作为应用程序的入口。

data:指定了希望接受的intent请求的数据URI和数据类型。

category:android:name属性,常见的是android.intent.category.LAUNCHER,决定应用程序是否显示在程序列表里。

RelativeLayout:相对布局。

xmlns:android定义:android命名空间。

xmlns:tools:tools命名空间,用来预览一些布局属性的添加喝删除后的效果。

android:layout_width:指定了控件的宽度,可选择match_parent,fill_parent,wrap_content,其中match_parent和fill_parent的意思相同,官方更加推荐使用match_parent。match_parent表示让当前控件的大小和父布局的大小一样,也就是由父布局来决定当前控件的大小。wrap_content表示让当前控件的大小能够刚好包含住里面的内容,也就是由控件内容决定当前控件的大小。

android:layout_height:同上。

android:paddingLeft,android:paddingRight,android:paddingTop,android:paddingBottom:站在父view的角度描述问题,它规定它里面的内容必须与这个父view边界的距离。此外还有margin,它是站在自己的角度描述问题,规定自己喝其他的view之间的距离,如果同一级只有一个view,那么它的效果基本上就和padding一样了。

TextView:android的控件。

android:text:textview显示的内容,这里就是hello world了。

位置:res/menu目录下

<menu>:代表菜单资源

<item>:菜单项

android:id  // 菜单项的id

android:icon  // 菜单项的图标

android:title  // 菜单项的标题

android:orderInCategory // 排序

android:showAsAction // 在ActionBar上的显示参数(API 11)

never:不将MenuItem显示在ActionBar上(是默认值)

always:总是将该MenuItem显示在ActionBar上

ifRoom:当AcitonBar上有空间时将该MenuItem显示在ActionBar上,没有空间就放入溢出菜单中

withText:将该MenuItem显示在ActionBar上,并显示该菜单项的文本

显示自定义ActionBar的View,需要和actionViewClass这组参数结合使用(API14)

<group>:菜单组

<item

android:id=“@+id/item1”

android:title=菜单项一”

android:orderInCategory=“3000”

android:showAsAction=“always|withText”

android:icon=“@drawable/ic_launcher”/>

<item

android:id=“@+id/item2”

android:title=菜单项二”

android:orderInCategory=“10”

android:showAsAction=“ifRoom”

android:icon=“@drawable/ic_launcher”/>

<item

android:id=“@+id/item3”

android:orderInCategory=“20”

android:title=菜单项三”

android:icon=“@drawable/ic_launcher”/>

</menu>0

mipmap下放的是app的图标

ldpi          0.75

mdpi        1    (安卓里面以160为标准)

hdpi        1.5

xhdpi       2.0

xxhdpi    3.0

xxxhdpi  4.0

不同的分辨率下图标大小也会相应不同

要保持“视觉大小一致性”,就是说无论是在手机、低分辨率平板、高分辨率平板上,这个控件或者图片在物理尺寸上都是一样的。

android中values

string
  • 分为公共区和模块区
  • 模块里的,按照模块名+功能名方式命名
  • 最好加注释
color
  • 分为常用(公共)颜色值和模块颜色值
  • 公共颜色值以颜色值命名
  • 模块颜色值以模块名加功能命名
  • oschina,iosched这两个项目,命名也有不利于维护的地方swiperefresh_color1,theme_accent_1,这点不值得借鉴
dimens
  • 分为公共字体大小,常用边距,和模块用的dimens
  • 公共字体大小命名
    <!-- App Primary Text Sizes -->
    <dimen name="app_text_size_xsmall">11sp</dimen>
    <dimen name="app_text_size_small">12sp</dimen>
    <dimen name="app_text_size_medium">14sp</dimen>
    <dimen name="app_text_size_large">18sp</dimen>
    <dimen name="app_text_size_xlarge">20sp</dimen>
    <dimen name="app_text_size_diff_large_small">6sp</dimen>
    
  • 公共间距命名
    <!-- standard metrics -->
    <dimen name="spacing_normal">8dp</dimen>
    <dimen name="spacing_micro">4dp</dimen>
    <dimen name="padding_normal">16dp</dimen>
  • 模块dimens 命名方式,模块名+功能
styles
  • 和text相关的样式比较少
  • 命名方式为主题+功能,中间用“.”分隔
  • 字体styles一般仅定义颜色和字体大小

如果有时候出现编译问题,可以build->clean project

@id和@+id的区别,网上讲的主要是@id是引用已经存在的控件,而@+id则是声明一个新的id。

android:id属性的内容比较特别:

例如:@+id/height

“@”符号是提示XML解析器应该把后面的字符串解析成标识符号。

“+”符号代表将添加一个标识符号。

“id/”表示这个标识符号回被归类在“id”下面。

“height”是这个界面主见的“android:id”。

以后的程序中,会使用“R.id.height”来取得这个界面组件。因此”@+id/height”的意思是我们在此创建了名为“height”的标识符,可以通过这个标识符来控制所对应的界面组件,“R”类会自动配置一个地址给这个界面组件。“R”类的内容,这可以通过查看“R.java”文件得知。

如果80端口被system进程占用的话,可以根据以下步骤来解决

以管理员身份运行cmd。

运行net stop http

按y 确定

运行 Sc config http start= disabled

netstat –ano 进行确认

重启wamp即可

RelativeLayout布局,是大家都比较熟悉的。平时我们布局的时候,可以直接在xml文件中调整位置,大小,属性等等。也可以在中进行拖拉进去。

ConstraintLayout 布局(约束布局),可以说是升级版的RelativeLayout。首先,你的Android Studio需要2.2版本及以上,还需要在app build.gradle里面设置

ConstraintLayout布局是Android Studio 2.2的新增功能,所以在建立依赖前需要将Android Studio更新至2.2版本或以上。
在app/build.gradle文件中添加依赖,如下:

dependencies {
    compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'
}

RelativeLayout:相对布局,控件的位置是按照相对位置来计算的,控件之间的位置具有相对对应的关系,是最灵活最常用的布局

BottomNavigationView 是通过 menu 来设置item

crtl+/进行注释

向项目配置文件AndroidManifest.xml中注册我们新创建的Activity页面组件

如下所示

R.styleable.CircleProgressView_arcWidth
若是在res文件夹下values下的attrs.xml中得
<declare-styleable name="CircleProgressView">
<attr name="arcWidth" format="dimension" />
declare-styleable(自定义控件)中写入自定义控件的属性,就会自动在R.styleable用下划线引用的方式对arcwidth进行操作。

自定义控件基本绘制原理:

View的绘制基本上由measure()、layout()、draw()这个三个函数完成

smartable 里的id和name是固定的

Android 关于@NonNull

解释一个字段,方法和字段的值不能为空

如果导入包都不行,那可能就是配置里版本的问题

@SuppressLint(“NewApi”)

使用该版本的最低api

线程间操作无效:从不是创建控件“textBox1”的线程访问

背景

通过一个辅助线程计算出的一个值赋给textBox1.text;

解决办法

1.直接在窗体的构造函数中添加:

System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;

262 thoughts on “安卓开发学习(Android Studio)

  1. Pingback: Google
  2. Pingback: benwa balls
  3. Pingback: سکس ایرانی
  4. Pingback: FS19 mods
  5. Pingback: FS 19 mods
  6. Pingback: sex audio stories
  7. Pingback: Dolce and Gabbana
  8. Pingback: سكس مترجم
  9. Pingback: Givenchy
  10. Pingback: Jimmy Choo
  11. Pingback: lego kopen
  12. Pingback: Parfum kopen
  13. Pingback: فیلم سکسی
  14. Pingback: W88 Thailand
  15. Pingback: adult
  16. Pingback: youtube to mp4
  17. Pingback: ww88
  18. Pingback: سکس ایرانی
  19. Pingback: sex toys
  20. Pingback: male masturbators
  21. Pingback: SMT reflow oven
  22. Pingback: USB Flash Drive
  23. Pingback: dioksiaceton
  24. Pingback: full apps download
  25. Pingback: reflow oven
  26. Pingback: leaflet delivery
  27. Pingback: HSSC Exam Date
  28. Pingback: Sell your Home
  29. Pingback: kalendar 2015
  30. Pingback: domain names
  31. Pingback: mattress removal dc
  32. Pingback: baby doll lingerie
  33. Pingback: סיפורי סקס
  34. Pingback: Media Shredding
  35. Pingback: branding
  36. Pingback: Boost Your Confidence
  37. Pingback: pilotes emachines
  38. Pingback: dong
  39. Pingback: 2018-2019
  40. Pingback: 2019
  41. Pingback: versace
  42. Pingback: cleantalkorg2.ru
  43. Pingback: a2019-2020
  44. Pingback: facebook
  45. Pingback: facebook1
  46. Pingback: vakhicheskij
  47. Pingback: Pop Music
  48. Pingback: dildo
  49. Pingback: Family Porn World
  50. Pingback: Parallel Profits
  51. Pingback: web designer new york
  52. Pingback: javsearch.mobi
  53. Pingback: adam and eve
  54. Pingback: Stratego
  55. Pingback: Hegemony
  56. Pingback: instagram marketing
  57. Pingback: rechargeable vibrator
  58. Pingback: large dildos
  59. Pingback: vibrator challenge
  60. Pingback: post birth pads
  61. Pingback: sex position pillow
  62. Pingback: thrusting rabbit
  63. Pingback: Job Opportunity
  64. Pingback: סקס
  65. Pingback: posters
  66. Pingback: look at here
  67. Pingback: sito internet
  68. Pingback: sexleketøy
  69. Pingback: Smo-King
  70. Pingback: Adult dating in india
  71. Pingback: Take my online class
  72. Pingback: realistic dildo
  73. Pingback: cryptoethereum
  74. Pingback: private
  75. Pingback: scr888
  76. Pingback: rent no credit
  77. Pingback: example.org.17
  78. Pingback: luxury lodges
  79. Pingback: http://sexlive.ltd
  80. Pingback: msn hotmail login
  81. Pingback: redbubble shirts
  82. Pingback: casti de copiat
  83. Pingback: Sexy live chat
  84. Pingback: INSTAGRAM SERVICES
  85. Pingback: Gossip
  86. Pingback: Tyga Joe Budden
  87. Pingback: Hot live females
  88. Pingback: Hot ladies
  89. Pingback: Free adult sex
  90. Pingback: Daily Top 10 Lists
  91. Pingback: Funny Instagram
  92. Pingback: Free chat
  93. Pingback: Healthyfood
  94. Pingback: link 1gom
  95. Pingback: Yeah yeah
  96. Pingback: hot girls live
  97. Pingback: megyn kelly blackface
  98. Pingback: sexy cams live
  99. Pingback: ThreatPost
  100. Pingback: off page seo
  101. Pingback: hip hop memes
  102. Pingback: Funny hip hop
  103. Pingback: events shuttle
  104. Pingback: Hot rap song
  105. Pingback: Comedy Hip hop
  106. Pingback: juicy chat
  107. Pingback: Asd hot webcam chat
  108. Pingback: Hot rap mixtape
  109. Pingback: girl chat
  110. Pingback: free bitcoin cash
  111. Pingback: girl chat
  112. Pingback: Sexy girls
  113. Pingback: custom apparel
  114. Pingback: wunderino casino
  115. Pingback: vibrating massager
  116. Pingback: sarasota medical weed
  117. Pingback: xlxx
  118. Pingback: Adult
  119. Pingback: sexy gaming Chat
  120. Pingback: sweet Sofia cam
  121. Pingback: Tory Burch
  122. Pingback: Hot webcam
  123. Pingback: funny hip hop
  124. Pingback: hot hunk sexy
  125. Pingback: 外贸网站建设
  126. Pingback: business opportunity
  127. Pingback: عکس سکسی
  128. Pingback: Guitar
  129. Pingback: free mp3 download
  130. Pingback: Sports Betting
  131. Pingback: белек время
  132. Pingback: Present
  133. Pingback: sexy chat
  134. Pingback: desigirl
  135. Pingback: 해외카지노
  136. Pingback: 로투스홀짝
  137. Pingback: 토토사이트
  138. Pingback: government
  139. Pingback: fake id maker
  140. Pingback: 토토사이트
  141. Pingback: marble
  142. Pingback: #MusicVideo
  143. Pingback: #Trill
  144. Pingback: Fassaden
  145. Pingback: Kamagra 100mg Pills
  146. Pingback: 사다리사이트
  147. Pingback: 3mmc
  148. Pingback: iosgg.com
  149. Pingback: 谷歌SEO
  150. Pingback: 먹튀검증
  151. Pingback: 안전공원
  152. Pingback: male toys
  153. Pingback: anavar benefits
  154. Pingback: пандури
  155. Pingback: female nipple clamps
  156. Pingback: vps server
  157. Pingback: large vibrating dildo
  158. Pingback: prostate massager
  159. Pingback: visqueen dpm
  160. Pingback: best butt plug
  161. Pingback: visqueen
  162. Pingback: Low cost viagra 20mg
  163. Pingback: Low cost viagra 20mg
  164. Pingback: Google

发表评论