安卓学习像素块生成器项目

该项目旨在揭示手机屏幕像素的奥秘以及Android应用中Activity的复杂生命周期。通过两个完整生命周期的Activity展示,代码涉及点击事件处理及维特比算法、有限状态机等技术。项目适合已掌握基础Android知识并希望深化理解的开发者学习。
摘要由CSDN通过智能技术生成

项目介绍

项目背景: 在我们生活中已经离不开手机了,而国内大部分手机使用的都是安卓系统。对于自己的手机,大家或多或少都想了解更多,手机是怎么显示的呢?手机显示其实就是很多个像素组成。而你知道手机的像素有多大吗?有多少吗?
项目目标: 解决人们对于手机的疑惑、解决此处省略600字。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
项目说明: 项目结构十分复杂,有多复杂呢,一时间也说不清楚,就简单点说,项目是由两个activity的生命周期组成,说到activity就有很多人就不明白了,现在市场上一般的app项目只会写半个activity的生命周期,一个两百人的公司就得编6个月。
可想而知,由两个完整的activity的生命周期组成的app是有多复杂。

项目代码解释

第一个activity的代码:
这个不用多说了,由一个高深的点击事件和晦涩难懂的一些控件绑定构成。不会点击事件的也不必看这篇高深博文了;
去这学懂了点击事件在来:https://blog.csdn.net/weixin_43621608/article/details/105870181

package com.example.sbdx;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity2 extends AppCompatActivity {
EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        editText=findViewById(R.id.ed);
        Button button=findViewById(R.id.but);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dj();
            }
        });
    }
    public  void dj(){
        Intent intent=new Intent(MainActivity2.this,MainActivity.class);
        String s= String.valueOf(editText.getText());
        intent.putExtra("sb",s);
        Toast.makeText(this,editText.getText(),Toast.LENGTH_LONG).show();
        startActivity(intent);
    }
}

接下来就是第二个activity了,用到了维特比算法
有限状态机等算法,不会算法的人千万不要强行阅读,否则容易大脑宕机,最好把这篇算法全部看懂再来。
算法
记住千万别强行阅读,后果自负。

package com.example.sbdx;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.sbdx.R;

import java.util.Random;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LinearLayout linearLayout = findViewById(R.id.linear_layout);
        Intent intent=getIntent();
        String a=intent.getStringExtra("sb");
        a.trim();
        int  sb=Integer.parseInt(a);
//        int hh = linearLayout.getMeasuredWidth();
//        int ww = linearLayout.getMeasuredHeight();
        WindowManager wm = (WindowManager) this.getSystemService(this.WINDOW_SERVICE);
        int width = wm.getDefaultDisplay().getWidth();
        int height = wm.getDefaultDisplay().getHeight();
//        Toast.makeText(this,hh+"::::"+ww,Toast.LENGTH_LONG).show();
//        Toast.makeText(this,width+"::::"+height+":"+sb,Toast.LENGTH_LONG).show();

        for (int j=0; j<height/sb; j++){
            LinearLayout linearLayout1 = new LinearLayout(this);
            LinearLayout.LayoutParams weight1 = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f);
            linearLayout.setLayoutParams(weight1);
            linearLayout1.setOrientation(LinearLayout.HORIZONTAL);
            linearLayout.addView(linearLayout1);
        for (int i=0; i<width/sb; i++){
//            Toast.makeText(this,"dff",Toast.LENGTH_SHORT).show();
            int r = (int) (Math.random()*255);
            int b = (int) (Math.random()*255);
            int g = (int) (Math.random()*255);
            TextView textView = new TextView(this);
            textView.setWidth(sb);
            textView.setHeight(sb);
            textView.setBackgroundColor(Color.rgb(r, g, b));
            textView.setLayoutParams(weight1);
            linearLayout1.addView(textView);
        }
        }
    }
}

效果展示:

由于界面太多,就不一一展示了。
在这里插入图片描述
在这里插入图片描述
懂得都懂。。。。。,如果还说没布局文件的那就建议去看看《安卓第一行代码》。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值