LongShadow是一个Android库,使我们可以轻松地在Android Studio中为不同的视图添加长长的阴影。我们可以使用长长的阴影使应用程序更具吸引力和吸引力。下面给出了一个示例GIF,以了解我们将在本文中做些什么。注意,我们将使用Java语言实现该项目。
分步实施
步骤1:创建一个新项目
要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。
第2步:在进入编码部分之前,请先执行一些预任务
转到应用程序> res>值> colors.xml文件,然后设置项目的颜色。
XML
#0F9D58
#0F9D58
#05af9b
XML
Java
// getting Shadow seekBar reference
SeekBar seekBar =(SeekBar)findViewById(R.id.seekBarShadow);
// getting longShadow reference
LongShadow longShadow =(LongShadow)findViewById(R.id.longShadow);
// seekBar change listener for changing the shadow angle
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// change the shadow angle
longShadow.setShadowAngle(progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
Java
import android.os.Bundle;
import android.widget.SeekBar;
import androidx.appcompat.app.AppCompatActivity;
import com.github.florent37.longshadow.LongShadow;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// getting Shadow seekBar reference
SeekBar seekBar = (SeekBar) findViewById(R.id.seekBarShadow);
// getting longShadow reference
LongShadow longShadow = (LongShadow) findViewById(R.id.longShadow);
// seekBar change listener for changing the shadow angle
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// change the shadow angle
longShadow.setShadowAngle(progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
}
转到Gradle脚本> build.gradle(模块:应用程序)部分,导入以下依赖项,然后在上面的弹出窗口中单击“立即同步”。
implementation ‘com.github.florent37:longshadow:1.0.1’
步骤3:设计UI
在activity_main.xml中,删除默认的Text View,然后将布局更改为Relative布局,并在其中添加LongShadow并在其中添加一个TextView和ImageView(我们可以在其中添加从1到n个布局中的任意多个布局),并在相对布局,我们还添加了一个SeekBar(用于更改阴影的角度),如下所示。导航到应用程序> res>布局> activity_main.xml,然后将以下代码添加到该文件中。以下是activity_main.xml文件的代码。
XML格式
LongShadow的属性
- app:shadow_angle->用于设置阴影的角度[ Java的setShadowAngle(float value)方法]
- app:shadow_color->用于设置阴影颜色[ Java的setShadowColor(int color)方法]
步骤4:编码部分
打开MainActivity。 Java文件并在onCreate()中创建并初始化LongShadow和SeekBar ,并将OnSeekBarChangeListener添加到SeekBar,并在其onProgressChanged(SeekBar seekBar,int progress,boolean fromUser)内设置长阴影角的值,如下所示
Java
// getting Shadow seekBar reference
SeekBar seekBar =(SeekBar)findViewById(R.id.seekBarShadow);
// getting longShadow reference
LongShadow longShadow =(LongShadow)findViewById(R.id.longShadow);
// seekBar change listener for changing the shadow angle
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// change the shadow angle
longShadow.setShadowAngle(progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
以下是MainActivity的完整代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。
Java
import android.os.Bundle;
import android.widget.SeekBar;
import androidx.appcompat.app.AppCompatActivity;
import com.github.florent37.longshadow.LongShadow;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// getting Shadow seekBar reference
SeekBar seekBar = (SeekBar) findViewById(R.id.seekBarShadow);
// getting longShadow reference
LongShadow longShadow = (LongShadow) findViewById(R.id.longShadow);
// seekBar change listener for changing the shadow angle
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// change the shadow angle
longShadow.setShadowAngle(progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
}
输出: