IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android学习(二) -> 正文阅读

[移动开发]Android学习(二)

1.开发自定义的View

<!--XML文件-->
<FrameLayout 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:padding="16dp"
    android:background="@mipmap/img11"
    android:id="@+id/grass"
    tools:context=".RabbitActivity">
 </FrameLayout>


<!--Activity文件-->
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;

public class RabbitActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_rabbit);
        FrameLayout frameLayout=(FrameLayout)findViewById(R.id.grass);
        final RabbitView rabbit=new RabbitView(this);   //绑定控件
        rabbit.setOnTouchListener(new View.OnTouchListener(){    //触屏监听事件

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                rabbit.bitmapX= event.getX();
                rabbit.bitmapY=event.getY();
                rabbit.invalidate();   //invalidate()作用是使整个窗口客户区无效,需要重绘,true擦掉背景重绘
                return true;
            }
        });
        frameLayout.addView(rabbit);
    }
}



<!--View文件-->
public class RabbitView extends View {
    public float bitmapX;
    public float bitmapY;

    public RabbitView(Context context) {
        super(context);
        bitmapX=290;
        bitmapY=130;
    }

    @Override
    protected  void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint paint=new Paint();
        Bitmap bitmap= BitmapFactory.decodeResource(this.getResources(),R.mipmap.xing1);
        //decodeResource()通过图片资源
      canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint);
      //调用Bitmap的recycle()方法来释放Bitmap占用的内存空间
      if(bitmap.isRecycled()){           // 先判断是否已经回收
          bitmap.recycle();
      }

    }
}

2.ANR产生时, 系统会生成一个跟踪日志文件,文件是data/anr/traces.txt

3.RatingBar中的相关属性:

属性说明
android:rating这一条是设置默认的分数,可以是浮点数,RatingBar其实是评分条,所以星星的数量其实就是用来显示分数的数量,而默认的分数就是应用一开始出现的星星的数量。
android:numStars整数,这个是设置显示的星星数量
android:stepSize步长,分数增加时,是按照多大的分数增加的
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="50sp"
        android:orientation="horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="满意度:"
            android:textColor="@color/black"
            android:textSize="20sp"/>
    <RatingBar
        android:layout_height="70sp"
        android:layout_width="240sp"
        android:theme="@style/RatingBar"   //设置五角星颜色
        android:rating="2"
        android:layout_marginTop="10sp"
        android:numStars="5"
        android:stepSize="1"
        />
    </LinearLayout>



**style文件**

   <!--RatingBar颜色-->
    <style name="RatingBar" parent="Theme.AppCompat">
       <item name="colorControlNormal">#BABABA</item>    //未选择的五角星颜色
       <item name="colorControlActivated">#E3AFC4</item>
    </style>>

在这里插入图片描述

4.两个Activity跳转,一定会执行哪些方法:

第一个Activity会执行OnPause方法;第二个Activity会执行onStart方法,OnResume方法

5.布局管理器

(1)网格布局管理器和表格布局管理器的区别
①表格布局管理器可以跨列,而网格布局管理器可跨行、跨列
②表格布局管理器内容超出容器的组件,将不会显示;而网格布局管理器将会换行
(2)网格布局管理器属性

属性属性值
android:columnCount指定最大列数
android:rowCount指定最大行数
android:orientation组件的排列方式

(3)布局管理器的嵌套规则
①根布局必须包含xmlns属性
②在一个布局文件中,最多只能有一个根布局管理器,如果需要有多个还需要使用一个根布局管理器将他们括起来
③不能嵌入太深,如果嵌入太深,会影响性能

6.textview跑马灯实现

属性说明
singleLine内容单行显示
focusable是否可以获取焦点
focusableInTouchMode用于控制视图在触摸状态下是否可以聚焦
ellipsize在哪里省略文本
marqueeRepeatLimit字幕动画重复次数,android:marqueeRepeatLimit=“marquee_forever” 控制组件在跑马灯轮播时是无限循环的
scrollHorizontally控制可以水平滑动

①xml文件

 <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:gravity="center_vertical"

        android:marqueeRepeatLimit="marquee_forever"
        android:singleLine="true"
        android:text="@string/name"
        android:textColor="@color/white"
        android:textSize="50dp"
 />

②java代码

  TextView tv = findViewById(R.id.tv);
  tv.requestFocus(); //设置请求获取焦点

③展示

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:53:18  更:2022-10-08 20:57:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 21:37:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码