android studio的几个要点(1)

关于Timer:

1.全局变量可以取消,取消之后无法重新使用。

创建定时器:

Timer timer=new Timer();

2.安排时间:

延迟时钟:

TimerTask timerTask=new TimerTask() {
    @Override
    public void run() {
        //
    }
};

timer.schedule(timerTask,0);//写在方法中

 延时一次的循环时钟:

TimerTask timerTask=new TimerTask() {
    @Override
    public void run() {
        //
    }
};

timer.schedule(timerTask,0,0);//写在方法中
//            延时一次时间,开始每一个循环前的时间

3.怎么使用时种处理UI界面:

TimerTask timerTask=new TimerTask() {
    @Override
    public void run() {
        Message message = new Message();
    message.what = 3;
    handler.sendMessage(message);
    }
};

timer.schedule(timerTask,0,0);//写在方法中
//            延时一次时间,开始每一个循环前的时间

用到:Handle

Handler handler=new Handler(){
    @Override
    public void handleMessage(@NonNull Message msg) {
        super.handleMessage(msg);

Switch(msg.what){
case 1:
//
break;
case 2:
//
break;
case 3:
//
break;
//.....
}

}
}

关于父子容器(子容器的移动及布局):

xml布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="horizontal"
    >
<LinearLayout
    android:id="@+id/s1_pl"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:orientation="vertical"
    
    >
</LinearLayout>
</RelativeLayout>

java动态控制:

public class Inits1Activity extends AppCompatActivity {
private LinearLayout mL;
private ImageView m1,h1,h2,h3;
    private LinearLayout pL;
    private ImageView p,bg1,bg2;
private ProgressBar progressBar1,progressBar2,progressBar3,progressBar4;
Timer timer;
    AnimationDrawable animationDrawablep,animationDrawablem1;
    private RelativeLayout.LayoutParams paramsBg1,m1params;
    private int pwalkx=20,pwalky=400,pwalkrate=4;
    private int m1walkx=20,m1walky=400,m1walkrate=4,M1=0;
    private int totalx,totaly;
    private int bg1x=0,bg2x;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inits1);

        pL=(LinearLayout)findViewById(R.id.s1_pl);
private RelativeLayout.LayoutParams params;//定义父容器RelativeLayout的子容器LayoutParams
//params
        params.setMargins(pwalkx,pwalky,0,0);//子容易设置位置,如果想设置更多,可以自行去搜索
//                        左,上,
pL.setLayoutParams(params);//在主方法中进行UI处理,初始化
//在子线程中必须通过handle等处理这句

}
}

关于动画:

1.xml控制,需要新建anim文件夹,在其中设置布局:

以下为平移动画:

android:duration="100"  每一帧的播放时间

android:repeatMode="restart"播放方式
    android:fillAfter="true"停留最后一帧

android:fromXDelta="0.0" 开始位置
    android:fromYDelta="0.0"
    android:toXDelta="10" 结束位置
    android:toYDelta="0.0"

<?xml version="1.0" encoding="utf-8"?>
<set android:duration="100" android:repeatMode="restart"
    android:fillAfter="true"
    xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:fromXDelta="0.0"
    android:fromYDelta="0.0"
    android:toXDelta="10"
    android:toYDelta="0.0"
    />
</set>

 其他动画还有渐变,旋转,缩放,可自行了解。

2.java动态控制:

以下为透明渐变动画:

private AlphaAnimation animation;
private void setAnimation(LinearLayout layout){//自己定义控件类型
        animation=new AlphaAnimation(0.0f,1.0f);//渐变从0到1
        animation.setDuration(500);
        layout.startAnimation(animation);
    }

背景动画

布局xml:

<ImageView
        android:id="@+id/s1_people"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="0dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:background="@drawable/people_walking_soldiers"//以下为展示
        android:visibility="visible"
        />

drawable——xml:

 一个item为一帧。

java动态控制:

AnimationDrawable animationDrawablep;
animationDrawablep=(AnimationDrawable) p.getBackground();
animationDrawablep.start();
animationDrawablep.stop();

关于声音:

需要新建raw文件夹

private MediaPlayer mediaPlayer=new MediaPlayer();
        @Override
        public boolean onTouch(View v, MotionEvent event) {//写在onTouchListener中
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//音乐类型
            if(event.getAction()==MotionEvent.ACTION_DOWN){//按下的声音
               mediaPlayer=MediaPlayer.create(MainActivity.this,R.raw.button_1);
                mediaPlayer.start();
            }
            if(event.getAction() == MotionEvent.ACTION_UP){//抬起来的声音
               mediaPlayer=MediaPlayer.create(MainActivity.this,R.raw.button_2);
               mediaPlayer.start();
            }
            return false;//不点击完触发的一个过程
        }
    }
 

关于获取屏幕的长和宽:

 WindowManager windowManager=getWindowManager();//父容器为窗口管理器
        Display display=windowManager.getDefaultDisplay();
        DisplayMetrics metrics=new DisplayMetrics();
        display.getMetrics(metrics);
        totalx=metrics.widthPixels;
        totaly=metrics.heightPixels;

关于点击与触摸:

同时定义的代码:

ButtonListener buttonListener=new ButtonListener();
start.setOnClickListener(buttonListener);
start.setOnTouchListener(buttonListener);
        end.setOnClickListener(buttonListener);
        end.setOnTouchListener(buttonListener);
        pt.setOnClickListener(buttonListener);
        pt.setOnTouchListener(buttonListener);
    }
    class ButtonListener implements View.OnClickListener, View.OnTouchListener {

        public void onClick(View v) {
            if (v.getId() == R.id.main_exit) {
                System.exit(0);
            }
else if(v.getId()==R.id.pt_btn){
                pt.setVisibility(View.GONE);
                ptv.setVisibility(View.VISIBLE);
                settvAnimation(ptv);
            }
else if(v.getId()==R.id.start_btn){
                Intent intent=new Intent(MainActivity.this,MainActivity2.class);
                startActivity(intent);
                mediaPlayer.release();
                mediaPlayer=null;
            }
        }
private MediaPlayer mediaPlayer=new MediaPlayer();
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            if(event.getAction()==MotionEvent.ACTION_DOWN){
               mediaPlayer=MediaPlayer.create(MainActivity.this,R.raw.button_1);
                mediaPlayer.start();
            }
            if(event.getAction() == MotionEvent.ACTION_UP){
               mediaPlayer=MediaPlayer.create(MainActivity.this,R.raw.button_2);
               mediaPlayer.start();
            }
            return false;
        }
    }

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qiu___nan

谢谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值