您好我在使用Android Camera API编写相机应用程序!
它具有以下功能:
以下是用于拖放图像视图的代码:
@Override
public boolean onTouch(View view, MotionEvent event) {
final int X = (int) event.getRawX();
final int Y = (int) event.getRawY();
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
_xDelta = X - lParams.leftMargin;
_yDelta = Y - lParams.topMargin;
break;
case MotionEvent.ACTION_UP:
xloc=X;
yloc=Y;
Toast.makeText(getContext(), "Location==="+Integer.toString(xloc)+"==="+Integer.toString(yloc), Toast.LENGTH_SHORT).show();
break;
case MotionEvent.ACTION_POINTER_DOWN:
break;
case MotionEvent.ACTION_POINTER_UP:
break;
case MotionEvent.ACTION_MOVE:
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view
.getLayoutParams();
layoutParams.leftMargin = X - _xDelta;
layoutParams.topMargin …Run Code Online (Sandbox Code Playgroud) Android P使用ImageDecoder类提供了一个用于加载图像的新API .
并非被记录关于这个类,所以我只是好奇它的用法,我是否应该考虑尽可能使用它,而不是滑行库,例如,其中谷歌本身建议使用:
对于大多数情况,我们建议您使用Glide库来获取,解码和显示应用中的位图.Glide在处理与在Android上使用位图和其他图像相关的这些和其他任务时,大部分复杂性都是抽象的.有关使用和下载Glide的信息,请访问GitHub上的Glide存储库.
我发现了一些关于它的文章,提供了它可以做什么以及如何使用它的线索:
但是,根据我的测试,与Movie类相比,加载GIF动画更糟糕的是使用此API(占用更多内存,使用大约相同的CPU),而Movie类本身比第三方库(如android-gif-drawable)更糟糕.我测试的是一个相当长的GIF动画.在第三方库上花了大约59MB.使用Movie类需要大约168MB,使用新的ImageDecoder API需要200-300MB ...
简而言之,我发现这个API的原因是:
android animated-gif android-bitmap imagedecoder android-9.0-pie
背景: 我正在为平板电脑(风景)开发一个Android应用程序,其图像资源的分辨率为1920x1200.该分辨率适合以下屏幕尺寸和密度:
drawable-xlarge-hdpi
drawable-large-xhdpi
Run Code Online (Sandbox Code Playgroud)
问题: 如果我在这两个文件夹中包含所有重复的图像资源,则APK的最终大小将不必要地大
我的方法不成功: 我尝试使用Alias来实现此处定义的drawable:http: //developer.android.com/guide/topics/resources/providing-resources.html#AliasResources
我有我的图像资源:
res/drawable-nodpi/image_cmn.png
Run Code Online (Sandbox Code Playgroud)
和相应屏幕大小和密度文件夹中的两个别名:
res/drawable-xlarge-hdpi/image.xml
res/drawable-large-xhdpi/image.xml
Run Code Online (Sandbox Code Playgroud)
image.xml:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/image_cmn" />
Run Code Online (Sandbox Code Playgroud)
当然,当我在布局文件中使用我的图像时,我引用了别名:
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/image" />
Run Code Online (Sandbox Code Playgroud)
但遗憾的是Android没有正确调整我的测试平板电脑(mdpi)的资源,结果是我有更大的图像.
我试图将原始的png移动到res/drawable甚至res/raw但是结果与res/drawable-nodpi相同.
如果我将此png移动到res/drawable-xlarge-hdpi(与xml别名相同),结果是正确的但自然不能解决我的问题因为我也必须将它们复制到res/drawable-large-xhdpi和apk大小增加.
有谁知道如何实现这一目标?
由于BitmapDrawable不推荐使用无参数构造函数,我们必须为构造函数提供资源ID.
BitmapDrawable bitmapDrawable = new BitmapDrawable(res, bmap);
Run Code Online (Sandbox Code Playgroud)
res一般在哪里getResources().
为什么构造函数需要它,如果我们使用通用图像缓存,我们如何定义该值?
android android-resources android-drawable bitmapdrawable android-bitmap
我试图让图像的底部部分为顶部的视图,就像在图像中一样.
我尝试使用Rendenscript模糊它,但我无法模糊视图背后的部分.:(
我见过很多库,但几乎所有库都模糊了整个图像,但不是它的一部分.
另外,一个重要的部分是我在ViewPager中使用它,因此在IOS中需要像这样快速和动态的东西,它在它背后的图像改变时重绘自己.
任何帮助表示赞赏.谢谢你的到来!
我的xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/image"
android:src="@drawable/broadstairs"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:layout_centerInParent="true"/>
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="200dp"
android:text="Hello World"
android:gravity="center"
android:layout_alignParentBottom="true"
android:textColor="@android:color/white"
android:textStyle="bold"
android:textSize="36sp"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我的代码:
BlurBuilder.java
public class BlurBuilder {
private static final float BITMAP_SCALE = 0.1f;
private static final float BLUR_RADIUS = 7.5f;
public static Bitmap blur(Context context, Bitmap image) {
int width = Math.round(image.getWidth() * BITMAP_SCALE);
int height = Math.round(image.getHeight() * …Run Code Online (Sandbox Code Playgroud) 我试图通过创建新风格来改变我的评级栏中的星星,这就是我所做的:
<style name="RatingBarSmall" parent="android:Widget.DeviceDefault.Light.RatingBar.Indicator">
<item name="android:progressDrawable">@drawable/rating_bar</item>
<item name="android:minHeight">36dp</item>
<item name="android:maxHeight">36dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
绘制/ rating_bar:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@android:id/background"
android:drawable="@drawable/rating_star_empty" />
<item
android:id="@android:id/secondaryProgress"
android:drawable="@drawable/rating_star_empty" />
<item
android:id="@android:id/progress"
android:drawable="@drawable/rating_star_filled" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)
评级栏xml视图:
<RatingBar
android:id="@+id/ratingBar"
style="@style/RatingBarSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:isIndicator="true"
android:rating="5" />
Run Code Online (Sandbox Code Playgroud)
这是两个图像:
但我不知道为什么我在星空下有垂直线,你可以在下面的图片中看到:

编辑:已解决:我只是将评级栏高度设置为图像高度.
谢谢
我有一个位图内存(通过专有的TCP/IP协议栈从服务器应用程序下载),我想绑定到ImageView.我可以使用setImageBitmap手动绑定图像; 如果我使用数据绑定库绑定其他控件,则不会显示图像.如何使用数据绑定库绑定到包含Bitmap对象的属性?
我注意到来自谷歌游戏商店的其他拼图应用程序可以达到多达400个单独的可移动拼图
我一直试图学习如何至少拍摄一个代表我的谜题的图像,裁剪某些部分并遮盖留下拼图设计的图像空间,以便创建我个人的拼图
我想为我的应用程序最多20件,但到目前为止,根据我的android工作室内存日志,一旦位图工厂完成创建一个拼图块我用尽了大约18mb的内存,之后创建了20件与所有其他应用程序的功能我正在使用400 + mb的内存,我必须使用"largeHeap = true"以防止内存耗尽,但我已经接近超出应用程序超级缓慢且足够的限制动画活动将不可避免地导致应用程序崩溃
我很想知道那些其他游戏商店拼图应用程序正在做什么,我不是
非常感谢任何输入
仅供我使用PNG24作为我的图像,测试图像的尺寸为556x720
这是一个例子,如果我只是创建一个动画能力拼图图像
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);//Remove title bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//Hides notification bar
this.setContentView(R.layout.activity_main);//set content view AFTER ABOVE sequence (to avoid crash)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
mainDisplay = getWindowManager().getDefaultDisplay();
mainLayout = (ViewGroup) findViewById(R.id.id_layout);
DisplayMetrics m = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(m);
int windowHeight = m.heightPixels;
int windowWidth = m.widthPixels;
offsetX = (windowWidth / 1440.0f);
offsetY = (windowHeight / 2560.0f);
ourContext = this;
xpos = new float[2];
ypos = new float[2];
iv_PuzzleOne();
bkgdbm = …Run Code Online (Sandbox Code Playgroud) 我得到一个奇怪的Out of Memory错误解码一个可绘制的图像资源960x926px jpg,分配3555856字节.图像仅放在drawable-xxhdpi(3x)中,我使用的是hdpi(1.5x)设备.两个问题:
为什么我在堆中有足够的可用内存时会收到错误?
为hdpi设备分配应该是((960/2)x(926/2))x 4 = 888960字节(不是3555856)?
有人可以解释一下吗?
注意:问题是为什么在拥有22.5MB可用内存时获得3.5MB的OOM分配(参见日志)
03-18 17:30:15.050 32750-32750 /?D/dalvikvm:GC_FOR_ALLOC释放10809K,49%免费23735K/46087K,暂停89ms,总计89ms
03-18 17:30:15.050 32750-32750 /?I/dalvikvm-heap:强制收集3555856字节分配的SoftReferences
03-18 17:30:15.160 32750-32750 /?D/dalvikvm:GC_BEFORE_OOM释放29K, 49%免费23705K/46087K,暂停103ms,总计103ms
03-18 17:30:15.160 32750-32750 /?E/dalvikvm-heap:3555856字节分配的内存不足.
03-18 17:30:15.160 32750-32750 /?I/dalvikvm:"main"prio = 5 tid = 1 RUNNABLE
03-18 17:30:15.160 32750-32750 /?我/ dalvikvm:| group ="main"sCount = 0 dsCount = 0 obj = 0x418fc6a0 self = 0x4010c008
03-18 17:30:15.160 32750-32750 /?我/ dalvikvm:| sysTid = 32750 nice = 1 sched = 0/0 cgrp = apps handle = 1075251280
03-18 …
android android-image bitmapfactory android-memory android-bitmap
我是android新手.我想画这个图像(匹配统计)
并用10%到100%的颜色填充图像.我试了这么多,这是图像
这是代码
public class DrawView extends View {
Paint paint = new Paint();
public DrawView(Context context) {
super(context);
}
@Override
public void onDraw(Canvas canvas) {
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
canvas.drawRect(30, 30, 100, 100, paint);
paint.setStrokeWidth(0);
paint.setColor(Color.GRAY);
canvas.drawRect(33, 60, 97, 97, paint);
paint.setColor(Color.WHITE);
canvas.drawRect(33, 33, 97, 60, paint);
}
Run Code Online (Sandbox Code Playgroud)
任何建议对我都有帮助.提前致谢.
android ×10
android-bitmap ×10
alias ×1
animated-gif ×1
blur ×1
blurry ×1
crop ×1
imagedecoder ×1
imageview ×1
layout ×1
overlay ×1
porter-duff ×1
puzzle ×1
ratingbar ×1
xml-drawable ×1