【Android】常用技巧汇总(持续更新)
【摘要】
本篇博文中用于汇总Android开发中的各种通用技巧,方便使用时复制
启动页
新建Activity,命名为Splash 跳转时间设为2000ms Splash.java
public cl...
本篇博文中用于汇总Android开发中的各种通用技巧,方便使用时复制
启动页
新建Activity,命名为Splash
跳转时间设为2000ms
Splash.java
public class Splash extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new android.os.Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent mainIntent = new Intent(Splash.this,MainActivity.class);
Splash.this.startActivity(mainIntent);
Splash.this.finish();
}
},2000);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
在Manifest中设置启动和主题
<activity android:name=".Splash"
android:theme="@style/ThemeSplash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
在themes.xml中添加主题,设置通知栏颜色和背景图片
<style name="ThemeSplash" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimaryDark">@color/bar</item>
<item name="android:windowBackground">@drawable/qidong</item>
</style>
- 1
- 2
- 3
- 4
插入图片
设置android:adjustViewBounds="true"
,这可以让插入图片时上下不存在空白
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/logo"
android:adjustViewBounds="true" />
- 1
- 2
- 3
- 4
- 5
隐藏标题栏
两种方式,均在onCreate中添加
方式一:
requestWindowFeature(Window.FEATURE_NO_TITLE); // 隐藏标题栏
- 1
方式二:
if (getSupportActionBar() != null){
getSupportActionBar().hide();
}
- 1
- 2
- 3
修改Activity切换效果
默认的切换效果是右边划入,左边划出,可用下面的方式来修改切换动画。
这里以透明度和缩放的组合动画为例,新建动画文件goat_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0.5"
android:toAlpha="1.0"
android:duration="300">
</alpha>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="0.4"
android:toXScale="1"
android:fromYScale="0.4"
android:toYScale="1"
android:pivotX="50%"
android:pivotY="25%"
android:duration="300">
</scale>
</set>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
再在切换Activity时添加overridePendingTransition
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_1, container, false);
s1 = view.findViewById(R.id.s1);
s1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getActivity(), Goat_preview.class);
startActivity(i);
getActivity().overridePendingTransition(R.anim.goat_in,0);
}
});
return view;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
更多动画效果可参考:https://blog.csdn.net/u010126792/article/details/85766747
形状Shape相关属性
<shape>
<!-- 实心 -->
<solid android:color="#ff9d77"/>
<!-- 渐变 -->
<gradient
android:startColor="#ff8c00"
android:endColor="#FFFFFF"
android:angle="270" />
<!-- 描边 -->
<stroke
android:width="2dp"
android:color="#dcdcdc" />
<!-- 圆角 -->
<corners
android:radius="2dp" />
<!-- 单独设置圆角 -->
<!-- <corners-->
<!-- android:topLeftRadius="10dp"-->
<!-- android:topRightRadius="10dp"/>-->
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
共享元素动画
单个元素:
在需要共享的元素添加android:transitionName
,名称自拟,两个相同元素要对应。
Activity1:
<ImageView
android:id="@+id/share"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/logo"
android:adjustViewBounds="true"
android:transitionName="shareElement"/>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
Activity2:
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/logo"
android:adjustViewBounds="true"
android:transitionName="shareElement"/>
- 1
- 2
- 3
- 4
- 5
- 6
Activity1.java
ImageView share = findViewById(R.id.share);
Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(Splash.this,share,"shareElement").toBundle();
Intent i = new Intent(Splash.this,Welcome.class);
Splash.this.startActivity(i,bundle);
- 1
- 2
- 3
- 4
- 5
- 6
设置状态栏颜色
onCreate中添加:
Window window = this.getWindow();
window.setStatusBarColor(Color.WHITE);
- 1
- 2
按钮监听
单个按钮监听
Button bk = findViewById(R.id.dz_back);
bk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
多个按钮监听
Button btn_register = findViewById(R.id.btn_rgs);
ImageView iv_back = findViewById(R.id.iv_back);
iv_back.setOnClickListener(this);
btn_register.setOnClickListener(this);
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_back:
Intent intent = new Intent(RegisteredActivity.this, Welcome.class);
startActivity(intent);
finish();
break;
case R.id.btn_rgs:
.....
break;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
页面跳转
Activity->Activity:
ImageView btn1 = findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, shouye.class);
startActivity(i);
}
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Fragment->Activity:
public class pageFragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_page_fragment1, container, false);
TextView jr = view.findViewById(R.id.jrtj);
jr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getActivity(), test.class);
startActivity(i);
}
});
return view;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
文章来源: zstar.blog.csdn.net,作者:zstar-_,版权归原作者所有,如需转载,请联系作者。
原文链接:zstar.blog.csdn.net/article/details/125245332
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)