# AndroidStudio
**Repository Path**: wei13013451000/android-studio
## Basic Information
- **Project Name**: AndroidStudio
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2024-01-16
- **Last Updated**: 2024-01-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# [文档地址](https://developer.android.google.cn/?hl=zh-cn)
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-8.2-bin.zip
# 一.Adroid UI 组件层次结构

## 1.view



## 2. viewGroup




# 二.控制UI界面

## 1.xml文件控制UI界面


## 2.java代码控制UI界面


```java
package com.doudou;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.preference.DialogPreference;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("桌面台球", "onDestroy");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
/**
* java代码显示布局界面
*/
FrameLayout frameLayout = new FrameLayout(this);
frameLayout.setBackgroundColor(Color.rgb(17, 85, 0));
setContentView(frameLayout);
TextView text1 = new TextView(this);
text1.setText("开始游戏1");
text1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
text1.setTextColor(Color.rgb(250, 250, 250));
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
text1.setLayoutParams(params);
text1.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(MainActivity.this).setTitle("系统提示")
.setMessage("游戏有风险,进入需要谨慎,要进入嘛?")
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("桌面台球", "进入游戏");
}
}).setNegativeButton("退出", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("桌面台球", "退出游戏");
finish();
}
}).show();
}
});
frameLayout.addView(text1);
}
}
```
## 3.java代码和xml混合控制UI界面
****

```xml
```
```java
package com.doudou.xmljavlayou;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.GridLayout;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
private ImageView []img = new ImageView[4];
private int[] imgPath= new int[]{
R.mipmap.img01, R.mipmap.img02, R.mipmap.img03, R.mipmap.img04,
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridLayout layout = (GridLayout) findViewById(R.id.layout);
for (int i=0;i
```
```java
package com.doudou.myviewrabbit;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FrameLayout frameLayout = (FrameLayout) findViewById(R.id.mylayout);
final RabbitView rabbitView = new RabbitView(this);
rabbitView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
rabbitView.bitmapX = event.getX();
rabbitView.bitmapY = event.getY();
rabbitView.invalidate();//重绘
return true;
}
});
frameLayout.addView(rabbitView);
}
}
```
```java
package com.doudou.myviewrabbit;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;
/**
* Created by 25464 on 2024/1/18.
*/
public class RabbitView extends View {
public float bitmapX;
public float bitmapY;
public RabbitView(Context context) {
super(context);
bitmapX= 50;
bitmapY=50;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();//画笔
Bitmap bitmap= BitmapFactory.decodeResource(this.getResources(),R.mipmap.rabbit1);
canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint);
if (bitmap.isRecycled()){
bitmap.recycle();//回收图片
}
}
}
```
# 三.布局管理器




## 1.相对布局管理器relativeLayout

## 2.侦布局管理器

## 3.表格布局管理器


```xml
```
## 4.网格布局管理器




```xml
```

## 5.布局管理器嵌套



```xml
```
# 四.基本UI组件


## 1.文本框组件

```xml
```
## 2.编辑框组件




```xml
```
## 3.按钮组件
### 1.普通按钮


### 2.图片按钮


```xml
```
### 3.单选按钮


```xml
```
```java
package com.doudou.qqlist;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private RadioGroup radioGroup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_button);
radioGroup = (RadioGroup) findViewById(R.id.g1);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton c = (RadioButton) findViewById(checkedId);
Toast.makeText(MainActivity.this, "性别:" + c.getText(), Toast.LENGTH_SHORT).show();
}
});
}
public void subClick(View v) {
for (int i = 0; i < radioGroup.getChildCount(); i++) {
RadioButton radioButton = (RadioButton) radioGroup.getChildAt(i);
if (radioButton.isChecked()) {
Toast.makeText(MainActivity.this, radioButton.getText(), Toast.LENGTH_SHORT).show();
break;
}
}
}
}
```

### 4.复选框






# 五.监听器


## 1.匿名内部类实现
```xml
```
```java
package com.doudou.qqlist;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.qq_speak);
Button button = (Button) findViewById(R.id.bt1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"单击了按钮1",Toast.LENGTH_SHORT).show();
}
});
}
}
```

## 2.onClick属性来实现

```xml
```
```java
public void myClick(View view){
Toast.makeText(MainActivity.this,"单击了按钮2",Toast.LENGTH_SHORT).show();
}
```
# 六.高级UI组件

## 1.进度条




```xml
```
```java
package com.doudou.test;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private ProgressBar progressBar;
private int mProgress = 0;
private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.high_ui_progress_bar);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
//消息处理对象
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0x111) {
progressBar.setProgress(mProgress);
} else {
Toast.makeText(MainActivity.this, "耗时操作已完成", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
}
}
};
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
mProgress = doWork();
Message m = new Message();
if (mProgress < 100) {//耗时完成
m.what = 0x111;
mHandler.sendMessage(m);
} else {//耗时未完成
m.what = 0x110;
mHandler.sendMessage(m);
break;
}
}
}
private int doWork() {
mProgress += Math.random() * 10;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return mProgress;
}
}).start();
}
}
```
## 2.拖动条

```xml
```
```java
package com.doudou.test;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.SeekBar;
import android.widget.Toast;
/**
* 拖动条
*/
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.seek_bar);
SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
Toast.makeText(MainActivity.this, "进度改变"+progress, Toast.LENGTH_SHORT).show();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Toast.makeText(MainActivity.this, "开始触摸", Toast.LENGTH_SHORT).show();
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Toast.makeText(MainActivity.this, "停止触摸", Toast.LENGTH_SHORT).show();
}
});
}
}
```



## 3.图像类


## 4.列表类
### 1.下拉列表




### 2.列表视图


```xml
```
```xml
```
```java
package com.doudou.spinner;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_view);
int[] images = {
R.drawable.head, R.drawable.head, R.drawable.head, R.drawable.head, R.drawable.head, R.drawable.head,
R.drawable.head, R.drawable.head, R.drawable.head, R.drawable.head, R.drawable.head, R.drawable.head,
};
String[] titles = {
"张三1", "张三2", "张三3", "张三4", "张三5", "张三6",
"张三11", "张三21", "张三31", "张三41", "张三51", "张三61",
};
List