android studio模仿微信界面

只提供代码,思路想不起来了。

目录

主函数java文件夹代码

friendList

 MainActivity

MainActivity2

MainActivity3

drawable文件夹

layout文件夹

activity_friend_list

activity_main

activity_main2

activity_main3

item_for_custom_spinner

list_layout

 AndroidManifest(main文件夹)

效果


主函数java文件夹代码

friendList

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.icu.text.UnicodeMatcher;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class friendList extends AppCompatActivity implements View.OnClickListener,
        AdapterView.OnItemClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_friend_list);
        initView();
        initData();
    }
    //声明组件变量
    private Button btn1;
    private ListView listView;

    //初始化组件
    private void initView(){
        btn1 = findViewById(R.id.btn1);
        listView = findViewById(R.id.listview);
        btn1.setOnClickListener(this);
    }
    //数组数据源
    private int[] iPic = {R.drawable.lake,R.drawable.medium,R.drawable.night,
    R.drawable.rest,R.drawable.science,R.drawable.door};

    private String[] name = {"海虎","奥加","天道","白首男","白次男","白武男","刹暗天"};
    private String[] content = {"我是白军浪","我是杀人鲸","我是大白鲨","我是天国帝皇",
            "我是大地皇帝","我是帝者战神","我是仁者暗帝"};

    ArrayList<Map<String,Object>>mArrayList;
    //数据初始化
    private void initData(){
        mArrayList = new ArrayList<>();//数据打包
        for(int i = 0;i<iPic.length;i++){
            Map<String,Object> map = new HashMap<>();
            map.put("image",iPic[i]);
            map.put("name",name[i]);
            map.put("content",content[i]);
            mArrayList.add(map);
        }
        SimpleAdapter simpleAdapter = new SimpleAdapter(this,mArrayList,R.layout.list_layout,
                new String[]{"image","name","content"},new int[]{R.id.img,R.id.text1,R.id.text2});
        listView.setAdapter(simpleAdapter);
    }

    @Override
    public void onClick(View v) {

    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(this, "被单击了", Toast.LENGTH_SHORT).show();
        
    }
}

 MainActivity

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity  implements View.OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//        预定义变量
        Spinner spinner;
        List<String> listForSpinner = new ArrayList<>();
        ArrayAdapter<String> adapterForSpinner;
//        变量初始化
        spinner = findViewById(R.id.spinner);// 引用Spinner控件
//        给字符串数组赋初值
        listForSpinner.add("中文");
        listForSpinner.add("日语");
        listForSpinner.add("英语");
        listForSpinner.add("俄语");
//        设置适配器
        adapterForSpinner = new ArrayAdapter<>(MainActivity.this, R.layout.item_for_custom_spinner, listForSpinner);
        spinner.setAdapter(adapterForSpinner);
        Toast toast = Toast.makeText(getApplicationContext(), "default toast", Toast.LENGTH_SHORT);
        final int[] flag = {0};
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                if (flag[0] == 0){
                    flag[0] = flag[0] + 1;
                    return;
                }
            }
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
            }
        });
        initView();
    }
    private Button button1;
    private Button button2;
    void initView(){
        button1 = findViewById(R.id.button1);//通过findViewById()方法绑定Botton组件
        button2 = findViewById(R.id.button2);//通过findViewById()方法绑定Botton组件
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
    }
    private void jumpToMainActivity2(){
        Intent intent = new Intent(this, MainActivity2.class);//使用快捷键“Ait+Enter"
        startActivity(intent);//启动意图
    }
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.button1:
                jumpToMainActivity2();//登录
                break;
            case R.id.button2:
                jumpToMainActivity2();//注册
                break;
            default:
                break;

        }
    }
}

MainActivity2

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import java.lang.reflect.Array;

public class MainActivity2 extends AppCompatActivity implements  View.OnClickListener,
        CompoundButton.OnCheckedChangeListener, AdapterView.OnItemSelectedListener {
    String name = "123";//曾经注册的账户号
    String password = "123456";//曾经注册时的登录密码


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        initView();
        initData();
    }
    //声明变量,
    private Button button4; //登录
    private Button button3; //取消
    private CheckBox checkBox1;
    private Spinner spinner;
    private EditText mEditText1;
    private EditText mEditText2;
    //初始化变量
    void initView(){
        button4= findViewById(R.id.button4);//通过findViewById()方法绑定Botton组件
        button3= findViewById(R.id.button3);//通过findViewById()方法绑定Botton组件
        checkBox1 = findViewById(R.id.checkbox1);
        mEditText1=findViewById(R.id.editTextTextPersonName2);
        mEditText2=findViewById(R.id.editTextTextPassword);
        button4.setOnClickListener(this);
        button3.setOnClickListener(this);
        checkBox1.setOnCheckedChangeListener(this);
        spinner=findViewById(R.id.spinner1);
        spinner.setOnItemSelectedListener(this);
    }
    //声明两个变量,用来读取文本输入框中的内容
    private String editText1;
    private String editText2;
    //此方法实现从一个活动跳转到另一个活动
    private void jumpToMainActivity3(){
        Intent intent = new Intent(this, MainActivity3.class);//使用快捷键“Ait+Enter"
        startActivity(intent);//启动意图
    }
    private void jumpToMainActivity1(){
        Intent intent = new Intent(this, MainActivity.class);//使用快捷键“Ait+Enter"
        startActivity(intent);//启动意图
    }

    @Override
    public void onClick(View view){
        switch (view.getId()){
            case R.id.button4:
                //跳转之前
                editText1 = mEditText1.getText().toString().trim();//获取用户名
                editText2 = mEditText2.getText().toString().trim();//获取密码
                if (editText1.equals(name)) {
                    if (editText2.equals(password)) {
                        Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
                        jumpToMainActivity3();
                    } else {
                        Toast.makeText(this, "请输入正确的密码", Toast.LENGTH_SHORT).show();
                    }
                }else {
                    Toast.makeText(this, "请输入正确的用户名或注册", Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.button3:
                jumpToMainActivity1();//取消
                break;
            default:
                break;

        }
    }
    @Override
    public void onCheckedChanged(CompoundButton compoundButton,boolean b){
        checkBox1=(CheckBox) compoundButton;
        String strMsg = "";
        if (b){
            strMsg = String.format("checkbox组件被选中了",checkBox1.getText(),checkBox1.getId());
        }else {
            strMsg = String.format("checkbox组件被取消了",checkBox1.getText(),checkBox1.getId());
        }
        Toast.makeText(this, strMsg, Toast.LENGTH_SHORT).show();
    }
    //数据源
    private String[] city = {"中国-柳州","中国-上海","中国-广州","中国-台湾","中国-香港","中国-曹县"};
    //数据初始化
    private void initData(){
        //初始化适配器
        ArrayAdapter<String>mArrayAdapter=new ArrayAdapter<String>(this, androidx.appcompat.
                R.layout.support_simple_spinner_dropdown_item,city);
        spinner.setPrompt("国家/地区");//标题
        spinner.setAdapter(mArrayAdapter);//组件与适配器绑定
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int i, long id) {
        String strMsg=String.format("选中的是",i+1,city);
        Toast.makeText(this, strMsg, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

}



MainActivity3

package com.example.myapplication;


import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ProgressBar;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity3 extends AppCompatActivity  implements CompoundButton.OnCheckedChangeListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        initView();
        autoTncrease();
    }

    private ProgressBar progressBar;
    private TextView mTextView;
    private Switch switch1;
    private void initView() {
        mTextView = findViewById(R.id.textView9);
        progressBar = findViewById(R.id.progressBar);
        switch1=findViewById(R.id.switch1);
        switch1.setOnCheckedChangeListener(this);
    }

    //声明一个变量,用来表示当前进度的值(0-100)
    private int iProgress = 0;
    //自动增加进度方法
    private void autoTncrease(){
        //建立子线程
        Thread thread=new Thread(new Runnable() {
            @Override
            public void run() {
                while (iProgress<=100){
                    iProgress +=10;
                    if (iProgress >100){
                        iProgress = 0;
                        jumpTofriendList();
                        return;
                    }
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            progressBar.setProgress(iProgress);//设置进度条的当前进度值
                            mTextView.setText("进度:"+iProgress+"%");//使用组件来展示当前进度值

                        }
                    });
                    try {
                        Thread.sleep(200);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }

                }
            }
        });
        thread.start();//启动子线程
    }
    private void jumpTofriendList(){
        Intent intent = new Intent(this, friendList.class);//使用快捷键“Ait+Enter"
        startActivity(intent);//启动意图
    }
    @Override
    public void onCheckedChanged(CompoundButton compoundButton,boolean b){
        switch1=(Switch) compoundButton;
        String strMsg = "";
        if (b){
            strMsg = String.format("组件被选中了",switch1.getText(),switch1.getId());
        }else {
            strMsg = String.format("组件被取消了",switch1.getText(),switch1.getId());
        }
        Toast.makeText(this, strMsg, Toast.LENGTH_SHORT).show();
    }

}

drawable文件夹

 看资源包,也可自己导入

layout文件夹

activity_friend_list

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".friendList">
    <LinearLayout
        android:id="@id/line1"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:background="@color/gray"
        >

        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="返回"
            android:textColor="@color/green"
            android:backgroundTint="@color/gray"
            />
        <TextView
            android:id="@+id/text1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="微信"
            android:textSize="16dp"
            android:layout_marginStart="110dp"
            />

        <androidx.appcompat.widget.SearchView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginStart="80dp"
            />

        <ImageButton
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/jiahao"
            />

    </LinearLayout>
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="620dp"/>

    <LinearLayout
        android:id="@+id/line2"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:background="@color/gray"
        >
        <Button
            android:id="@+id/btn2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="微信"
            android:backgroundTint="@color/gray"
            android:layout_marginStart="15dp"
            />
        <Button
            android:id="@+id/btn3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="通讯"
            android:backgroundTint="@color/gray"
            android:layout_marginStart="15dp"
            />
        <Button
            android:id="@+id/btn4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="发现"
            android:backgroundTint="@color/gray"
            android:layout_marginStart="15dp"
            />
        <Button
            android:id="@+id/btn5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="我"
            android:backgroundTint="@color/gray"
            android:layout_marginStart="15dp"
            />
    </LinearLayout>
</LinearLayout>

activity_main

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/wxdl"
    tools:context=".MainActivity">


    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/green"
        android:text="登录"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.167"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.945" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/white"
        android:text="注册"
        android:textColor="@color/black"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.58"
        app:layout_constraintStart_toEndOf="@+id/button1"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.944" />

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/green"
        android:entries="@array/spinner"
        android:minHeight="48dp"
        android:spinnerMode="dialog"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.922"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.048"
        />


</androidx.constraintlayout.widget.ConstraintLayout>

activity_main2

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns: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"
    android:orientation="vertical"
    tools:context=".MainActivity2">

    <Button
        android:id="@+id/button3"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/white"
        android:text="取消"
        android:textColor="@color/green"
        android:textSize="16dp" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="100dp">

    </LinearLayout>


    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:layout_gravity="center"
        />
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:orientation="horizontal"
        >
        <TextView
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="账户:"
            android:textSize="20dp"
            android:gravity="center"
            />
        <EditText
            android:id="@+id/editTextTextPersonName2"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:hint="用户名/手机号"
            android:textSize="20dp"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:orientation="horizontal"
        >
        <TextView
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="密码:"
            android:textSize="20dp"
            android:gravity="center"
            />
        <EditText
            android:id="@+id/editTextTextPassword"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:hint="请输入密码"
            android:textSize="20dp"
            android:inputType="textPassword"
            />
    </LinearLayout>
    <CheckBox
        android:id="@+id/checkbox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="10dp"
        android:layout_marginStart="280dp"
        android:text="记住此账户密码"
        >
    </CheckBox>

    <Button
        android:id="@+id/button4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录"
        android:backgroundTint="@color/green"
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="30dp"
        android:gravity="center"
        android:text="用短信验证码登录"/>

    <TextView
        android:id="@+id/textView5"
        android:layout_width="410dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="220dp"
        android:backgroundTint="@color/gray"
        android:padding="2dp"
        android:text="      登录遇到问题?|           用其他方式登录"
        android:textSize="20dp" />


</LinearLayout>

activity_main3

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="391dp"
        android:layout_height="50dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.976" />

    <TextView
        android:id="@+id/textView9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="进度"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.123" />

    <Switch
        android:id="@+id/switch1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开启游戏模式"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

item_for_custom_spinner

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="center"
    android:text="语言"
    android:textColor="@color/white"
    android:textSize="18dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="15dp"
    android:paddingBottom="15dp"
    android:singleLine="true"
    android:ellipsize="marquee"/>

list_layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/img"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@mipmap/ic_launcher"
        android:layout_margin="5dp"
        />
    <LinearLayout
        android:id="@+id/line4"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_margin="5dp"
        android:orientation="vertical"
        android:layout_marginEnd="5dp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        >
        <TextView
            android:id="@+id/text1"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="名字"
            android:textSize="20dp"
            />
        <TextView
            android:id="@+id/text2"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:text="内容"
            android:textSize="16dp"
            />


    </LinearLayout>

</LinearLayout>

 AndroidManifest(main文件夹)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApplication"
        tools:targetApi="31">
        <activity
            android:name=".friendList"
            android:exported="false" />
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity2"></activity>
        <activity android:name=".MainActivity3"></activity>
    </application>

</manifest>

效果

猜你喜欢

转载自blog.csdn.net/qq2606393744/article/details/131638903
今日推荐