android 写一个打印心形的程序
时间: 2023-11-29 12:03:32 浏览: 108
打印出心形
以下是一个在 Android Studio 中实现打印心形的示例代码:
```java
public class MainActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
// 计算屏幕宽度和高度
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;
// 计算心形的大小和位置
int size = Math.min(width, height) * 3 / 4;
int x = (width - size) / 2;
int y = (height - size) / 2;
// 生成心形的字符数组
char[][] heart = generateHeart(size);
// 将字符数组转换为字符串并显示在 TextView 上
StringBuilder sb = new StringBuilder();
for (char[] row : heart) {
sb.append(row);
sb.append("\n");
}
textView.setText(sb.toString());
textView.setGravity(Gravity.CENTER);
}
/**
* 生成指定大小的心形字符数组
*/
private char[][] generateHeart(int size) {
char[][] heart = new char[size][size];
int centerX = size / 2;
int centerY = size / 2 - size / 4;
// 初始化字符数组为 ' ',即空格
for (int i = 0; i < size; i++) {
Arrays.fill(heart[i], ' ');
}
// 生成心形
for (int y = 0; y < size; y++) {
for (int x = 0; x < size; x++) {
double distance = Math.sqrt(Math.pow(x - centerX, 2) + Math.pow(y - centerY, 2));
if (distance <= size / 4 * Math.sin(Math.atan2(y - centerY, x - centerX))) {
heart[y][x] = '*';
}
}
}
return heart;
}
}
```
在 XML 布局文件中添加一个 TextView:
```xml
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
```
运行程序后,将显示一个打印出的心形。
阅读全文